Merge Android 12

Bug: 202323961
Merged-In: Id6170b9a4167d5b51079c94bed8fd0a71d3be4ec
Change-Id: I46314da2f52ae483ab6f3ea6e0bb523b998201e8
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..94a3ea0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+# IntelliJ
+.idea/
+*.iml
+
+# Python
+*.pyc
\ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 8901715..f52fe2c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -45,6 +45,7 @@
         "androidx-constraintlayout_constraintlayout-solver",
         "jsr305",
         "car-ui-lib",
+        "car-admin-ui-lib",
     ],
 
     certificate: "platform",
@@ -59,7 +60,7 @@
         enabled: false,
     },
 
-    required: ["privapp_whitelist_com.android.car.settings"],
+    required: ["allowed_privapp_com.android.car.settings"],
 
     dxflags: ["--multi-dex"],
 
@@ -99,6 +100,7 @@
         "androidx-constraintlayout_constraintlayout-solver",
         "jsr305",
         "car-ui-lib-testing-support",
+        "car-admin-ui-lib",
     ],
 
     // Testing only resources must be applied last so they take precedence.
@@ -157,6 +159,7 @@
         "androidx-constraintlayout_constraintlayout-solver",
         "jsr305",
         "car-ui-lib-testing-support",
+        "car-admin-ui-lib",
     ],
 
     // Testing only resources must be applied last so they take precedence.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e58876a..16bef70 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -46,10 +46,12 @@
     <uses-permission android:name="android.permission.INJECT_EVENTS"/>
     <uses-permission android:name="android.permission.INTERNET"/>
     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
+    <uses-permission android:name="android.permission.MANAGE_SENSOR_PRIVACY"/>
     <uses-permission android:name="android.permission.MANAGE_USERS"/>
     <uses-permission android:name="android.permission.MASTER_CLEAR" />
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
     <uses-permission android:name="android.permission.NETWORK_SETTINGS" />
+    <uses-permission android:name="android.permission.OBSERVE_SENSOR_PRIVACY"/>
     <uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG"/>
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
     <uses-permission android:name="android.permission.READ_DISPLAY_UNITS"/>
@@ -85,6 +87,7 @@
                 <action android:name="android.settings.NIGHT_DISPLAY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -98,6 +101,15 @@
                 <action android:name="android.settings.SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_HomepageActivity" />
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".common.SubSettingsActivity"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -109,6 +121,8 @@
                 <action android:name="android.settings.DISPLAY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_DisplaySettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -121,6 +135,8 @@
                 <action android:name="android.settings.panel.action.VOLUME" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_SoundSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -133,6 +149,8 @@
                 <action android:name="android.intent.action.RINGTONE_PICKER" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_RingtonePickerActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -145,6 +163,8 @@
                 <action android:name="android.settings.WIRELESS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_NetworkAndInternetActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -156,6 +176,8 @@
                 <action android:name="android.settings.BLUETOOTH_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_BluetoothSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -163,6 +185,8 @@
             android:name=".common.CarSettingActivities$UnitsSettingsActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_UnitsSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -175,13 +199,34 @@
                 <action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_LocationSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
         <activity
-            android:name=".common.CarSettingActivities$AppsAndNotificationsActivity"
+            android:name=".common.CarSettingActivities$AppsActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.APPLICATION_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_AppsActivity" />
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".common.CarSettingActivities$NotificationsActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.NOTIFICATION_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_NotificationsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -194,28 +239,22 @@
                 <action android:name="android.intent.action.QUICK_CLOCK" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_DatetimeSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
         <activity
-            android:name=".common.CarSettingActivities$UserDetailsActivity"
+            android:name=".common.CarSettingActivities$ProfileDetailsActivity"
             android:excludeFromRecents="true"
             android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.USER_SETTINGS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <meta-data android:name="distractionOptimized" android:value="true"/>
-        </activity>
-
-        <activity
-            android:name=".common.CarSettingActivities$AccountSettingsActivity"
-            android:windowSoftInputMode="adjustPan"
-            android:exported="true">
-            <intent-filter android:priority="1">
                 <action android:name="android.settings.SYNC_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ProfileDetailsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -227,6 +266,17 @@
                 <action android:name="android.settings.PRIVACY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_PrivacySettingsActivity" />
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".common.CarSettingActivities$VehicleDataActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_VehicleDataActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -239,6 +289,8 @@
                 <action android:name="android.os.storage.action.MANAGE_STORAGE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_StorageSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -250,6 +302,21 @@
                 <action android:name="android.settings.SECURITY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_SecuritySettingsActivity" />
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".common.CarSettingActivities$AssistantAndVoiceSettingsActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_AssistantAndVoiceSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -257,6 +324,8 @@
             android:name=".common.CarSettingActivities$SystemSettingsActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_SystemSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -270,6 +339,8 @@
                 <action android:name="android.settings.panel.action.WIFI" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_WifiSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -277,6 +348,8 @@
             android:name=".common.CarSettingActivities$WifiTetherActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_WifiTetherActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -289,6 +362,8 @@
                 <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_MobileNetworkActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -296,6 +371,8 @@
             android:name=".common.CarSettingActivities$MobileNetworkListActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_MobileNetworkListActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -308,6 +385,8 @@
                 <action android:name="android.settings.MOBILE_DATA_USAGE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_DataUsageActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -316,11 +395,12 @@
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
             <intent-filter android:priority="1">
-                <action android:name="android.settings.APPLICATION_SETTINGS" />
                 <action android:name="android.settings.MANAGE_APPLICATIONS_SETTINGS" />
                 <action android:name="android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ApplicationsSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -328,6 +408,8 @@
             android:name=".common.CarSettingActivities$SpecialAccessSettingsActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_SpecialAccessSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -335,6 +417,8 @@
             android:name=".common.CarSettingActivities$LanguagesAndInputActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_LanguagesAndInputActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -347,6 +431,8 @@
                 <action android:name="android.settings.DEVICE_NAME" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_AboutSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -354,6 +440,8 @@
             android:name=".common.CarSettingActivities$LegalInformationActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_LegalInformationActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -361,6 +449,8 @@
             android:name=".common.CarSettingActivities$ResetOptionsActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ResetOptionsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -372,6 +462,8 @@
                 <action android:name="android.settings.WIFI_ADD_NETWORKS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_AddWifiActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -383,6 +475,8 @@
                 <action android:name="android.settings.WIFI_IP_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_WifiPreferencesActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -397,7 +491,6 @@
                       -d "package:<package name>" -->
             <intent-filter android:priority="100">
                 <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" />
-                <action android:name="android.settings.NOTIFICATION_SETTINGS" />
                 <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" />
                 <action android:name="android.settings.APP_NOTIFICATION_SETTINGS" />
                 <action android:name="android.intent.action.AUTO_REVOKE_PERMISSIONS" />
@@ -410,12 +503,13 @@
                       -e "android.provider.extra.APP_PACKAGE" "<package name>" -->
             <intent-filter android:priority="100">
                 <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" />
-                <action android:name="android.settings.NOTIFICATION_SETTINGS" />
                 <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" />
                 <action android:name="android.settings.APP_NOTIFICATION_SETTINGS" />
                 <action android:name="android.intent.action.AUTO_REVOKE_PERMISSIONS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ApplicationsDetailsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -427,6 +521,8 @@
                 <action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ModifySystemSettingsActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -436,8 +532,11 @@
             android:exported="true">
             <intent-filter android:priority="100">
                 <action android:name="android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
+                <action android:name="android.settings.NOTIFICATION_LISTENER_DETAIL_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_NotificationAccessActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -445,6 +544,8 @@
             android:name=".common.CarSettingActivities$PremiumSmsAccessActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_PremiumSmsAccessActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -456,6 +557,8 @@
                 <action android:name="android.settings.USAGE_ACCESS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_UsageAccessActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -463,6 +566,8 @@
             android:name=".common.CarSettingActivities$WifiControlActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_WifiControlActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -474,6 +579,8 @@
                 <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_ChooseAccountActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -485,6 +592,8 @@
                 <action android:name="android.settings.LOCALE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_LanguagePickerActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -497,6 +606,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="package" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_DefaultAutofillPickerActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -508,6 +619,8 @@
                 <action android:name="android.settings.INPUT_METHOD_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_KeyboardActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -515,6 +628,12 @@
             android:name=".common.CarSettingActivities$TextToSpeechOutputActivity"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
+            <intent-filter android:priority="1">
+                <action android:name="com.android.settings.TTS_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_TextToSpeechOutputActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -532,6 +651,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_HomepageActivity" />
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity-alias>
 
@@ -548,16 +669,27 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity-alias>
 
+        <activity android:name=".enterprise.RemoteRequestBugreportActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:permission="android.permission.DUMP">
+            <intent-filter>
+                <action android:name="android.settings.SHOW_REMOTE_BUGREPORT_DIALOG" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity
             android:name=".bluetooth.BluetoothPairingDialog"
             android:excludeFromRecents="true"
             android:windowSoftInputMode="stateVisible|adjustResize"
             android:taskAffinity="car.settings.bluetooth"
             android:launchMode="singleTask"
-            android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog.NoActionBar">
+            android:theme="@style/ActionDialogTheme">
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -571,6 +703,8 @@
                 <action android:name="android.bluetooth.devicepicker.action.LAUNCH" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_BluetoothDevicePickerActivity" />
         </activity>
 
         <activity
@@ -602,18 +736,7 @@
                 <action android:name="android.settings.MANAGE_DOMAIN_URLS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-            <meta-data android:name="distractionOptimized" android:value="true"/>
-        </activity>
-
-        <activity
-            android:name=".applications.assist.ManageAssistActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:windowSoftInputMode="adjustResize"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -623,9 +746,11 @@
             android:exported="true"
             android:windowSoftInputMode="adjustResize">
             <intent-filter>
+                <action android:name="android.app.action.SET_NEW_PASSWORD" />
                 <action android:name="android.car.settings.SCREEN_LOCK_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
@@ -639,14 +764,48 @@
                 <action android:name="android.app.action.CONFIRM_FRP_CREDENTIAL" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
         </activity>
 
+        <activity
+            android:name=".security.VerifyLockChangeActivity"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:exported="false"
+            android:windowSoftInputMode="adjustResize">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
 
         <activity
-            android:name=".users.UserSwitcherActivity"
+            android:name=".security.ChooseLockPatternActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:noHistory="true"
+            android:exported="false">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".security.ChooseLockPinActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:noHistory="true"
+            android:exported="false">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".security.ChooseLockPasswordActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:noHistory="true"
+            android:exported="false">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".profiles.ProfileSwitcherActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:windowSoftInputMode="adjustResize"
             android:exported="true">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
         </activity>
 
         <activity
@@ -691,6 +850,8 @@
             android:windowSoftInputMode="adjustResize"
             android:exported="true">
             <meta-data android:name="distractionOptimized" android:value="true"/>
+            <meta-data android:name="com.android.car.settings.TOP_LEVEL_HEADER_KEY"
+                       android:value="@string/hk_DataWarningAndLimitActivity" />
         </activity>
 
         <activity
@@ -738,6 +899,28 @@
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
+        <activity
+            android:name=".enterprise.DeviceAdminAddActivity"
+            android:exported="true">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+            <intent-filter>
+                <action android:name="android.app.action.ADD_DEVICE_ADMIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".enterprise.ActionDisabledByAdminActivity"
+                android:theme="@style/ActionDialogTheme"
+                android:taskAffinity=".enterprise"
+                android:excludeFromRecents="true"
+                android:exported="true">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.SHOW_ADMIN_SUPPORT_DETAILS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <service android:name=".bluetooth.BluetoothPairingService" />
 
         <service android:name=".setupservice.InitialLockSetupService"
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 38f9800..7b1efd4 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,6 +1,7 @@
 [Hook Scripts]
 checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
 ktlint_hook = ${REPO_ROOT}/prebuilts/ktlint/ktlint.py -f ${PREUPLOAD_FILES}
+overlayable_resource_hook = ${REPO_ROOT}/packages/apps/Car/tests/tools/rro/verify-overlayable.py -r res -e res/values/overlayable.xml res/values/preference_keys.xml res/values/preference_screen_keys.xml -o res/values/overlayable.xml
 
 [Builtin Hooks]
 commit_msg_changeid_field = true
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..0189d1f
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "carsettings-presubmit": [
+    {
+      "name": "CarSettingsUnitTests"
+    }
+  ]
+}
diff --git a/res/color/bluetooth_bonded_device_background.xml b/res/color/bluetooth_bonded_device_background.xml
new file mode 100644
index 0000000..8115240
--- /dev/null
+++ b/res/color/bluetooth_bonded_device_background.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<!-- @color/car_grey_400 but with disabled and ux restricted states. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_checked="false"
+          android:color="@color/bluetooth_bonded_device_off_background_color"/>
+    <item android:color="?android:attr/colorAccent"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/bluetooth_bonded_device_foreground.xml b/res/color/bluetooth_bonded_device_foreground.xml
new file mode 100644
index 0000000..439dfc7
--- /dev/null
+++ b/res/color/bluetooth_bonded_device_foreground.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<!-- @color/car_grey_400 but with disabled and ux restricted states. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_checked="false"
+          android:color="@color/bluetooth_bonded_device_icon_color_unchecked"/>
+    <item android:color="@color/bluetooth_bonded_device_icon_color_checked"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/brightness_thumb_inner_ring_color.xml b/res/color/brightness_thumb_inner_ring_color.xml
new file mode 100644
index 0000000..384ac28
--- /dev/null
+++ b/res/color/brightness_thumb_inner_ring_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_selected="true" android:color="@color/car_ui_rotary_focus_fill_color"/>
+    <item android:color="@android:color/transparent"/>
+</selector>
diff --git a/res/color/brightness_thumb_outer_ring_color.xml b/res/color/brightness_thumb_outer_ring_color.xml
new file mode 100644
index 0000000..5a9ae68
--- /dev/null
+++ b/res/color/brightness_thumb_outer_ring_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_selected="true" android:color="@color/car_ui_rotary_focus_stroke_color"/>
+    <item android:color="@android:color/transparent"/>
+</selector>
diff --git a/res/color/car_grey_400_with_disable.xml b/res/color/car_grey_400_with_disable.xml
new file mode 100644
index 0000000..2ec0b35
--- /dev/null
+++ b/res/color/car_grey_400_with_disable.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 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.
+  -->
+<!-- @color/car_grey_400 but with disabled and ux restricted states. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="@color/car_grey_400"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="@color/car_grey_400"/>
+    <item android:color="@color/car_grey_400"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/text_color_accent_with_disable.xml b/res/color/text_color_accent_with_disable.xml
new file mode 100644
index 0000000..5f15d25
--- /dev/null
+++ b/res/color/text_color_accent_with_disable.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 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.
+  -->
+<!-- ?android:attr/colorAccent but with disabled and ux restricted states. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="?android:attr/colorAccent"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="?android:attr/colorAccent"/>
+    <item android:color="?android:attr/colorAccent"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_applications_background.xml b/res/color/top_level_applications_background.xml
new file mode 100644
index 0000000..a412d43
--- /dev/null
+++ b/res/color/top_level_applications_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FF7E0F"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FF7E0F"/>
+    <item android:color="#FF7E0F"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_assistant_and_voice_background.xml b/res/color/top_level_assistant_and_voice_background.xml
new file mode 100644
index 0000000..c61f5e7
--- /dev/null
+++ b/res/color/top_level_assistant_and_voice_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FB49FF"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FB49FF"/>
+    <item android:color="#FB49FF"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_bluetooth_background.xml b/res/color/top_level_bluetooth_background.xml
new file mode 100644
index 0000000..d620f1a
--- /dev/null
+++ b/res/color/top_level_bluetooth_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#72B70F"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#72B70F"/>
+    <item android:color="#72B70F"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_date_time_background.xml b/res/color/top_level_date_time_background.xml
new file mode 100644
index 0000000..eb99575
--- /dev/null
+++ b/res/color/top_level_date_time_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#258982"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#258982"/>
+    <item android:color="#258982"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_display_background.xml b/res/color/top_level_display_background.xml
new file mode 100644
index 0000000..9b4c75b
--- /dev/null
+++ b/res/color/top_level_display_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FFA727"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#FFA727"/>
+    <item android:color="#FFA727"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_location_background.xml b/res/color/top_level_location_background.xml
new file mode 100644
index 0000000..1efeae5
--- /dev/null
+++ b/res/color/top_level_location_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#2EC7DC"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#2EC7DC"/>
+    <item android:color="#2EC7DC"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_network_and_internet_background.xml b/res/color/top_level_network_and_internet_background.xml
new file mode 100644
index 0000000..a8e438a
--- /dev/null
+++ b/res/color/top_level_network_and_internet_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#68BCFF"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#68BCFF"/>
+    <item android:color="#68BCFF"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_notifications_background.xml b/res/color/top_level_notifications_background.xml
new file mode 100644
index 0000000..046a35c
--- /dev/null
+++ b/res/color/top_level_notifications_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#DD4C9D"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#DD4C9D"/>
+    <item android:color="#DD4C9D"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_privacy_background.xml b/res/color/top_level_privacy_background.xml
new file mode 100644
index 0000000..c5a97c1
--- /dev/null
+++ b/res/color/top_level_privacy_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#5E97F6"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#5E97F6"/>
+    <item android:color="#5E97F6"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_profiles_and_accounts_background.xml b/res/color/top_level_profiles_and_accounts_background.xml
new file mode 100644
index 0000000..9b417d0
--- /dev/null
+++ b/res/color/top_level_profiles_and_accounts_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#F15B8D"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#F15B8D"/>
+    <item android:color="#F15B8D"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_security_background.xml b/res/color/top_level_security_background.xml
new file mode 100644
index 0000000..7623268
--- /dev/null
+++ b/res/color/top_level_security_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#0F9D58"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#0F9D58"/>
+    <item android:color="#0F9D58"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_sound_background.xml b/res/color/top_level_sound_background.xml
new file mode 100644
index 0000000..47faa50
--- /dev/null
+++ b/res/color/top_level_sound_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#01B1AF"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#01B1AF"/>
+    <item android:color="#01B1AF"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/top_level_system_background.xml b/res/color/top_level_system_background.xml
new file mode 100644
index 0000000..e77a949
--- /dev/null
+++ b/res/color/top_level_system_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:state_enabled="false"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#757575"/>
+    <item app:state_ux_restricted="true"
+          android:alpha="?android:attr/disabledAlpha"
+          android:color="#757575"/>
+    <item android:color="#757575"/>
+</selector>
\ No newline at end of file
diff --git a/res/drawable/bluetooth_bonded_device_rotary_background.xml b/res/drawable/bluetooth_bonded_device_rotary_background.xml
new file mode 100644
index 0000000..9a6caf8
--- /dev/null
+++ b/res/drawable/bluetooth_bonded_device_rotary_background.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:state_pressed="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_pressed_fill_secondary_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_pressed_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_pressed_stroke_secondary_color"/>
+            <corners android:radius="@dimen/multi_action_preference_toggle_button_radius" />
+        </shape>
+    </item>
+    <item android:state_focused="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_fill_secondary_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_stroke_secondary_color"/>
+            <corners android:radius="@dimen/multi_action_preference_toggle_button_radius" />
+        </shape>
+    </item>
+</selector>
\ No newline at end of file
diff --git a/res/drawable/brightness_seekbar_background.xml b/res/drawable/brightness_seekbar_background.xml
new file mode 100644
index 0000000..98b0970
--- /dev/null
+++ b/res/drawable/brightness_seekbar_background.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Highlight the preference when it's focused but not selected. The preference is selected in
+    direct manipulation mode. -->
+    <item android:state_focused="true" android:state_selected="false">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_fill_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_stroke_color"/>
+        </shape>
+    </item>
+</selector>
\ No newline at end of file
diff --git a/res/drawable/ic_account.xml b/res/drawable/ic_account.xml
deleted file mode 100644
index f7a666d..0000000
--- a/res/drawable/ic_account.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
-</vector>
diff --git a/res/drawable/ic_bluetooth_button.xml b/res/drawable/ic_bluetooth_button.xml
new file mode 100644
index 0000000..2adab6c
--- /dev/null
+++ b/res/drawable/ic_bluetooth_button.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/bluetooth_bonded_device_background" />
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius" />
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_bonded_device_foreground"
+                android:pathData="M17.71,7.71L12,2h-1v7.59L6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 11,14.41L11,22h1l5.71,-5.71 -4.3,-4.29 4.3,-4.29zM13,5.83l1.88,1.88L13,9.59L13,5.83zM14.88,16.29L13,18.17v-3.76l1.88,1.88z"/>
+            <path
+                android:fillColor="@color/bluetooth_bonded_device_foreground"
+                android:pathData="M5,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+            <path
+                android:fillColor="@color/bluetooth_bonded_device_foreground"
+                android:pathData="M19,12m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_bluetooth_button_unavailable.xml b/res/drawable/ic_bluetooth_button_unavailable.xml
new file mode 100644
index 0000000..c008778
--- /dev/null
+++ b/res/drawable/ic_bluetooth_button_unavailable.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius"/>
+            <solid android:color="@color/bluetooth_disabled_device_background_color"/>
+            <stroke android:width="@dimen/bluetooth_bonded_device_border_width"
+                    android:color="@color/bluetooth_disabled_device_icon_color"/>
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_disabled_device_icon_color"
+                android:pathData="M13,5.83l1.88,1.88 -1.6,1.6 1.41,1.41 3.02,-3.02L12,2h-1v5.03l2,2v-3.2zM5.41,4L4,5.41 10.59,12 5,17.59 6.41,19 11,14.41V22h1l4.29,-4.29 2.3,2.29L20,18.59 5.41,4zM13,18.17v-3.76l1.88,1.88L13,18.17z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_bluetooth_media.xml b/res/drawable/ic_bluetooth_media.xml
new file mode 100644
index 0000000..231f9cf
--- /dev/null
+++ b/res/drawable/ic_bluetooth_media.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/bluetooth_bonded_device_background" />
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius" />
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_bonded_device_foreground"
+                android:pathData="M12,3v10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55 -2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4V7h4V3h-6z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_bluetooth_media_unavailable.xml b/res/drawable/ic_bluetooth_media_unavailable.xml
new file mode 100644
index 0000000..3b490eb
--- /dev/null
+++ b/res/drawable/ic_bluetooth_media_unavailable.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius"/>
+            <solid android:color="@color/bluetooth_disabled_device_background_color"/>
+            <stroke android:width="@dimen/bluetooth_bonded_device_border_width"
+                    android:alpha="?android:attr/disabledAlpha"
+                    android:color="@color/bluetooth_disabled_device_icon_color"/>
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_disabled_device_icon_color"
+                android:pathData="M21.19,21.19L14,14l-2,-2 -9.2,-9.2 -1.41,1.42 8.79,8.79c-0.06,0 -0.12,-0.01 -0.18,-0.01 -2.21,0 -4,1.79 -4,4s1.79,4 4.01,4S14,19.21 14,17v-0.17l5.78,5.78 1.41,-1.42zM14,11.17V7h4V3h-6v6.17z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_bluetooth_phone.xml b/res/drawable/ic_bluetooth_phone.xml
new file mode 100644
index 0000000..66bc866
--- /dev/null
+++ b/res/drawable/ic_bluetooth_phone.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/bluetooth_bonded_device_background" />
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius" />
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_bonded_device_foreground"
+                android:pathData="M7.96,14.46l2.62,2.62c2.75,-1.49 5.01,-3.75 6.5,-6.5l-2.62,-2.62c-0.24,-0.24 -0.34,-0.58 -0.27,-0.9l0.65,-3.26c0.09,-0.46 0.5,-0.8 0.98,-0.8h4.15c0.56,0 1.03,0.47 1,1.03 -0.17,2.91 -1.04,5.63 -2.43,8.01 -1.57,2.69 -3.81,4.93 -6.5,6.5 -2.38,1.39 -5.1,2.26 -8.01,2.43 -0.56,0.03 -1.03,-0.44 -1.03,-1v-4.15c0,-0.48 0.34,-0.89 0.8,-0.98l3.26,-0.65c0.33,-0.07 0.67,0.04 0.9,0.27z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_bluetooth_phone_unavailable.xml b/res/drawable/ic_bluetooth_phone_unavailable.xml
new file mode 100644
index 0000000..0477995
--- /dev/null
+++ b/res/drawable/ic_bluetooth_phone_unavailable.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/bluetooth_bonded_device_button_radius"/>
+            <solid android:color="@color/bluetooth_disabled_device_background_color"/>
+            <stroke android:width="@dimen/bluetooth_bonded_device_border_width"
+                    android:alpha="?android:attr/disabledAlpha"
+                    android:color="@color/bluetooth_disabled_device_icon_color"/>
+        </shape>
+    </item>
+    <item android:width="@dimen/bluetooth_bonded_device_button_size"
+          android:height="@dimen/bluetooth_bonded_device_button_size"
+          android:drawable="@drawable/bluetooth_bonded_device_rotary_background"/>
+    <item
+        android:start="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_bonded_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_bonded_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:alpha="?android:attr/disabledAlpha"
+                android:fillColor="@color/bluetooth_disabled_device_icon_color"
+                android:pathData="M14.22,17.05c-0.69,0.55 -1.41,1.05 -2.18,1.49 -2.38,1.39 -5.1,2.26 -8.01,2.43 -0.56,0.03 -1.03,-0.44 -1.03,-1v-4.15c0,-0.48 0.34,-0.89 0.8,-0.98l3.26,-0.65c0.33,-0.07 0.67,0.04 0.9,0.27l2.62,2.62c0.78,-0.42 1.52,-0.91 2.22,-1.45L1.39,4.22l1.42,-1.41L21.19,21.2l-1.41,1.41 -5.56,-5.56zM15.62,12.82c0.55,-0.7 1.04,-1.45 1.47,-2.24l-2.62,-2.62c-0.24,-0.24 -0.34,-0.58 -0.27,-0.9l0.65,-3.26c0.09,-0.46 0.5,-0.8 0.98,-0.8h4.15c0.56,0 1.03,0.47 1,1.03 -0.17,2.91 -1.04,5.63 -2.43,8.01 -0.45,0.77 -0.96,1.51 -1.51,2.2l-1.42,-1.42z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_brightness_knob_with_focus.xml b/res/drawable/ic_brightness_knob_with_focus.xml
new file mode 100644
index 0000000..43e06bf
--- /dev/null
+++ b/res/drawable/ic_brightness_knob_with_focus.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_brightness_knob_stretched"/>
+    <item>
+        <shape android:shape="ring"
+               android:innerRadius="@dimen/brightness_knob_inner_ring_inner_radius"
+               android:thickness="@dimen/brightness_knob_thumb_inner_ring_thickness"
+               android:useLevel="false">
+            <solid android:color="@color/brightness_thumb_inner_ring_color"/>
+        </shape>
+    </item>
+    <item>
+        <shape android:shape="ring"
+               android:innerRadius="@dimen/brightness_knob_thumb_outer_ring_inner_radius"
+               android:thickness="@dimen/brightness_knob_thumb_outer_ring_thickness"
+               android:useLevel="false">
+            <solid android:color="@color/brightness_thumb_outer_ring_color"/>
+        </shape>
+    </item>
+</layer-list>
diff --git a/res/drawable/ic_car.xml b/res/drawable/ic_car.xml
new file mode 100644
index 0000000..7b22191
--- /dev/null
+++ b/res/drawable/ic_car.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/car_grey_800"/>
+    </item>
+    <item
+        android:start="@dimen/bluetooth_device_foreground_icon_inset"
+        android:top="@dimen/bluetooth_device_foreground_icon_inset"
+        android:end="@dimen/bluetooth_device_foreground_icon_inset"
+        android:bottom="@dimen/bluetooth_device_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/bluetooth_device_icon_color"
+                android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,12v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.85,7h10.29l1.08,3.11H5.77L6.85,7zM19,17H5v-5h14v5z"/>
+            <path
+                android:fillColor="@color/bluetooth_device_icon_color"
+                android:pathData="M7.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+            <path
+                android:fillColor="@color/bluetooth_device_icon_color"
+                android:pathData="M16.5,14.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_date_time.xml b/res/drawable/ic_date_time.xml
new file mode 100644
index 0000000..fcb707d
--- /dev/null
+++ b/res/drawable/ic_date_time.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM16.49,16.36L11,13.07L11,6.42h2v5.51l4.51,2.71z"/>
+</vector>
diff --git a/res/drawable/ic_people.xml b/res/drawable/ic_people.xml
new file mode 100644
index 0000000..25d1cc5
--- /dev/null
+++ b/res/drawable/ic_people.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M15,8c0,-1.42 -0.5,-2.73 -1.33,-3.76C14.09,4.1 14.53,4 15,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4c-0.43,0 -0.84,-0.09 -1.23,-0.21c-0.03,-0.01 -0.06,-0.02 -0.1,-0.03C14.5,10.73 15,9.42 15,8zM16.66,13.13C18.03,14.06 19,15.32 19,17v3h4v-3C23,14.82 19.42,13.53 16.66,13.13zM9,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4s-4,-1.79 -4,-4S6.79,4 9,4zM9,13c2.67,0 8,1.34 8,4v3H1v-3C1,14.34 6.33,13 9,13z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_privacy.xml b/res/drawable/ic_privacy.xml
deleted file mode 100644
index 02735c3..0000000
--- a/res/drawable/ic_privacy.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2020 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="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_user.xml b/res/drawable/ic_profile.xml
similarity index 100%
rename from res/drawable/ic_user.xml
rename to res/drawable/ic_profile.xml
diff --git a/res/drawable/ic_profile_add.xml b/res/drawable/ic_profile_add.xml
new file mode 100644
index 0000000..872174e
--- /dev/null
+++ b/res/drawable/ic_profile_add.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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="@dimen/touch_target_size"
+    android:height="@dimen/touch_target_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/profileSwitcherAddIconColor"
+        android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+</vector>
diff --git a/res/drawable/ic_settings_applications.xml b/res/drawable/ic_settings_applications.xml
deleted file mode 100644
index b970c3d..0000000
--- a/res/drawable/ic_settings_applications.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2017 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M5.0,16.0c0.0,3.87 3.13,7.0 7.0,7.0s7.0,-3.13 7.0,-7.0l0.0,-4.0L5.0,12.0l0.0,4.0zM16.12,4.37l2.1,-2.1 -0.82,-0.83 -2.3,2.31C14.16,3.28 13.12,3.0 12.0,3.0s-2.1,0.28 -3.0,0.75L6.6,1.44l-0.8,0.83 2.1,2.1C6.14,5.64 5.0,7.68 5.0,10.0l0.0,1.0l14.0,0.0l0.0,-1.0c0.0,-2.32 -1.14,-4.36 -2.88,-5.63zM9.0,9.0c-0.55,0.0 -1.0,-0.45 -1.0,-1.0s0.45,-1.0 1.0,-1.0 1.0,0.45 1.0,1.0 -0.45,1.0 -1.0,1.0zm6.0,0.0c-0.55,0.0 -1.0,-0.45 -1.0,-1.0s0.45,-1.0 1.0,-1.0 1.0,0.45 1.0,1.0 -0.45,1.0 -1.0,1.0z"/>
-</vector>
diff --git a/res/drawable/ic_settings_date_time.xml b/res/drawable/ic_settings_date_time.xml
deleted file mode 100644
index 1cef06a..0000000
--- a/res/drawable/ic_settings_date_time.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2017 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M11.99,2.0C6.47,2.0 2.0,6.48 2.0,12.0s4.47,10.0 9.99,10.0C17.52,22.0 22.0,17.52 22.0,12.0S17.52,2.0 11.99,2.0zM12.0,20.0c-4.42,0.0 -8.0,-3.58 -8.0,-8.0s3.58,-8.0 8.0,-8.0 8.0,3.58 8.0,8.0 -3.58,8.0 -8.0,8.0z"/>
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M12.5,7.0L11.0,7.0l0.0,6.0l5.25,3.1 0.75,-1.23 -4.5,-2.67z"/>
-</vector>
diff --git a/res/drawable/ic_settings_display.xml b/res/drawable/ic_settings_display.xml
deleted file mode 100644
index 670b286..0000000
--- a/res/drawable/ic_settings_display.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2017 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M20.0,15.31L23.31,12.0 20.0,8.69L20.0,4.0l-4.69,0.0L12.0,0.69 8.69,4.0L4.0,4.0l0.0,4.69L0.69,12.0 4.0,15.31L4.0,20.0l4.69,0.0L12.0,23.31 15.31,20.0L20.0,20.0l0.0,-4.69zM12.0,18.0L12.0,6.0c3.31,0.0 6.0,2.69 6.0,6.0s-2.69,6.0 -6.0,6.0z"/>
-</vector>
diff --git a/res/drawable/ic_settings_location.xml b/res/drawable/ic_settings_location.xml
deleted file mode 100644
index 83bbf87..0000000
--- a/res/drawable/ic_settings_location.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
-</vector>
diff --git a/res/drawable/ic_settings_sound.xml b/res/drawable/ic_settings_sound.xml
deleted file mode 100644
index 2b8becb..0000000
--- a/res/drawable/ic_settings_sound.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2017 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M3.0,9.0l0.0,6.0l4.0,0.0l5.0,5.0L12.0,4.0L7.0,9.0L3.0,9.0zm13.5,3.0c0.0,-1.77 -1.02,-3.29 -2.5,-4.03l0.0,8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14.0,3.23l0.0,2.06c2.8,0.86 5.0,3.54 5.0,6.71s-2.11,5.85 -5.0,6.71l0.0,2.06c4.01,-0.91 7.0,-4.49 7.0,-8.77s-2.99,-7.86 -7.0,-8.77z"/>
-</vector>
diff --git a/res/drawable/ic_settings_units.xml b/res/drawable/ic_settings_units.xml
deleted file mode 100644
index 22142c8..0000000
--- a/res/drawable/ic_settings_units.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/icon_size"
-    android:height="@dimen/icon_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/iconColor"
-        android:pathData="M17.66,17.66l-1.06,1.06l-0.71-0.71l1.06-1.06l-1.94-1.94l-1.06,1.06l-0.71-0.71l1.06-1.06l-1.94-1.94l-1.06,1.06    l-0.71-0.71l1.06-1.06L9.7,9.7l-1.06,1.06l-0.71-0.71l1.06-1.06L7.05,7.05L5.99,8.11L5.28,7.4l1.06-1.06L4,4v14c0,1.1,0.9,2,2,2    h14L17.66,17.66z M7,17v-5.76L12.76,17H7z"/>
-</vector>
diff --git a/res/drawable/ic_storage.xml b/res/drawable/ic_storage.xml
index e02e7f0..ab7b48e 100644
--- a/res/drawable/ic_storage.xml
+++ b/res/drawable/ic_storage.xml
@@ -1,23 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2019 The Android Open Source Project
+  ~ Copyright (C) 2021 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.
+  -->
 
-    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="@dimen/icon_size"
-        android:height="@dimen/icon_size"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
         android:fillColor="?attr/iconColor"
         android:pathData="M3,20h18v-4H3V20zM5,17h2v2H5V17zM3,4v4h18V4H3zM7,7H5V5h2V7zM3,14h18v-4H3V14zM5,11h2v2H5V11z"/>
diff --git a/res/drawable/ic_sync.png b/res/drawable/ic_sync.png
deleted file mode 100644
index f5e19bd..0000000
--- a/res/drawable/ic_sync.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_sync.xml b/res/drawable/ic_sync.xml
new file mode 100644
index 0000000..06282c5
--- /dev/null
+++ b/res/drawable/ic_sync.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="44.0"
+    android:viewportWidth="44.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M25.6667 7.33337H36.6667V11H31.6617C34.7234 13.6767 36.6667 17.6 36.6667 22C36.6667 28.8384 31.9917 34.5584 25.6667 36.19V32.3584C29.9384 30.8367 33.0001 26.785 33.0001 22C33.0001 18.755 31.5701 15.8767 29.3334 13.86V18.3334H25.6667V7.33337Z"/>
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12.3383 33.0001C9.27659 30.3234 7.33325 26.4001 7.33325 22.0001C7.33325 15.1617 12.0083 9.44173 18.3333 7.81006V11.6417C14.0616 13.1634 10.9999 17.2151 10.9999 22.0001C10.9999 25.2451 12.4299 28.1234 14.6666 30.1401V25.6667H18.3333V36.6667H7.33325V33.0001H12.3383Z"/>
+</vector>
diff --git a/res/drawable/ic_sync_cancel.xml b/res/drawable/ic_sync_cancel.xml
new file mode 100644
index 0000000..b2ecb35
--- /dev/null
+++ b/res/drawable/ic_sync_cancel.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="44.0"
+    android:viewportWidth="44.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M25.6668 7.33337H36.6668V11H31.6618C34.3172 13.3215 36.1314 16.5807 36.5661 20.2753C35.7393 20.095 34.8807 20 34.0001 20C33.6039 20 33.2121 20.0192 32.8256 20.0568C32.3806 17.6123 31.1121 15.4637 29.3335 13.86V18.3334H25.6668V7.33337Z"/>
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12.3385 33.0001C9.27683 30.3234 7.3335 26.4001 7.3335 22.0001C7.3335 15.1617 12.0085 9.44173 18.3335 7.81006V11.6417C14.0618 13.1634 11.0002 17.2151 11.0002 22.0001C11.0002 25.2451 12.4302 28.1234 14.6668 30.1401V25.6667H18.3335V36.6667H7.3335V33.0001H12.3385Z"/>
+    <path
+        android:fillColor="?attr/iconColor"
+        android:fillType="evenOdd"
+        android:pathData="M25.0001 32.1667C25.0001 27.1067 29.1068 23 34.1668 23C39.2268 23 43.3335 27.1067 43.3335 32.1667C43.3335 37.2267 39.2268 41.3333 34.1668 41.3333C29.1068 41.3333 25.0001 37.2267 25.0001 32.1667ZM37.3935 36.7133L38.6951 35.4117L35.4685 32.1667L38.7135 28.9217L37.4118 27.62L34.1668 30.865L30.9218 27.62L29.6201 28.9217L32.8651 32.1667L29.6201 35.4117L30.9218 36.7133L34.1668 33.4683L37.3935 36.7133Z"/>
+</vector>
diff --git a/res/drawable/ic_top_level_applications.xml b/res/drawable/ic_top_level_applications.xml
new file mode 100644
index 0000000..578c7a1
--- /dev/null
+++ b/res/drawable/ic_top_level_applications.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_applications_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_applications_icon"
+                android:pathData="M6,8c1.1,0 2,-0.9 2,-2S7.1,4 6,4S4,4.9 4,6S4.9,8 6,8zM12,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S10.9,20 12,20zM6,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S4.9,20 6,20zM6,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S4.9,14 6,14zM12,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S10.9,14 12,14zM16,6c0,1.1 0.9,2 2,2s2,-0.9 2,-2s-0.9,-2 -2,-2S16,4.9 16,6zM12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S10.9,8 12,8zM18,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S16.9,14 18,14zM18,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S16.9,20 18,20z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_assistant_and_voice.xml b/res/drawable/ic_top_level_assistant_and_voice.xml
new file mode 100644
index 0000000..b903348
--- /dev/null
+++ b/res/drawable/ic_top_level_assistant_and_voice.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_assistant_and_voice_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_assistant_and_voice_icon"
+                android:pathData="M15.08,7.05c0.84,1.18 0.84,2.71 0,3.89l1.68,1.69c2.02,-2.02 2.02,-5.07 0,-7.27L15.08,7.05zM20.07,2l-1.63,1.63c2.77,3.02 2.77,7.56 0,10.74L20.07,16C23.97,12.11 23.98,6.05 20.07,2zM9,13c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,6.79 5,9C5,11.21 6.79,13 9,13zM15.39,15.56C13.71,14.7 11.53,14 9,14c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,16.07 1,17.1 1,18.22V21h16v-2.78C17,17.1 16.39,16.07 15.39,15.56z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_bluetooth.xml b/res/drawable/ic_top_level_bluetooth.xml
new file mode 100644
index 0000000..634a1f2
--- /dev/null
+++ b/res/drawable/ic_top_level_bluetooth.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_bluetooth_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_bluetooth_icon"
+                android:pathData="M17.71,7.71L12,2h-1v7.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L11,14.41V22h1l5.71,-5.71L13.41,12L17.71,7.71zM13,5.83l1.88,1.88L13,9.59V5.83zM14.88,16.29L13,18.17v-3.76L14.88,16.29z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_display.xml b/res/drawable/ic_top_level_display.xml
new file mode 100644
index 0000000..60dabe5
--- /dev/null
+++ b/res/drawable/ic_top_level_display.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_display_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_display_icon"
+                android:pathData="M20,15.31L23.31,12 20,8.69V4h-4.69L12,0.69 8.69,4H4v4.69L0.69,12 4,15.31V20h4.69L12,23.31 15.31,20H20v-4.69zM12,18V6c3.31,0 6,2.69 6,6s-2.69,6 -6,6z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_location.xml b/res/drawable/ic_top_level_location.xml
new file mode 100644
index 0000000..75d4c4e
--- /dev/null
+++ b/res/drawable/ic_top_level_location.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_location_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_location_icon"
+                android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.34 4.21,6.79 6.03,12.28C11.17,21.7 11.55,22 12,22s0.83,-0.3 0.97,-0.72C14.79,15.79 19,14.34 19,9C19,5.13 15.87,2 12,2zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5c0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5C14.5,10.38 13.38,11.5 12,11.5z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_network_and_internet.xml b/res/drawable/ic_top_level_network_and_internet.xml
new file mode 100644
index 0000000..ab0aca7
--- /dev/null
+++ b/res/drawable/ic_top_level_network_and_internet.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_network_and_internet_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_network_and_internet_icon"
+                android:pathData="M12,4C7.31,4 3.07,5.9 0,8.98L12,21L24,8.98C20.93,5.9 16.69,4 12,4z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_notifications.xml b/res/drawable/ic_top_level_notifications.xml
new file mode 100644
index 0000000..d4d07b2
--- /dev/null
+++ b/res/drawable/ic_top_level_notifications.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_notifications_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_notifications_icon"
+                android:pathData="M18,17v-7c0,-2.79 -1.91,-5.14 -4.5,-5.8V3.5C13.5,2.67 12.83,2 12,2s-1.5,0.67 -1.5,1.5v0.7C7.91,4.86 6,7.21 6,10v7H4v2h16v-2H18z"/>
+            <path
+                android:fillColor="@color/top_level_notifications_icon"
+                android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4C10,21.1 10.9,22 12,22z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_privacy.xml b/res/drawable/ic_top_level_privacy.xml
new file mode 100644
index 0000000..28fc1a0
--- /dev/null
+++ b/res/drawable/ic_top_level_privacy.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_privacy_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="36.0"
+            android:viewportWidth="36.0">
+            <path
+                android:fillColor="@color/top_level_privacy_icon"
+                android:fillType="evenOdd"
+                android:pathData="M18 2L4 8V17C4 25.325 9.97333 33.11 18 35C26.0267 33.11 32 25.325 32 17V8L18 2ZM28.8889 18.485V9.95L18 5.285L7.11111 9.95V18.5C7.81818 24.5 12.3434 29.9546 18 31.895C23.7867 30.17 28.0644 24.665 28.8889 18.485ZM18 9.22727C15.9686 9.22727 14.3232 10.8139 14.3232 12.7727C14.3232 14.7316 15.9686 16.3182 18 16.3182C20.0314 16.3182 21.6768 14.7316 21.6768 12.7727C21.6768 10.8139 20.0314 9.22727 18 9.22727ZM18 17.2045C15.5458 17.2045 10.6465 18.3923 10.6465 20.75V23.4091H25.3535V20.75C25.3535 18.3923 20.4542 17.2045 18 17.2045Z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_profiles_and_accounts.xml b/res/drawable/ic_top_level_profiles_and_accounts.xml
new file mode 100644
index 0000000..abb301b
--- /dev/null
+++ b/res/drawable/ic_top_level_profiles_and_accounts.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_profiles_and_accounts_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_profiles_and_accounts_icon"
+                android:pathData="M15,8c0,-1.42 -0.5,-2.73 -1.33,-3.76C14.09,4.1 14.53,4 15,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4c-0.43,0 -0.84,-0.09 -1.23,-0.21c-0.03,-0.01 -0.06,-0.02 -0.1,-0.03C14.5,10.73 15,9.42 15,8zM16.66,13.13C18.03,14.06 19,15.32 19,17v3h4v-3C23,14.82 19.42,13.53 16.66,13.13zM9,4c2.21,0 4,1.79 4,4s-1.79,4 -4,4s-4,-1.79 -4,-4S6.79,4 9,4zM9,13c2.67,0 8,1.34 8,4v3H1v-3C1,14.34 6.33,13 9,13z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_security.xml b/res/drawable/ic_top_level_security.xml
new file mode 100644
index 0000000..ccfec64
--- /dev/null
+++ b/res/drawable/ic_top_level_security.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_security_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="48.0"
+            android:viewportWidth="48.0">
+            <path
+                android:fillColor="@color/top_level_security_icon"
+                android:pathData="M36,16h-2v-4c0,-5.52 -4.48,-10 -10,-10S14,6.48 14,12v4h-2c-2.21,0 -4,1.79 -4,4v20c0,2.21 1.79,4 4,4h24c2.21,0 4,-1.79 4,-4L40,20c0,-2.21 -1.79,-4 -4,-4zM24,34c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4zM30.2,16L17.8,16v-4c0,-3.42 2.78,-6.2 6.2,-6.2 3.42,0 6.2,2.78 6.2,6.2v4z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_sound.xml b/res/drawable/ic_top_level_sound.xml
new file mode 100644
index 0000000..e22f5d6
--- /dev/null
+++ b/res/drawable/ic_top_level_sound.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_sound_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_sound_icon"
+                android:pathData="M3,9v6h4l5,5V4L7,9H3zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05C15.48,15.29 16.5,13.77 16.5,12zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77S18.01,4.14 14,3.23z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_top_level_system.xml b/res/drawable/ic_top_level_system.xml
new file mode 100644
index 0000000..a9b01bc
--- /dev/null
+++ b/res/drawable/ic_top_level_system.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <com.android.car.settings.common.TopLevelIconShapeDrawable
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:tint="@color/top_level_system_background"/>
+    </item>
+    <item
+        android:start="@dimen/top_level_foreground_icon_inset"
+        android:top="@dimen/top_level_foreground_icon_inset"
+        android:end="@dimen/top_level_foreground_icon_inset"
+        android:bottom="@dimen/top_level_foreground_icon_inset">
+        <vector
+            android:width="@dimen/icon_size"
+            android:height="@dimen/icon_size"
+            android:viewportHeight="24.0"
+            android:viewportWidth="24.0">
+            <path
+                android:fillColor="@color/top_level_system_icon"
+                android:pathData="M11.0,17.0l2.0,0.0l0.0,-6.0l-2.0,0.0l0.0,6.0zm1.0,-15.0C6.48,2.0 2.0,6.48 2.0,12.0s4.48,10.0 10.0,10.0 10.0,-4.48 10.0,-10.0S17.52,2.0 12.0,2.0zm0.0,18.0c-4.41,0.0 -8.0,-3.59 -8.0,-8.0s3.59,-8.0 8.0,-8.0 8.0,3.59 8.0,8.0 -3.59,8.0 -8.0,8.0zM11.0,9.0l2.0,0.0L13.0,7.0l-2.0,0.0l0.0,2.0z"/>
+        </vector>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_units.xml b/res/drawable/ic_units.xml
new file mode 100644
index 0000000..e5ac8ec
--- /dev/null
+++ b/res/drawable/ic_units.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M10.59,15.41c0.78,0.78 2.05,0.78 2.83,0C14.2,14.63 19,7 19,7s-7.63,4.8 -8.41,5.59C9.8,13.37 9.8,14.63 10.59,15.41z"/>
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M20.36,8.59c-0.37,0.59 -0.78,1.23 -1.2,1.9c0.52,1.04 0.83,2.19 0.84,3.41c0.02,1.45 -0.36,2.87 -1.09,4.1L5.09,18.02C4.38,16.8 4,15.41 4,14c0,-4.41 3.59,-8 8,-8c0.07,0 0.15,0 0.23,0c1.18,0.03 2.29,0.34 3.29,0.84c0.66,-0.42 1.31,-0.83 1.89,-1.2C15.91,4.66 14.16,4.06 12.28,4C12.19,4 12.09,4 12,4C6.48,4 2,8.48 2,14c0,1.84 0.5,3.56 1.37,5.03C3.72,19.64 4.39,20 5.09,20h13.82c0.7,0 1.36,-0.36 1.72,-0.97c0.89,-1.51 1.39,-3.27 1.37,-5.16C21.97,11.94 21.37,10.13 20.36,8.59z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_user_add.xml b/res/drawable/ic_user_add.xml
deleted file mode 100644
index 213b343..0000000
--- a/res/drawable/ic_user_add.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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="@dimen/touch_target_size"
-    android:height="@dimen/touch_target_size"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
-    <path
-        android:fillColor="?attr/userSwitcherAddIconColor"
-        android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
-</vector>
diff --git a/res/drawable/preference_highlight_default.xml b/res/drawable/preference_highlight_default.xml
new file mode 100644
index 0000000..6ec7da1
--- /dev/null
+++ b/res/drawable/preference_highlight_default.xml
@@ -0,0 +1,18 @@
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<color xmlns:android="http://schemas.android.com/apk/res/android"
+       android:color="@*android:color/car_card_ripple_background"/>
\ No newline at end of file
diff --git a/res/drawable/privacy_app_permissions.xml b/res/drawable/privacy_app_permissions.xml
new file mode 100644
index 0000000..d0fff6d
--- /dev/null
+++ b/res/drawable/privacy_app_permissions.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M22 31.1666C24.0259 31.1666 25.6667 29.5258 25.6667 27.5C25.6667 25.4741 24.0259 23.8333 22 23.8333C19.9742 23.8333 18.3334 25.4741 18.3334 27.5C18.3334 29.5258 19.9742 31.1666 22 31.1666ZM33 14.6666H31.1667V11C31.1667 5.93998 27.06 1.83331 22 1.83331C16.94 1.83331 12.8334 5.93998 12.8334 11H16.3167C16.3167 7.86498 18.865 5.31665 22 5.31665C25.135 5.31665 27.6834 7.86498 27.6834 11V14.6666H11C8.97421 14.6666 7.33337 16.3075 7.33337 18.3333V36.6666C7.33337 38.6925 8.97421 40.3333 11 40.3333H33C35.0259 40.3333 36.6667 38.6925 36.6667 36.6666V18.3333C36.6667 16.3075 35.0259 14.6666 33 14.6666ZM33 36.6666H11V18.3333H33V36.6666Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/privacy_location.xml b/res/drawable/privacy_location.xml
new file mode 100644
index 0000000..b59d528
--- /dev/null
+++ b/res/drawable/privacy_location.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M22 3.66669C14.9141 3.66669 9.16663 9.41419 9.16663 16.5C9.16663 26.125 22 40.3334 22 40.3334C22 40.3334 34.8333 26.125 34.8333 16.5C34.8333 9.41419 29.0858 3.66669 22 3.66669ZM22 21.0834C19.47 21.0834 17.4166 19.03 17.4166 16.5C17.4166 13.97 19.47 11.9167 22 11.9167C24.53 11.9167 26.5833 13.97 26.5833 16.5C26.5833 19.03 24.53 21.0834 22 21.0834Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/privacy_mic.xml b/res/drawable/privacy_mic.xml
new file mode 100644
index 0000000..595e46f
--- /dev/null
+++ b/res/drawable/privacy_mic.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M22 25.6667C25.0341 25.6667 27.4816 23.2009 27.4816 20.1667L27.5 9.16669C27.5 6.12335 25.0433 3.66669 22 3.66669C18.9658 3.66669 16.5 6.12335 16.5 9.16669V20.1667C16.5 23.2009 18.9658 25.6667 22 25.6667ZM31.7166 20.1667C31.7166 25.6667 27.0691 29.5167 22 29.5167C16.94 29.5167 12.2833 25.6667 12.2833 20.1667H9.16663C9.16663 26.4275 14.1533 31.5975 20.1666 32.4867V38.5H23.8333V32.4867C29.8466 31.5975 34.8333 26.4275 34.8333 20.1667H31.7166Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/privacy_vehicle_data.xml b/res/drawable/privacy_vehicle_data.xml
new file mode 100644
index 0000000..07e417e
--- /dev/null
+++ b/res/drawable/privacy_vehicle_data.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2021 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="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M34.8333 16.5H27.5V5.5H16.5V16.5H9.16663L22 29.3333L34.8333 16.5ZM9.16663 33V36.6667H34.8333V33H9.16663Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/profile_add_circle.xml b/res/drawable/profile_add_circle.xml
new file mode 100644
index 0000000..594683d
--- /dev/null
+++ b/res/drawable/profile_add_circle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="?attr/profileSwitcherAddIconBackgroundColor"/>
+            <size
+                android:width="@dimen/profile_switcher_image_avatar_size"
+                android:height="@dimen/profile_switcher_image_avatar_size"/>
+        </shape>
+    </item>
+    <item
+        android:drawable="@drawable/ic_profile_add"
+        android:gravity="center"/>
+</layer-list>
diff --git a/res/drawable/profile_avatar_bg_circle.xml b/res/drawable/profile_avatar_bg_circle.xml
new file mode 100644
index 0000000..1f32c1e
--- /dev/null
+++ b/res/drawable/profile_avatar_bg_circle.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <stroke
+        android:width="@dimen/profile_switcher_current_profile_circle_stroke_width"
+        android:color="?attr/profileSwitcherCurrentProfileColor"/>
+    <size
+        android:width="@dimen/profile_switcher_current_profile_circle_width"
+        android:height="@dimen/profile_switcher_current_profile_circle_width"/>
+</shape>
diff --git a/res/drawable/top_level_preference_background.xml b/res/drawable/top_level_preference_background.xml
new file mode 100644
index 0000000..8d91f75
--- /dev/null
+++ b/res/drawable/top_level_preference_background.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:state_pressed="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_pressed_fill_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_pressed_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_pressed_stroke_color"/>
+            <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+        </shape>
+    </item>
+    <item android:state_focused="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_fill_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_stroke_color"/>
+            <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+        </shape>
+    </item>
+    <item>
+        <ripple android:color="?android:attr/colorControlHighlight">
+            <item>
+                <shape android:shape="rectangle">
+                    <solid android:color="@color/car_card_ripple_background" />
+                    <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+                </shape>
+            </item>
+        </ripple>
+    </item>
+</selector>
diff --git a/res/drawable/top_level_preference_highlight.xml b/res/drawable/top_level_preference_highlight.xml
new file mode 100644
index 0000000..83b4d83
--- /dev/null
+++ b/res/drawable/top_level_preference_highlight.xml
@@ -0,0 +1,40 @@
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:state_pressed="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_pressed_fill_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_pressed_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_pressed_stroke_color"/>
+            <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+        </shape>
+    </item>
+    <item android:state_focused="true">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/car_ui_rotary_focus_fill_color"/>
+            <stroke android:width="@dimen/car_ui_rotary_focus_stroke_width"
+                    android:color="@color/car_ui_rotary_focus_stroke_color"/>
+            <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+        </shape>
+    </item>
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@*android:color/car_card_ripple_background"/>
+            <corners android:radius="@dimen/top_level_preference_corner_radius"/>
+        </shape>
+    </item>
+</selector>
diff --git a/res/drawable/user_add_circle.xml b/res/drawable/user_add_circle.xml
deleted file mode 100644
index 0fd0ebc..0000000
--- a/res/drawable/user_add_circle.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item>
-        <shape android:shape="oval">
-            <solid android:color="?attr/userSwitcherAddIconBackgroundColor"/>
-            <size
-                android:width="@dimen/user_switcher_image_avatar_size"
-                android:height="@dimen/user_switcher_image_avatar_size"/>
-        </shape>
-    </item>
-    <item
-        android:drawable="@drawable/ic_user_add"
-        android:gravity="center"/>
-</layer-list>
diff --git a/res/drawable/user_avatar_bg_circle.xml b/res/drawable/user_avatar_bg_circle.xml
deleted file mode 100644
index 52a81cc..0000000
--- a/res/drawable/user_avatar_bg_circle.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-    <stroke
-        android:width="@dimen/user_switcher_current_user_circle_stroke_width"
-        android:color="?attr/userSwitcherCurrentUserColor"/>
-    <size
-        android:width="@dimen/user_switcher_current_user_circle_width"
-        android:height="@dimen/user_switcher_current_user_circle_width"/>
-</shape>
diff --git a/res/layout/action_buttons_preference.xml b/res/layout/action_buttons_preference.xml
index c0326cd..3a166f0 100644
--- a/res/layout/action_buttons_preference.xml
+++ b/res/layout/action_buttons_preference.xml
@@ -48,8 +48,9 @@
             <com.android.car.ui.uxr.DrawableStateImageView
                 android:id="@+id/button1Icon"
                 style="@style/PreferenceButtonIconAppearance"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="@dimen/secondary_icon_size"
+                android:layout_height="@dimen/secondary_icon_size"
+                android:scaleType="fitCenter"
                 android:layout_marginEnd="@dimen/action_buttons_icon_margin_end"
                 android:selectable="false"/>
             <com.android.car.ui.uxr.DrawableStateTextView
@@ -72,8 +73,9 @@
             <com.android.car.ui.uxr.DrawableStateImageView
                 android:id="@+id/button2Icon"
                 style="@style/PreferenceButtonIconAppearance"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="@dimen/secondary_icon_size"
+                android:layout_height="@dimen/secondary_icon_size"
+                android:scaleType="fitCenter"
                 android:layout_marginEnd="@dimen/action_buttons_icon_margin_end"
                 android:selectable="false"/>
             <com.android.car.ui.uxr.DrawableStateTextView
@@ -96,8 +98,9 @@
             <com.android.car.ui.uxr.DrawableStateImageView
                 android:id="@+id/button3Icon"
                 style="@style/PreferenceButtonIconAppearance"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="@dimen/secondary_icon_size"
+                android:layout_height="@dimen/secondary_icon_size"
+                android:scaleType="fitCenter"
                 android:layout_marginEnd="@dimen/action_buttons_icon_margin_end"
                 android:selectable="false"/>
             <com.android.car.ui.uxr.DrawableStateTextView
@@ -120,8 +123,9 @@
             <com.android.car.ui.uxr.DrawableStateImageView
                 android:id="@+id/button4Icon"
                 style="@style/PreferenceButtonIconAppearance"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="@dimen/secondary_icon_size"
+                android:layout_height="@dimen/secondary_icon_size"
+                android:scaleType="fitCenter"
                 android:layout_marginEnd="@dimen/action_buttons_icon_margin_end"
                 android:selectable="false"/>
             <com.android.car.ui.uxr.DrawableStateTextView
diff --git a/res/layout/brightness_tile.xml b/res/layout/brightness_tile.xml
index 011b18c..8fefdac 100644
--- a/res/layout/brightness_tile.xml
+++ b/res/layout/brightness_tile.xml
@@ -17,9 +17,11 @@
 
 <SeekBar
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/seekbar"
+    android:id="@+id/quick_settings_brightness_seekbar"
     android:layout_width="match_parent"
     android:layout_height="@dimen/brightness_seekbar_height"
+    android:layout_marginEnd="@dimen/tile_margin_end"
+    android:layout_marginStart="@dimen/tile_margin_start"
     android:layout_marginBottom="@dimen/brightness_seekbar_margin_bottom"
     android:paddingEnd="@dimen/brightness_seekbar_padding_horizontal"
     android:paddingStart="@dimen/brightness_seekbar_padding_horizontal"
@@ -27,4 +29,5 @@
     android:progressDrawable="@drawable/brightness_seekbar_track"
     android:progressTint="?attr/quickSettingsEnabledColor"
     android:splitTrack="true"
-    android:thumb="@drawable/ic_brightness_knob_stretched"/>
+    android:thumb="@drawable/ic_brightness_knob_with_focus"
+    android:background="@drawable/brightness_seekbar_background"/>
diff --git a/res/layout/car_setting_activity.xml b/res/layout/car_setting_activity.xml
index 5fc993f..2437062 100644
--- a/res/layout/car_setting_activity.xml
+++ b/res/layout/car_setting_activity.xml
@@ -15,27 +15,50 @@
     limitations under the License.
 -->
 
-<LinearLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/car_settings_activity_wrapper"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
     android:background="@drawable/car_ui_activity_background">
 
     <FrameLayout
+        android:id="@+id/top_level_menu_container"
+        android:layout_width="@dimen/top_level_menu_width"
+        android:layout_height="match_parent"
+        android:layout_alignParentLeft="true">
+
+        <fragment
+            class="com.android.car.settings.common.TopLevelMenuFragment"
+            android:id="@+id/top_level_menu"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+    </FrameLayout>
+
+    <View
+        android:id="@+id/top_level_divider"
+        android:layout_width="@dimen/top_level_divider_width"
+        android:layout_height="match_parent"
+        android:layout_toRightOf="@id/top_level_menu_container"
+        style="@style/Preference.CarUi.Divider"/>
+
+    <FrameLayout
+        android:id="@+id/fragment_container_wrapper"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:layout_toRightOf="@id/top_level_divider"
+        android:layout_alignParentRight="true">
+
+        <com.android.car.settings.common.rotary.SettingsFocusParkingView
+            android:id="@+id/settings_focus_parking_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
         <FrameLayout
             android:id="@+id/fragment_container"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>
-        <ProgressBar
-            android:id="@+id/progress_bar"
-            style="@style/TrimmedHorizontalProgressBar"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:indeterminate="true"
-            android:visibility="gone"/>
+
         <!-- set the text clickable to true so that it blocks touch event -->
         <TextView
             android:id="@+id/restricted_message"
@@ -48,5 +71,6 @@
             android:text="@string/restricted_while_driving"
             android:textAppearance="?android:attr/textAppearanceLarge"
             android:visibility="gone"/>
+
     </FrameLayout>
-</LinearLayout>
+</RelativeLayout>
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
index 33166e5..e8611c9 100644
--- a/res/layout/choose_lock_password.xml
+++ b/res/layout/choose_lock_password.xml
@@ -17,6 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
diff --git a/res/layout/choose_lock_pattern.xml b/res/layout/choose_lock_pattern.xml
index 449629f..f34bc79 100644
--- a/res/layout/choose_lock_pattern.xml
+++ b/res/layout/choose_lock_pattern.xml
@@ -61,18 +61,9 @@
                 android:id="@+id/title_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginBottom="@dimen/choose_title_text_margin_bottom"
                 android:gravity="center"
-                android:text="@string/lockscreen_choose_your_pattern"
                 android:textAppearance="?android:attr/textAppearanceLarge"/>
 
-            <TextView
-                android:id="@+id/description_text"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center"
-                android:textAppearance="?android:attr/textAppearanceMedium"/>
-
         </LinearLayout>
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout/choose_lock_pin.xml b/res/layout/choose_lock_pin.xml
index 33d4473..c2d1065 100644
--- a/res/layout/choose_lock_pin.xml
+++ b/res/layout/choose_lock_pin.xml
@@ -17,6 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
diff --git a/res/layout/confirm_lock_password.xml b/res/layout/confirm_lock_password.xml
index f6e19de..a443068 100644
--- a/res/layout/confirm_lock_password.xml
+++ b/res/layout/confirm_lock_password.xml
@@ -17,7 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/container"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
diff --git a/res/layout/confirm_lock_pattern.xml b/res/layout/confirm_lock_pattern.xml
index 054bd26..d546746 100644
--- a/res/layout/confirm_lock_pattern.xml
+++ b/res/layout/confirm_lock_pattern.xml
@@ -17,7 +17,6 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
diff --git a/res/layout/confirm_lock_pin.xml b/res/layout/confirm_lock_pin.xml
index 7901aef..57b326c 100644
--- a/res/layout/confirm_lock_pin.xml
+++ b/res/layout/confirm_lock_pin.xml
@@ -17,6 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
diff --git a/res/layout/date_picker.xml b/res/layout/date_picker.xml
index 2543ed8..47d47a7 100644
--- a/res/layout/date_picker.xml
+++ b/res/layout/date_picker.xml
@@ -17,7 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/focus_area"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center">
diff --git a/res/layout/divider_preference.xml b/res/layout/divider_preference.xml
new file mode 100644
index 0000000..ee44d2f
--- /dev/null
+++ b/res/layout/divider_preference.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2020 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:background="@android:color/transparent"
+    android:gravity="center_vertical">
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/divider_preference_height"
+        android:layout_marginBottom="@dimen/divider_preference_margin_top"
+        android:layout_marginTop="@dimen/divider_preference_margin_bottom"
+        style="@style/Preference.CarUi.Divider"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/edit_profile_name_fragment.xml b/res/layout/edit_profile_name_fragment.xml
new file mode 100644
index 0000000..1329f96
--- /dev/null
+++ b/res/layout/edit_profile_name_fragment.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.android.car.ui.FocusArea
+        android:id="@+id/settings_content_focus_area"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:paddingEnd="@dimen/edit_username_padding_end"
+        android:paddingStart="@dimen/edit_username_padding_start"
+        android:paddingTop="@dimen/edit_username_text_padding_top">
+
+        <EditText
+            android:id="@+id/profile_name_text_edit"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:focusableInTouchMode="true"
+            android:hint="@string/user_name_label"
+            android:imeOptions="actionDone|flagNoExtractUi"
+            android:inputType="text"
+            android:maxLines="1"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+    </com.android.car.ui.FocusArea>
+</FrameLayout>
diff --git a/res/layout/edit_username_fragment.xml b/res/layout/edit_username_fragment.xml
deleted file mode 100644
index 69733d1..0000000
--- a/res/layout/edit_username_fragment.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.android.car.ui.FocusArea
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_alignParentTop="true"
-        android:paddingEnd="@dimen/edit_username_padding_end"
-        android:paddingStart="@dimen/edit_username_padding_start"
-        android:paddingTop="@dimen/edit_username_text_padding_top">
-
-        <EditText
-            android:id="@+id/user_name_text_edit"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusableInTouchMode="true"
-            android:hint="@string/user_name_label"
-            android:imeOptions="actionDone|flagNoExtractUi"
-            android:inputType="text"
-            android:maxLines="1"
-            android:textAppearance="?android:attr/textAppearanceLarge"/>
-    </com.android.car.ui.FocusArea>
-</FrameLayout>
diff --git a/res/layout/master_switch_widget.xml b/res/layout/master_switch_widget.xml
deleted file mode 100644
index 7f96623..0000000
--- a/res/layout/master_switch_widget.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<Switch
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/master_switch"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center_vertical"
-    android:clickable="false"
-    android:focusable="false"/>
diff --git a/res/layout/multi_action_preference.xml b/res/layout/multi_action_preference.xml
new file mode 100644
index 0000000..5314a08
--- /dev/null
+++ b/res/layout/multi_action_preference.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:tag="carUiPreference">
+
+    <com.android.car.ui.uxr.DrawableStateConstraintLayout
+        android:id="@+id/multi_action_preference_first_action_container"
+        android:layout_height="0dp"
+        android:layout_width="0dp"
+        android:background="?android:attr/selectableItemBackground"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/multi_action_preference_second_action_container"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent">
+        <com.android.car.ui.uxr.DrawableStateImageView
+            style="@style/Preference.CarUi.Icon"
+            android:id="@android:id/icon"
+            android:layout_width="@dimen/car_ui_preference_icon_size"
+            android:layout_height="@dimen/car_ui_preference_icon_size"
+            android:scaleType="fitCenter"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"/>
+
+        <com.android.car.ui.uxr.DrawableStateTextView
+            android:id="@android:id/title"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/car_ui_preference_icon_margin_end"
+            app:layout_goneMarginStart="0dp"
+            android:textAlignment="viewStart"
+            android:singleLine="true"
+            android:textAppearance="@style/TextAppearance.CarUi.PreferenceTitle"
+            app:layout_constraintStart_toEndOf="@android:id/icon"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toTopOf="@android:id/summary"
+            app:layout_constraintVertical_chainStyle="packed"/>
+
+        <com.android.car.ui.uxr.DrawableStateTextView
+            android:id="@android:id/summary"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/car_ui_preference_icon_margin_end"
+            app:layout_goneMarginStart="0dp"
+            android:textAlignment="viewStart"
+            android:textAppearance="@style/TextAppearance.CarUi.PreferenceSummary"
+            android:maxLines="2"
+            app:layout_constraintStart_toEndOf="@android:id/icon"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toBottomOf="@android:id/title"
+            app:layout_constraintBottom_toBottomOf="parent"/>
+    </com.android.car.ui.uxr.DrawableStateConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/multi_action_preference_second_action_container"
+        android:layout_height="0dp"
+        android:layout_width="wrap_content"
+        android:paddingEnd="@dimen/multi_action_preference_item_container_padding"
+        android:paddingStart="@dimen/multi_action_preference_item_container_padding"
+        app:layout_constraintStart_toEndOf="@id/multi_action_preference_first_action_container"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent">
+
+        <View
+            android:id="@+id/multi_action_preference_divider"
+            android:layout_width="@dimen/car_ui_divider_width"
+            android:layout_height="0dp"
+            android:layout_marginBottom="@dimen/car_ui_preference_content_margin_bottom"
+            android:layout_marginTop="@dimen/car_ui_preference_content_margin_top"
+            android:layout_marginEnd="@dimen/multi_action_preference_item_divider_margin_end"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toStartOf="@id/multi_action_preference_item_container1"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            style="@style/Preference.CarUi.Divider"/>
+
+        <com.android.car.ui.uxr.DrawableStateFrameLayout
+            android:id="@+id/multi_action_preference_item_container1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:focusable="false"
+            app:layout_constraintStart_toEndOf="@id/multi_action_preference_divider"
+            app:layout_constraintEnd_toStartOf="@id/multi_action_preference_item_container2"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"/>
+
+        <com.android.car.ui.uxr.DrawableStateFrameLayout
+            android:id="@+id/multi_action_preference_item_container2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:focusable="false"
+            app:layout_constraintStart_toEndOf="@id/multi_action_preference_item_container1"
+            app:layout_constraintEnd_toStartOf="@id/multi_action_preference_item_container3"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"/>
+
+        <com.android.car.ui.uxr.DrawableStateFrameLayout
+            android:id="@+id/multi_action_preference_item_container3"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:focusable="false"
+            app:layout_constraintStart_toEndOf="@id/multi_action_preference_item_container2"
+            app:layout_constraintEnd_toStartOf="@android:id/widget_frame"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"/>
+
+        <!-- The widget frame is required for androidx preferences, but we won't use it. -->
+        <FrameLayout
+            android:id="@android:id/widget_frame"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"/>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/multi_action_preference_toggle_button.xml b/res/layout/multi_action_preference_toggle_button.xml
new file mode 100644
index 0000000..dba0993
--- /dev/null
+++ b/res/layout/multi_action_preference_toggle_button.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<com.android.car.ui.uxr.DrawableStateToggleButton
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/multi_action_preference_toggle_button"
+    android:background="@android:color/transparent"
+    android:layout_width="@dimen/multi_action_preference_toggle_button_size"
+    android:layout_height="@dimen/multi_action_preference_toggle_button_size"
+    android:layout_marginTop="@dimen/multi_action_preference_toggle_button_margin"
+    android:layout_marginBottom="@dimen/multi_action_preference_toggle_button_margin"
+    android:layout_marginStart="@dimen/multi_action_preference_toggle_button_margin"
+    android:layout_marginEnd="@dimen/multi_action_preference_toggle_button_margin"/>
diff --git a/res/layout/preference_settings_icon.xml b/res/layout/preference_settings_icon.xml
new file mode 100644
index 0000000..2999a0c
--- /dev/null
+++ b/res/layout/preference_settings_icon.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2021 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.
+-->
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_horizontal"
+    android:src="@drawable/ic_settings_gear"/>
\ No newline at end of file
diff --git a/res/layout/preference_access_point.xml b/res/layout/preference_wifi_entry.xml
similarity index 100%
rename from res/layout/preference_access_point.xml
rename to res/layout/preference_wifi_entry.xml
diff --git a/res/layout/profile_switcher.xml b/res/layout/profile_switcher.xml
new file mode 100644
index 0000000..8287b7d
--- /dev/null
+++ b/res/layout/profile_switcher.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.android.car.settings.profiles.ProfileGridRecyclerView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/profile_grid"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_gravity="center_vertical"
+        android:layout_above="@+id/managed_device"
+        android:background="?attr/profileSwitcherBackground"/>
+
+     <com.android.car.admin.ui.ManagedDeviceTextView
+         android:id="@+id/managed_device"
+         android:layout_width="match_parent"
+         android:layout_height="wrap_content"
+         android:layout_alignParentBottom="true"
+         android:layout_marginBottom="@dimen/profile_switcher_margin_bottom"
+         android:gravity="center"/>
+
+</RelativeLayout>
diff --git a/res/layout/profile_switcher_pod.xml b/res/layout/profile_switcher_pod.xml
new file mode 100644
index 0000000..2204853
--- /dev/null
+++ b/res/layout/profile_switcher_pod.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:admin_ui="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:alpha="0"
+    android:clipChildren="false"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:id="@+id/current_profile_frame"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <com.android.car.admin.ui.UserAvatarView
+            android:id="@+id/profile_avatar"
+            android:layout_width="@dimen/profile_switcher_image_avatar_size"
+            android:layout_height="@dimen/profile_switcher_image_avatar_size"
+            android:layout_gravity="center"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
+            admin_ui:badgeDiameter="@dimen/profile_switcher_managed_badge_size"
+            admin_ui:badgeMargin="@dimen/profile_switcher_managed_badge_margin" />
+    </FrameLayout>
+
+    <TextView
+        android:id="@+id/profile_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/profile_switcher_vertical_spacing_between_name_and_avatar"
+        android:gravity="center"
+        android:singleLine="true"
+        android:textAppearance="?attr/profileSwitcherNameTextAppearance"/>
+
+</LinearLayout>
diff --git a/res/layout/quick_settings.xml b/res/layout/quick_settings.xml
index 018b45d..833b916 100644
--- a/res/layout/quick_settings.xml
+++ b/res/layout/quick_settings.xml
@@ -15,25 +15,36 @@
     limitations under the License.
 -->
 
-<RelativeLayout
+<com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
-
-    <com.android.car.ui.recyclerview.CarUiRecyclerView
-        android:id="@+id/list"
+    <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_alignParentTop="true"
-        android:layout_above="@+id/build_info"/>
+        android:layout_height="match_parent">
 
-    <TextView
-        android:id="@+id/build_info"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:gravity="center"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:visibility="gone"/>
+        <com.android.car.ui.recyclerview.CarUiRecyclerView
+            android:id="@+id/quick_settings_list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_alignParentTop="true"
+            android:layout_above="@+id/build_info"/>
 
-</RelativeLayout>
+        <com.android.car.admin.ui.ManagedDeviceTextView
+            android:id="@+id/managed_device"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_above="@+id/build_info"
+            android:gravity="center"/>
+
+        <TextView
+            android:id="@+id/build_info"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:gravity="center"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:visibility="gone"/>
+
+    </RelativeLayout>
+</com.android.car.ui.FocusArea>
diff --git a/res/layout/seekbar_preference.xml b/res/layout/seekbar_preference.xml
deleted file mode 100644
index 7796798..0000000
--- a/res/layout/seekbar_preference.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:gravity="center_vertical"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:orientation="horizontal"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart">
-
-    <androidx.preference.internal.PreferenceImageView
-        android:id="@android:id/icon"
-        android:layout_width="@*android:dimen/car_preference_icon_size"
-        android:layout_height="@*android:dimen/car_preference_icon_size"
-        android:layout_marginBottom="@*android:dimen/car_preference_row_vertical_margin"
-        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"
-        android:layout_marginTop="@*android:dimen/car_preference_row_vertical_margin"/>
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="@*android:dimen/car_preference_row_vertical_margin"
-        android:layout_marginTop="@*android:dimen/car_preference_row_vertical_margin"
-        android:layout_weight="1">
-
-        <TextView
-            android:id="@android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceListItem"/>
-
-        <TextView
-            android:id="@android:id/summary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignStart="@android:id/title"
-            android:layout_below="@android:id/title"
-            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
-            android:textColor="?android:attr/textColorSecondary"/>
-
-        <!-- Using UnPressableLinearLayout as a workaround to disable the pressed state propagation
-        to the children of this container layout. Otherwise, the animated pressed state will also
-        play for the thumb in the AbsSeekBar in addition to the preference's ripple background.
-        The background of the SeekBar is also set to null to disable the ripple background -->
-        <androidx.preference.UnPressableLinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alignStart="@android:id/title"
-            android:layout_below="@android:id/summary"
-            android:clipChildren="false"
-            android:clipToPadding="false">
-            <SeekBar
-                android:id="@+id/seekbar"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:background="@null"
-                android:clickable="false"
-                android:focusable="false"/>
-
-            <TextView
-                android:id="@+id/seekbar_value"
-                android:layout_width="@*android:dimen/car_keyline_3"
-                android:layout_height="wrap_content"
-                android:fadingEdge="horizontal"
-                android:gravity="end|center_vertical"
-                android:scrollbars="none"
-                android:textAppearance="?android:attr/textAppearanceListItemSecondary"/>
-        </androidx.preference.UnPressableLinearLayout>
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/layout/settings_fragment.xml b/res/layout/settings_fragment.xml
deleted file mode 100644
index 9dfbd90..0000000
--- a/res/layout/settings_fragment.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:ignore="NewApi">
-
-    <FrameLayout
-        android:id="@android:id/list_container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-        <com.android.car.ui.recyclerview.CarUiRecyclerView
-            android:id="@+id/recycler_view"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
-    </FrameLayout>
-    <TextView
-        android:id="@android:id/empty"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:visibility="gone"/>
-
-</FrameLayout>
diff --git a/res/layout/settings_preference_fragment.xml b/res/layout/settings_preference_fragment.xml
new file mode 100644
index 0000000..fce2261
--- /dev/null
+++ b/res/layout/settings_preference_fragment.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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="match_parent"
+    android:background="@drawable/car_ui_activity_background">
+    <FrameLayout
+        android:id="@android:id/list_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+    </FrameLayout>
+</FrameLayout>
diff --git a/res/layout/settings_recyclerview_default.xml b/res/layout/settings_recyclerview_default.xml
new file mode 100644
index 0000000..5345314
--- /dev/null
+++ b/res/layout/settings_recyclerview_default.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <com.android.car.ui.FocusArea
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/settings_car_ui_focus_area"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <com.android.car.ui.recyclerview.CarUiRecyclerView
+            android:id="@+id/settings_recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:tag="carUiPreferenceRecyclerView"
+            app:carUiSize="large"
+            app:enableDivider="true" />
+    </com.android.car.ui.FocusArea>
+</merge>
\ No newline at end of file
diff --git a/res/layout/switch_widget.xml b/res/layout/switch_widget.xml
new file mode 100644
index 0000000..d4506b9
--- /dev/null
+++ b/res/layout/switch_widget.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<Switch
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/switch_widget"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical"
+    android:clickable="false"
+    android:focusable="false"/>
diff --git a/res/layout/tile.xml b/res/layout/tile.xml
index 28d71da..261ccec 100644
--- a/res/layout/tile.xml
+++ b/res/layout/tile.xml
@@ -22,6 +22,7 @@
     android:layout_marginBottom="@dimen/tile_margin_bottom"
     android:layout_marginEnd="@dimen/tile_margin_end"
     android:layout_marginStart="@dimen/tile_margin_start"
+    android:background="?android:attr/selectableItemBackground"
     android:gravity="center_horizontal"
     android:orientation="vertical"
     android:padding="@dimen/tile_padding">
@@ -30,7 +31,6 @@
         android:layout_width="@dimen/touch_target_size"
         android:layout_height="@dimen/touch_target_size"
         android:layout_marginBottom="@dimen/tile_icon_margin_bottom"
-        android:background="@drawable/circle_ripple_bg"
         android:gravity="center">
         <View
             android:id="@+id/icon_background"
diff --git a/res/layout/time_picker.xml b/res/layout/time_picker.xml
index c643857..0e87a6d 100644
--- a/res/layout/time_picker.xml
+++ b/res/layout/time_picker.xml
@@ -17,7 +17,7 @@
 
 <com.android.car.ui.FocusArea
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/focus_area"
+    android:id="@+id/settings_content_focus_area"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center">
diff --git a/res/layout/top_level_preference.xml b/res/layout/top_level_preference.xml
new file mode 100644
index 0000000..b9c8128
--- /dev/null
+++ b/res/layout/top_level_preference.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<com.android.car.ui.uxr.DrawableStateRelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/top_level_preference_background"
+    android:clipToPadding="false"
+    android:minHeight="@dimen/top_level_preference_min_height"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:tag="carUiPreference"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart">
+
+    <com.android.car.ui.uxr.DrawableStateImageView
+        android:id="@android:id/icon"
+        android:layout_width="@dimen/car_ui_preference_icon_size"
+        android:layout_height="@dimen/car_ui_preference_icon_size"
+        android:layout_alignParentStart="true"
+        android:layout_centerVertical="true"
+        android:layout_marginBottom="@dimen/car_ui_preference_content_margin_bottom"
+        android:layout_marginEnd="@dimen/car_ui_preference_icon_margin_end"
+        android:layout_marginTop="@dimen/car_ui_preference_content_margin_top"
+        android:scaleType="fitCenter"
+        style="@style/Preference.CarUi.Icon"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_marginBottom="@dimen/car_ui_preference_content_margin_bottom"
+        android:layout_marginTop="@dimen/car_ui_preference_content_margin_top"
+        android:layout_toEndOf="@android:id/icon"
+        android:layout_toStartOf="@android:id/widget_frame"
+        android:orientation="vertical">
+
+        <com.android.car.ui.uxr.DrawableStateTextView
+            android:id="@android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="@style/TextAppearance.CarUi.PreferenceTitle"/>
+
+        <com.android.car.ui.uxr.DrawableStateTextView
+            android:id="@android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="@style/TextAppearance.CarUi.PreferenceSummary"/>
+
+    </LinearLayout>
+
+    <!-- Preference should place its actual preference widget here. -->
+    <FrameLayout
+        android:id="@android:id/widget_frame"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_centerVertical="true"/>
+
+</com.android.car.ui.uxr.DrawableStateRelativeLayout>
diff --git a/res/layout/top_level_recyclerview.xml b/res/layout/top_level_recyclerview.xml
new file mode 100644
index 0000000..b6485cb
--- /dev/null
+++ b/res/layout/top_level_recyclerview.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <com.android.car.ui.FocusArea
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/settings_car_ui_focus_area"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <com.android.car.ui.recyclerview.CarUiRecyclerView
+            android:id="@+id/top_level_recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginRight="@dimen/top_level_recyclerview_margin_right"
+            android:tag="carUiPreferenceRecyclerView"
+            app:carUiSize="medium"
+            app:enableDivider="true" />
+    </com.android.car.ui.FocusArea>
+</merge>
\ No newline at end of file
diff --git a/res/layout/user_switcher.xml b/res/layout/user_switcher.xml
deleted file mode 100644
index 84d8538..0000000
--- a/res/layout/user_switcher.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.android.car.settings.users.UserGridRecyclerView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/user_grid"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:layout_gravity="center_vertical"
-        android:background="?attr/userSwitcherBackground"/>
-</RelativeLayout>
diff --git a/res/layout/user_switcher_pod.xml b/res/layout/user_switcher_pod.xml
deleted file mode 100644
index f967d37..0000000
--- a/res/layout/user_switcher_pod.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:alpha="0"
-    android:clipChildren="false"
-    android:gravity="center"
-    android:orientation="vertical">
-
-    <FrameLayout
-        android:id="@+id/current_user_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-        <ImageView
-            android:id="@+id/user_avatar"
-            android:layout_width="@dimen/user_switcher_image_avatar_size"
-            android:layout_height="@dimen/user_switcher_image_avatar_size"
-            android:layout_gravity="center"
-            android:background="?android:attr/selectableItemBackgroundBorderless"/>
-    </FrameLayout>
-
-    <TextView
-        android:id="@+id/user_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="@dimen/user_switcher_vertical_spacing_between_name_and_avatar"
-        android:gravity="center"
-        android:singleLine="true"
-        android:textAppearance="?attr/userSwitcherNameTextAppearance"/>
-
-</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 50a8ba4..28cd24d 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Skerm"</string>
     <string name="brightness" msgid="2919605130898772866">"Helderheidvlak"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Aanpasbare helderheid"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimeer helderheidvlak volgens beskikbare lig"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Pas skermhelderheid by omgewing aan"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Aandbeligting is aan"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skerm, raakskerm"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dowwe skerm, raakskerm, battery"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dowwe skerm, raakskerm, battery"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dowwe skerm, nag, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nagmodus"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Selnetwerk"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Stel datagebruikwaarskuwing"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Stel datagebruiklimiet"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Stel"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-netwerk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB gebruik %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Sluit by ander netwerk aan"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Netwerkvoorkeure"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Skakel tans Wi-Fi aan …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Skakel tans Wi-Fi af …"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kon nie aan netwerk koppel nie"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Voeg netwerk by"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Koppel"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Koppel tans …"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Netwerk nie binne sendbereik nie"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Wagwoord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Wys wagwoord"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Voer asseblief \'n netwerknaam in"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"\'n Program wil jou kopeenheid <xliff:g id="TIMEOUT">%1$d</xliff:g> sekondes lank vir ander Bluetooth-toestelle sigbaar maak."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wil Bluetooth aanskakel en jou kopeenheid <xliff:g id="TIMEOUT">%2$d</xliff:g> sekondes lank vir ander toestelle sigbaar maak."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"\'n Program wil Bluetooth aanskakel en jou kopeenheid <xliff:g id="TIMEOUT">%1$d</xliff:g> sekondes lank vir ander toestelle sigbaar maak."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Sigbaar aan ander toestelle as %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"My toestelle"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Voorheen gekoppel"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s is gekoppel"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s is ontkoppel"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-saambindversoek"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Bind saam en koppel"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-saambindkode"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Verstekkennisgewingklank"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Verstekwekkerklank"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Stoor"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Opletberigklanke"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Luitoon, kennisgewings, wekker"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Helderheid"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Pas skerm aan by swak lig"</string>
     <string name="units_settings" msgid="402325305096925886">"Eenhede"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Spoed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Afstand"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Wys alle programme"</string>
     <string name="default_applications" msgid="1558183275638697087">"Verstekprogramme"</string>
     <string name="app_permissions" msgid="32799922508313948">"Programtoestemmings"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Programme wat <xliff:g id="APPS">%1$s</xliff:g> gebruik"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Beheer programtoegang tot jou data"</string>
     <string name="applications_settings" msgid="794261395191035632">"Programinligting"</string>
     <string name="force_stop" msgid="2153183697014720520">"Dwing stop"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Dwing stop?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Deïnstalleer"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"As jy hierdie program deaktiveer, sal Android en ander programme dalk nie meer soos bedoel werk nie."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiveer program"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nie vir hierdie gebruiker geïnstalleer nie"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nie vir hierdie profiel geïnstalleer nie"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Toestemmings"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Kennisgewings"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Berging en kas"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Weergawe: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Geen toestemmings is verleen nie"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Geen toestemmings is versoek nie"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ongebruikte programme"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ongebruikte programme</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ongebruikte program</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Verwyder toestemmings en maak spasie oop"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s se interne berging"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datagebruik"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Programdatagebruik"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Vra elke keer"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Moenie in hierdie program oopmaak nie"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Gesteunde skakels"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Programme"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Onlangs oopgemaak"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Bekyk al %1$d programme"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Toestemmingbestuurder"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Beheer programtoegang tot jou data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Vir Assistent en meer"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Na stelsel- en ander instellings"</string>
     <string name="special_access" msgid="5730278220917123811">"Spesiale programtoegang"</string>
     <string name="show_system" msgid="4401355756969485287">"Wys stelsel"</string>
     <string name="hide_system" msgid="8845453295584638040">"Versteek stelsel"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Versteek stelselprogramme"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Verander stelselinstellings"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Hierdie toestemming laat \'n program toe om stelselinstellings te verander."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Kennisgewingtoegang"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen onlangse liggingversoeke nie"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Programvlaktoestemmings"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Liggingdienste"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Gebruik ligging"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Stelsel"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Stelselopdaterings"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Gevorderd"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Meer oor, regsinligting, terugstelling, en meer"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-weergawe"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-sekuriteitregstellingvlak"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model en hardeware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Dit sal al die voorkeure terugstel vir:\n\n"<li>"Gedeaktiveerde programme"</li>\n<li>"Gedeaktiveerdeprogram-kennisgewings"</li>\n<li>"Verstekprogramme vir handelinge"</li>\n<li>"Agtergronddatabeperkings vir programme"</li>\n<li>"Enige toestemmingbeperkings"</li>\n\n"Jy sal geen programdata verloor nie."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Stel programme terug"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Programvoorkeure is teruggestel"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Vee alle data uit (fabriekterugstelling)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Dit sal alle data van jou voertuig se beheerpaneel uitvee, insluitend:\n\n"<li>"Jou Google-rekening"</li>\n<li>"Stelsel- en programdata en -instellings"</li>\n<li>"Afgelaaide programme"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Jy is tans aangemeld by die volgende rekeninge:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Daar is ander gebruikers op hierdie voertuig teenwoordig."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Stel voertuig terug"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Stel terug?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vee al jou persoonlike inligting en afgelaaide programme uit? Jy kan nie hierdie handeling ontdoen nie!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vee alles uit"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Vee tans uit"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Wag asseblief …"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Vee alle data uit (fabriekterugstelling)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Vee alle data en profiele van die inligtingvermaakstelsel af uit"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Dit sal alle data van jou voertuig se inligtingvermaakstelsel af uitvee, insluitend:\n\n"<li>"Jou Google-rekening"</li>\n<li>"Stelsel- en programdata en -instellings"</li>\n<li>"Afgelaaide programme"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Jy is tans aangemeld by die volgende rekeninge:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Daar is ander profiele op hierdie voertuig teenwoordig."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Vee alle data uit"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vee alle data uit?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Dit sal al jou persoonlike profieldata, rekeninge en afgelaaide programme op hierdie inligtingvermaakstelsel uitvee.\n\nJy kan nie hierdie handeling ontdoen nie."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Vee alles uit"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Vee tans uit"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Wag asseblief …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum en tyd"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Stel datum, tyd, tydsones en formate"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Outomatiese datum en tyd"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Aangemeld as admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle admin-toestemmings"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Maak administrateur"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Die gebruiker sal gebruikers kan uitvee, insluitend ander administrateurs, en \'n fabriekterugstelling op die stelsel kan uitvoer."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Die profiel sal profiele kan uitvee, insluitend ander administrateurs, en \'n fabriekterugstelling op die stelsel kan uitvoer."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Hierdie handeling is nie omkeerbaar nie."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, maak administrateur"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Skep nuwe gebruikers"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Skep nuwe profiele"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Maak foonoproepe"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Stuur SMS\'e met motor se mobiele data"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installeer nuwe programme"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deïnstalleer programme"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Voeg gebruiker by"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuwe gebruiker"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Voeg nuwe gebruiker by?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Enige gebruiker kan programme vir al die ander gebruikers opdateer."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Gebruikerlimiet is bereik"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Jy kan tot <xliff:g id="COUNT">%d</xliff:g> gebruikers skep.</item>
-      <item quantity="one">Net een gebruiker kan geskep word.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Voeg profiel by"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nuwe profiel"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Voeg nuwe profiel by?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Wanneer jy \'n nuwe profiel byvoeg, moet daardie persoon hul spasie opstel."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Enige profiel kan programme vir alle ander profiele opdateer."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profiellimiet is bereik"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Jy kan tot <xliff:g id="COUNT">%d</xliff:g> profiele skep.</item>
+      <item quantity="one">Net een profiel kan geskep word.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Kon nie \'n nuwe gebruiker skep nie"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vee hierdie gebruiker uit?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle programme en data sal uitgevee word."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Kon nie gebruiker uitvee nie."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Kon nie \'n nuwe profiel skep nie"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vee hierdie profiel uit?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Alle programme en data vir hierdie profiel sal uitgevee word"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Kon nie profiel uitvee nie."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Hierdie profiel sal uitgevee word wanneer jy profiele wissel of die voertuig weer aanskakel."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Maak toe"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Herprobeer"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Vee laaste gebruiker uit?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"\'n Nuwe admin-gebruiker sal geskep word as die enigste oorblywende gebruiker vir hierdie motor uitgevee word."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle data, instellings en programme wat met hierdie gebruiker geassosieer word, sal uitgevee word. Jy sal die stelsel weer moet opstel."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vee die laaste oorblywende profiel uit?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"As jy die enigste oorblywende profiel vir hierdie voertuig uitvee, sal alle data, instellings en programme wat met hierdie profiel geassosieer word, uitgevee word."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Jy kan ná die terugstelling \'n nuwe profiel opstel."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Kies nuwe admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Jy het minstens een admin nodig. As jy hierdie een wil uitvee, moet jy eers \'n plaasvervanger kies."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Kies admin"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Jy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Naam"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nie opgestel nie"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Wysig gebruikernaam"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Wysig profielnaam"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Veld kan nie leeg wees nie."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Ingevoerde gebruikernaam is ongeldig."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profielnaam wat ingevoer is, is ongeldig."</string>
     <string name="users_list_title" msgid="770764290290240909">"Gebruikers"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiele"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Toestemmings gegee aan %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Berging"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musiek en oudio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Oudiolêers"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Bereken tans …"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Programgrootte"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Gebruikerdata"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profieldata"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Kasgeheue"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totaal"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Vee berging uit"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Kanselleer sinkronisering"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronisering ondervind tans probleme. Dit sal binnekort terug wees."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privaatheid"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Voertuigdata"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Beheer programtoegang tot jou ligging"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofoon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Beheer programtoegang tot mikrofoon"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Voertuigdata"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Bestuur aktiwiteite en inligting wat in hierdie voertuig gestoor is"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Vee jou profiel uit"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Vee jou profiel en rekeninge van die inligtingvermaakstelsel af uit"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Hierdie handeling is nie vir jou profiel beskikbaar nie"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sekuriteit"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skermslot"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Geen"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Verwyder skermslot?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Dit sal enigiemand toegang tot jou rekening gee"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profielslot"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Stel outomatiese ontsluiting op"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Voer jou PIN in"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Voer jou wagwoord in"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Stel \'n PIN vir sekuriteit"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Moet minder as <xliff:g id="NUMBER">%d</xliff:g> syfers hê"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Mag net syfers 0-9 bevat."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Toesteladministrateur laat nie toe dat \'n onlangse PIN gebruik word nie"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Jou IT-administrateur blokkeer algemene PIN\'e. Probeer \'n ander PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Jou IT-administrateur blokkeer algemene PIN\'e. Probeer \'n ander PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Dit mag nie \'n ongeldige karakter insluit nie."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Wagwoord is ongeldig; moet minstens 4 karakters lank wees."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Toesteladministrateur laat nie toe dat \'n onlangse wagwoord gebruik word nie"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Kon nie wagwoord stoor nie"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Jou IT-administrateur blokkeer algemene wagwoorde. Probeer \'n ander wagwoord."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Jou IT-administrateur blokkeer algemene wagwoorde. Probeer \'n ander wagwoord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stygende, dalende of herhalende groep syfers word nie toegelaat nie."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Skermslotopsies"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dae gelede"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter-sleutel"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Verlaat demonstrasie"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Verlaat demonstrasiemodus"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dit sal die demonstrasierekening uitvee en \'n fabriekterugstelling op die stelsel uitvoer. Alle gebruikerdata sal verloor word."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Dit sal die demonstrasierekening uitvee en \'n fabriekterugstelling op die stelsel uitvoer. Alle profieldata sal verloor word."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Verlaat demonstrasie"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"WYS AF"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Kenmerk is nie beskikbaar terwyl jy bestuur nie"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Kan nie gebruiker byvoeg terwyl jy bestuur nie"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Kan nie profiel byvoeg terwyl jy bestuur nie"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Soek"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent en stem"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent-program"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Gebruik teks op die skerm"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Gee Assistent toegang tot skerminhoud"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Gebruik skermkiekie"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Gee Assistent toegang tot skermprent"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Onlangs gestuur"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Alle programme"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiele en rekeninge"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Bestuur ander profiele"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Voeg \'n profiel by"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Vee hierdie profiel uit"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Voeg profiel by"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index b45f92c..a6d8669 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"አሳይ"</string>
     <string name="brightness" msgid="2919605130898772866">"የብሩህነት ደረጃ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ተለዋዋጭ ብሩህነት"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ለሚገኘው ብርሃን የብሩህነት ደረጃን አትባ"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"የማያ ገጽ ብሩህነትን ከድባብ ጋር ያስተካክሉ"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"የምሽት ብርሃን በርቷል"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ማያ ገጽ፣ ማያንካ"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ደብዛዛ ማያ ገጽ፣ ማያንካ፣ ባትሪ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ደብዛዛ ማያ ገጽ፣ ማያንካ፣ ባትሪ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ደብዛዛ ማያ ገጽ፣ ሌሌት፣ ቅልም"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"የሌሊት ሁነታ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"አውታረ መረብ እና በይነመረብ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"የተንቀሳቃሽ ስልክ አውታረ መረብ"</string>
@@ -47,7 +43,7 @@
     <string name="sim_change_data_title" msgid="6677115745127365131">"ለተንቀሳቃሽ ውሂብ <xliff:g id="CARRIER">%1$s</xliff:g>ን ይጠቀሙ?"</string>
     <string name="sim_change_data_message" msgid="4669775284395549069">"ለተንቀሳቃሽ ስልክ ውሂብ <xliff:g id="CARRIER2_0">%2$s</xliff:g>ን እየተጠቀሙ ነው። ወደ <xliff:g id="CARRIER1">%1$s</xliff:g> ከቀየሩ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ከእንግዲህ ለተንቀሳቃሽ ስልክ ውሂብ ስራ ላይ አይውልም።"</string>
     <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>ን ይጠቀሙ"</string>
-    <string name="roaming_title" msgid="6218635014519017734">"በማዛወር ላይ"</string>
+    <string name="roaming_title" msgid="6218635014519017734">"ማንዣበብ"</string>
     <string name="roaming_summary" msgid="7476127740259728901">"በእንቅስቃሴ ላይ ሲሆን ከውሂብ አገልግሎቶች ጋር ተገናኝ"</string>
     <string name="roaming_alert_title" msgid="4433901635766775763">"የውሂብ ዝውውር ይፈቀድ?"</string>
     <string name="roaming_warning" msgid="4908184914868720704">"የዝውውር ክፍያዎች ሊከፈልባቸው ይችላሉ።"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"የውሂብ አጠቃቀም ማስጠንቀቂያ ያቀናብሩ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"የውሂብ አጠቃቀም ወሰን አቀናብር"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"አቀናብር"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"የOEM አውታረ መረብ"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s ላይ %1$d ሜባ ጥቅም ላይ ውላል"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"ሌላ አውታረ መረብ ይቀላቀሉ"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"የአውታረ መረብ ምርጫዎች"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fiን በማብራት ላይ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi በማጥፋት ላይ…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ከአውታረ መረቡ ጋር መገናኘት አልተሳካም"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"አውታረ መረብ አክል"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"አገናኝ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"በማገናኘት ላይ…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"አውታረ መረብ በክልል ውስጥ አይደለም"</string>
     <string name="wifi_password" msgid="5565632142720292397">"የይለፍ ቃል"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"የይለፍ ቃል አሳይ"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"እባክዎ የአውታረ መረብ ስም ያስገቡ"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"አንድ መተግበሪያ የመኪና መረጃ ስርዓትዎን ለ<xliff:g id="TIMEOUT">%1$d</xliff:g> ሰከንዶች ያህል ለሌሎች የብሉቱዝ መሣሪያዎች እንዲታይ ሊያደርገው ይፈልጋል።"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ብሉቱዝን አብርቶ የመኪና መረጃ ስርዓትዎን ለ<xliff:g id="TIMEOUT">%2$d</xliff:g> ሰከንዶች ለሌሎች መሣሪያዎች እንዲታይ ሊያደርገው ይፈልጋል።"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"አንድ መተግበሪያ ብሉቱዝን አብርቶ የመኪና መረጃ ስርዓትዎን ለ<xliff:g id="TIMEOUT">%1$d</xliff:g> ሰከንዶች ያህል ለሌሎች መሣሪያዎች እንዲታይ ሊያደርገው ይፈልጋል።"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"ለሌሎች መሣሪያዎች እንደ %1$s ሆኖ ይታያል"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"የእኔ መሣሪያዎች"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ከዚህ ቀደም የተገናኘ"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ተገናኝቷል"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ግንኙነቱ ተቋርጧል"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"የብሉቱዝ ማጣመር ጥያቄ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"አጣምር እና ተገናኝ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"የብሉቱዝ ማጣመሪያ ኮድ"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ነባሪ የማሳወቂያ ድምጽ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ነባሪ የማንቂያ ድምጽ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"አስቀምጥ"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"የማንቂያ ድምፆች"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"የጥሪ ቅላጼ፣ ማሳወቂያዎች፣ ማንቂያ"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ብሩህነት"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ለዝቅተኛ ብርሃን ማያ ገጹን ያስተካክሉ"</string>
     <string name="units_settings" msgid="402325305096925886">"መለኪያዎች"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ፍጥነት"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ርቀት"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"ሁሉንም መተግበሪያዎች አሳይ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ነባሪ መተግበሪያዎች"</string>
     <string name="app_permissions" msgid="32799922508313948">"የመተግበሪያ ፈቃዶች"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>ን የሚጠቀሙ መተግበሪያዎች"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"መተግበሪያ ያለው የውሂብዎ መዳረሻን ይቆጣጠሩ"</string>
     <string name="applications_settings" msgid="794261395191035632">"የመተግበሪያ መረጃ"</string>
     <string name="force_stop" msgid="2153183697014720520">"በኃይል አቁም"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"በኃይል አቁም?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"አራግፍ"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ይህን መተግበሪያ ካሰናከሉት ከዚህ በኋላ Android እና ሌሎች መተግበሪያዎች እንደተፈለገው ላይሠሩ ይችላሉ።"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"መተግበሪያን አሰናክል"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ለዚህ ተጠቃሚ አልተጫነም"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ለዚህ መገለጫ አልተጫነም"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ፈቃዶች"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ማሳወቂያዎች"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ማከማቻ እና መሸጎጫ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ስሪት፦ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ምንም ፈቃዶች አልተሰጡም"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ምንም ፈቃዶች አልተጠየቁም"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ስራ ላይ ያልዋሉ መተግበሪያዎች"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ጥቅም ላይ ያልዋሉ መተግበሪያዎች</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ጥቅም ላይ ያልዋሉ መተግበሪያዎች</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ፈቃዶችን ያስወግዱ እና ቦታ ያስለቅቁ"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s በውስጣዊ ማከማቻ ውስጥ ነው"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"የውሂብ አጠቃቀም"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"የመተግበሪያ ውሂብ አጠቃቀም"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ሁልጊዜ ጠይቅ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"በዚህ መተግበሪያ ውስጥ አትክፈት"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"የሚደገፉ አገናኞች"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"መተግበሪያዎች"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"በቅርቡ የተከፈተ"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"ሁሉንም %1$d መተግበሪያዎች አሳይ"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"የፈቃድ አስተዳዳሪ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"መተግበሪያ ያለው የውሂብዎ መዳረሻን ይቆጣጠሩ"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"ለረዳት እና ለሌሎች"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ለስርዓት እና ሌሎች ቅንብሮች"</string>
     <string name="special_access" msgid="5730278220917123811">"ልዩ የመተግበሪያ መዳረሻ"</string>
     <string name="show_system" msgid="4401355756969485287">"ሥርዓት አሳይ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ሥርዓትን ደብቅ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"የሥርዓት መተግበሪያዎችን ደብቅ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"የሥርዓት ቅንብሮችን ይቀይራል"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ይህ ፈቃድ መተግበሪያው የስርዓት ቅንብሮችን ለመቀየር ያስችለዋል።"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"የማሳወቂያ መዳረሻ"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ምንም የቅርብ ጊዜ የአካባቢ ጥያቄዎች የሉም"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"የመተግበሪያ ደረጃ ፈቃዶች"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"የአካባቢ አገልግሎቶች"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"አካባቢን ተጠቀም"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ሥርዓት"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"የሥርዓት ዝማኔዎች"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"ከፍተኛ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ስለ፣ የሕግ መረጃ፣ ዳግም አስጀምር እና ሌሎች"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ሥሪት"</string>
     <string name="security_patch" msgid="4794276590178386903">"የAndroid ደህነንት መጠገኛ ደረጃ"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ሞዴል እና ሃርድዌር"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ይሄ ሁሉንም የእነኚህ ምርጫዎችን ዳግም ያስጀምራቸዋል፦\n\n"<li>"የተሰናከሉ መተግበሪያዎች"</li>\n<li>"የተሰናከሉ መተግበሪያ ማሳወቂያዎች"</li>\n<li>"ለእርምጃዎች ነባሪ መተግበሪያዎች"</li>\n<li>"ለመተግበሪያዎች የጀርባ ውሂብ ገደቦች"</li>\n<li>"ማንኛቸውም የፍቃድ ገደቦች"</li>\n\n"ምንም የመተግበሪያ ውሂብ አይጠፋብዎትም።"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"መተግበሪያዎችን ዳግም አስጀምር"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"የመተግበሪያ ምርጫዎች ዳግም ተቀናብረዋል"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ሁሉንም ውሂብ ደምስስ (የፋብሪካ ዳግም ማስጀመር)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ይህ የሚከተሉትን ጨምሮ ሁሉንም ውሂብ ከተሽከርካሪዎ መረጃ ስርዓት ይደመስሰዋል፦\n\n"<li>"የእርስዎ የGoogle መለያ"</li>\n<li>"የስርዓት እና የመተግበሪያ ውሂብ እና ቅንብሮች"</li>\n<li>"የወረዱ መተግበሪያዎች"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"እርስዎ በአሁን ጊዜ የሚከተለው መለያዎች ውስጥ ገብተዋል፦"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"በዚህ ተሽከርካሪ ላይ ሌሎች ተጠቃሚዎች አሉ።"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ተሽከርካሪን ዳግም አስጀምር"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ዳግም ይጀምር?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ሁሉም የእርስዎ የግል መረጃ እና የወረዱ መተግበሪያዎች ይሰረዙ? ይህን እርምጃ መቀልበስ አይችሉም!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ሁሉንም አጥፋ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"በመደምሰስ ላይ"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"እባክዎ ይጠብቁ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ሁሉንም ውሂብ ደምስስ (የፋብሪካ ዳግም ማስጀመር)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ሁሉንም ውሂብ እና መገለጫዎች ከኢንፎቴይንመንት ስርዓት ይደምስሱ"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ይህ የሚከተሉትን ጨምሮ ሁሉንም ውሂብ ከኢንፎቴይንመንት ስርዓትዎ ይደመስሰዋል፦\n\n"<li>"የእርስዎ የGoogle መለያ"</li>\n<li>"የስርዓት እና የመተግበሪያ ውሂብ እና ቅንብሮች"</li>\n<li>"የወረዱ መተግበሪያዎች"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"እርስዎ በአሁን ጊዜ የሚከተለው መለያዎች ውስጥ ገብተዋል፦"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"በዚህ ተሽከርካሪ ላይ ሌሎች መገለጫዎች አሉ።"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ሁሉንም ውሂብ ደምስስ"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ሁሉም ውሂብ ይደምሰስ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ይህ በዚህ የኢንፎቴይንመንት ስርዓትዎ ላይ ሁሉንም የእርስዎን የግል መገለጫ ውሂብ፣ መለያዎች እና የወረዱ መተግበሪያዎችን ይደመስሳቸዋል።\n\nይህን እርምጃ መቀልበስ አይችሉም።"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ሁሉንም አጥፋ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"በመደምሰስ ላይ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"እባክዎን ይጠብቁ…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ቀን እና ሰዓት"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ቀን፣ ሰዓት፣ የሰዓት ሰቅ እና ቅርጸቶችን ያቀናብሩ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ራስ-ሰር ቀን እና ሰዓት"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"እንደ አስተዳዳሪ በመለያ ይግቡ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ሁሉም የአስተዳዳሪ ፈቃዶች"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"አስተዳዳሪ አድርግ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ተጠቃሚው ሌሎች አስተዳዳሪዎችን ጨምሮ ተጠቃሚዎችን መሰረዝ፣ እና ሥርዓቱን ወደ የፋብሪካ ዳግም ማስጀመር ይችላል።"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"መገለጫው ሌሎች አስተዳዳሪዎችን ጨምሮ መገለጫዎችን መሰረዝ እና ሥርዓቱን ወደ የፋብሪካ ዳግም ማስጀመር ይችላል።"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ይህ እርምጃ ሊቀለበስ የሚችል አይደለም።"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"አዎ፣ አስተዳዳሪ አድርግ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"አዳዲስ ተጠቃሚዎችን ይፍጠሩ"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"አዲስ መገለጫዎችን ይፍጠሩ"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"የስልክ ጥሪዎችን ያድርጉ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"በመኪና የሞባይል ውሂብ በኩል መልዕክት መላላክ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"አዳዲስ መተግበሪያዎች ይጫኑ"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"መተግበሪያዎችን ያራግፉ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ተጠቃሚን አክል"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"አዲስ ተጠቃሚ"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"አዲስ ተጠቃሚ ይታከል?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሳቸውን ቦታ ማቀናበር አለባቸው።"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ማዘመን ይችላል።"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"የተጠቃሚ ገደብ ላይ ተደርሷል"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">እስከ <xliff:g id="COUNT">%d</xliff:g> ተጠቃሚዎች መፍጠር ይችላሉ።</item>
-      <item quantity="other">እስከ <xliff:g id="COUNT">%d</xliff:g> ተጠቃሚዎች መፍጠር ይችላሉ።</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"መገለጫን ያክሉ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"አዲስ መገለጫ"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"አዲስ መገለጫን ያክሉ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"አዲስ መገለጫ ሲያክሉ እኚህ ሰው የራሳቸውን ቦታ ማቀናበር አለባቸው።"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ማንኛውም መገለጫ ለሁሉም ሌሎች መገለጫዎች መተግበሪያዎችን ማዘመን ይችላል።"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"የመገለጫ ከፍተኛው ገደብ ላይ ተደርሷል"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">እስከ <xliff:g id="COUNT">%d</xliff:g> መገለጫዎች ድረስ መፍጠር ይችላሉ።</item>
+      <item quantity="other">እስከ <xliff:g id="COUNT">%d</xliff:g> መገለጫዎች ድረስ መፍጠር ይችላሉ።</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"አዲስ ተጠቃሚን መፍጠር አልተሳካም"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ይህ ተጠቃሚ ይሰረዝ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ተጠቃሚን መሰረዝ አልተሳካም።"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"አዲስ መገለጫን መፍጠር አልተሳካም"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ይህ መገለጫ ይሰረዝ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ለዚህ መገለጫ ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"መገለጫን መሰረዝ አልተሳካም።"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"እርስዎ መገለጫዎችን ሲቀይሩ ወይም ተሽከርካሪውን ዳግም ሲያስነሱት ይህ መገለጫ ይሰረዛል።"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"አሰናብት"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"እንደገና ሞክር"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"የመጨረሻው ተጠቃሚ ይሰረዝ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ለዚህ መኪና ብቻ ያለው ብቸኛውን ተጠቃሚ ከተሰረዘ በኋላ አዲስ አስተዳዳሪ ተጠቃሚ ይፈጠራል።"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ከዚህ ተጠቃሚ ጋር የተጎዳኙ ሁሉም ውሂብ፣ ቅንብሮች እና መተግበሪያዎች ይሰረዛሉ። ስርዓቱን እንደገና ማዋቀር ይኖርብዎታል።"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"የመጨረሻው ቀሪ መገለጫ ይሰረዝ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ለዚህ ተሽከርካሪ ብቸኛውን ቀሪ መገለጫ ከሰረዙ ከዚህ መገለጫ ጋር የተዛመዱ ሁሉም ውሂብ፣ ቅንብሮች እና መተግበሪያዎች ይሰረዛሉ።"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ዳግም ከተጀመረ በኋላ አዲስ መገለጫን ማቀናበር ይችላሉ።"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"አዲስ አስተዳዳሪ ይምረጡ"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ቢያንስ አንድ አስተዳዳሪ ያስፈልገዎታል። ይህን ለመሰረዝ መጀመሪያ ምትኩን ይምረጡ።"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"አስተዳዳሪ ይምረጡ"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"እርስዎ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ስም"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"አልተዋቀረም"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"የተጠቃሚ ስም አርትዕ ያድርጉ"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"የመገለጫ ስምን አርትዕ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"መስክ ባዶ መሆን አይችልም።"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"የገባው ተጠቃሚ ስም ልክ ያልሆነ ነው።"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"የገባው የመገለጫ ስም ልክ ያልሆነ ነው።"</string>
     <string name="users_list_title" msgid="770764290290240909">"ተጠቃሚዎች"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"መገለጫዎች"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"ፈቃዶች ለ%1$s ተሰጥቷል"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ማከማቻ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"ሙዚቃ እና ኦዲዮ"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"የኦዲዮ ፋይሎች"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"በማስላት ላይ…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"የመተግበሪያ መጠን"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"የተጠቃሚ ውሂብ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"የመገለጫ ውሂብ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"መሸጎጫ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"ድምር"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ማከማቻን አጽዳ"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"አስምር ሰርዝ"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"አስምር በአሁኑጊዜ ችግር እየገጠመው ነው። ከአፍታ በኋላ ይመለሳል።"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ግላዊነት"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"የተሽከርካሪ ውሂብ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"የአካባቢዎ የመተግበሪያ መዳረሻን ይቆጣጠሩ"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"ማይክሮፎን"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"መተግበሪያ ያለው የማይክሮፎን መዳረሻ ይቆጣጠሩ"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"የተሽከርካሪ ውሂብ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"በዚህ ተሽከርካሪ ላይ የተቀመጡ እንቅስቃሴዎችን እና መረጃዎችን ያቀናብሩ"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"መገለጫዎን ይሰርዙት"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"የእርስዎን መገለጫ እና መለያዎች ከኢንፎቴይንመንት ስርዓቱ ይደምስሱ"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ይህ እርምጃ ለመገለጫዎ አይገኝም"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ደኅንነት"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ማያ ገጽ መቆለፊያ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ምንም"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"እሺ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ማያ ገጽ ቆላፊ ይወገድ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ይህ ማንም የፈለገ ሰው የእርስዎን መለያ እንዲደርስበት ይፈቅዳል"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"የመገለጫ ቁልፍ"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ራስ-ሰር መክፈቻን ያዋቅሩ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"የእርስዎን ፒን ያስገቡ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ይለፍ ቃልዎን ያስገቡ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ለደህንነት አንድ ፒን ያቀናብሩ"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ከ<xliff:g id="NUMBER">%d</xliff:g> አሃዞች ያነሰ መሆን አለበት።"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ከ0-9 የሆኑ አሃዞችን ብቻ ነው መያዝ ያለበት።"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"የመሣሪያ አስተዳዳሪው የቅርብ ጊዜ ፒንን መጠቀም አይፈቅድም"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"የተለመዱ ፒኖች በአይቲ አስተዳዳሪዎ የታገዱ ናቸው። የተለየ ፒን ይሞክሩ።"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"የተለመዱ ፒኖች በአይቲ አስተዳዳሪዎ የታገዱ ናቸው። የተለየ ፒን ይሞክሩ።"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ይህ ልክ ያልሆነ ቁምፊን ማካተት አይችልም።"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"የይለፍ ቃል ልክ ያልሆነ ነው፣ ቢያንስ 4 ቁምፊዎች መሆን አለበት"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"የመሣሪያ አስተዳዳሪው የቅርብ ጊዜ የይለፍ ቃልን መጠቀም አይፈቅድም"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"የይለፍ ቃልን ማስቀመጥ ላይ ስህተት"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"የተለመዱ የይለፍ ቃላት በአይቲ አስተዳዳሪዎ የታገዱ ናቸው። የተለየ የይለፍ ቃል ይሞክሩ።"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"የተለመዱ የይለፍ ቃላት በአይቲ አስተዳዳሪዎ የታገዱ ናቸው። የተለየ የይለፍ ቃል ይሞክሩ።"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"እየጨመሩ የሚሄዱ፣ እየቀነሱ የሚሄዱ ወይም ተደጋጋሚ የአኃዞች ተከታታይ አይፈቀድም።"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"የማያ ገጽ መቆለፊያ አማራጮች"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ቀኖች በፊት"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"ቁልፍ አስገባ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ከማሳያ ውጣ"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ከልምምድ ሁነታ ውጣ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ይህ የልምምድ መለያውን እና የፋብሪካ ዳግም አስጀምር ሥርዓቱን ይሰርዛል። ሁሉም የተጠቃሚ ውሂብ ይጠፋል።"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ይህ የልምምድ መለያውን እና የፋብሪካ ዳግም አስጀምር ሥርዓቱን ይሰርዛል። ሁሉም የመገለጫ ውሂብ ይጠፋል።"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ከማሳያ ውጣ"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"አሰናብት"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"እየነዱ ሳለ ባህሪው አይገኝም"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"እየነዱ ሳለ ተጠቃሚን ማከል አይቻልም"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"እየነዱ ሳለ መገለጫን ማከል አይቻልም"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ይፈልጉ"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"ረዳት &amp; ድምፅ"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"የረዳት መተግበሪያ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ከማያ ገጽ ላይ ጽሑፍ ተጠቀም"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ረዳት የማያ ገጽ ይዘቶችን እንዲደርስ ይፍቀዱለት"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ቅጽበታዊ ገጽ እይታ ይጠቀሙ"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ረዳት የማያ ገጽ ምስልን እንዲደርስ ይፍቀዱለት"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"በቅርቡ የተላኩ"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"ሁሉም መተግበሪያዎች"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"መገለጫዎች እና መለያዎች"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ሌሎች መገለጫዎችን ያቀናብሩ"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"መገለጫን አክል"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ይህን መገለጫ ይሰርዙ"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"መገለጫን ያክሉ"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 387b0f2..33d6158 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"العرض"</string>
     <string name="brightness" msgid="2919605130898772866">"مستوى السطوع"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"السطوع التكيُّفي"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"تحسين مستوى السطوع بحسب الإضاءة المتوفرة"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ضبط سطوع الشاشة بناءً على الظروف المحيطة"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"تم تفعيل الإضاءة الليلية."</string>
-    <string name="keywords_display" msgid="3978416985146943922">"شاشة، شاشة تعمل باللمس"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"تعتيم شاشة، شاشة تعمل باللمس، بطارية"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"تعتيم شاشة، شاشة تعمل باللمس، بطارية"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"تعتيم الشاشة، ليل، تلوين خفيف"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"الوضع الليلي"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"الشبكة والإنترنت"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"شبكة الجوّال"</string>
@@ -79,7 +75,7 @@
     <string name="app_data_usage" msgid="3878609885080232877">"استخدام بيانات التطبيق"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"مقيَّد"</string>
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"تاريخ إعادة ضبط دورة الاستخدام"</string>
-    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"اليوم من كل شهر:"</string>
+    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"تاريخ كل شهر:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"ضبط"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"تحذير بشأن قيود البيانات"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"دورة استخدام التطبيقات للبيانات"</string>
@@ -92,6 +88,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ضبط تحذيرات استخدام البيانات"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ضبط حد استخدام البيانات"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ضبط"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"شبكة المصنّع الأصلي للجهاز"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"تم استخدام %1$d ميغابايت خلال الفترة %2$s - %3$s."</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"الانضمام إلى شبكة أخرى"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"الإعدادات المفضَّلة للشبكة"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"جارٍ تفعيل Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"جارٍ إيقاف Wi-Fi…"</string>
@@ -101,6 +101,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"تعذّر الاتصال بالشبكة."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"إضافة شبكة"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"اتصال"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"جارٍ الاتصال…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"الشبكة ليست في النطاق."</string>
     <string name="wifi_password" msgid="5565632142720292397">"كلمة المرور"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"عرض كلمة المرور"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"يُرجى إدخال اسم شبكة."</string>
@@ -198,6 +200,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"يريد أحد التطبيقات أن تكون وحدة الرأس مرئية لأجهزة البلوتوث الأخرى لمدة <xliff:g id="TIMEOUT">%1$d</xliff:g> من الثواني."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"يريد <xliff:g id="APP_NAME">%1$s</xliff:g> تفعيل البلوتوث وجعل وحدة الرأس مرئية للأجهزة الأخرى لمدة <xliff:g id="TIMEOUT">%2$d</xliff:g> من الثواني."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"يريد أحد التطبيقات تفعيل البلوتوث وجعل وحدة الرأس مرئية للأجهزة الأخرى لمدة <xliff:g id="TIMEOUT">%1$d</xliff:g> من الثواني."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"يظهر جهازك باسم \"‎%1$s\" للأجهزة الأخرى"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"أجهزتي"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"الأجهزة المتصلة سابقًا"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"تم توصيل ‎%1$s."</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"تم قطع الاتصال عن ‎%1$s."</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"طلب إقران البلوتوث"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"الإقران والاتصال"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"رمز إقران البلوتوث"</string>
@@ -236,6 +243,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"الصوت التلقائي للإشعارات"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"الصوت التلقائي للمنبّه"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"حفظ"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"أصوات المنبه"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"نغمة الرنين والإشعارات والمنبّه"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"السطوع"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ضبط الشاشة على وضع \"الإضاءة المنخفضة\""</string>
     <string name="units_settings" msgid="402325305096925886">"وحدات العرض"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"السرعة"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"المسافة"</string>
@@ -288,7 +299,7 @@
     <string name="all_applications" msgid="7798210477486822168">"إظهار جميع التطبيقات"</string>
     <string name="default_applications" msgid="1558183275638697087">"التطبيقات التلقائية"</string>
     <string name="app_permissions" msgid="32799922508313948">"أذونات التطبيقات"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"التطبيقات التي تستخدم <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"التحكُّم في وصول التطبيقات إلى بياناتك"</string>
     <string name="applications_settings" msgid="794261395191035632">"معلومات التطبيق"</string>
     <string name="force_stop" msgid="2153183697014720520">"فرض الإيقاف"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"هل تريد فرض إيقاف التطبيق؟"</string>
@@ -298,13 +309,23 @@
     <string name="uninstall_text" msgid="277907956072833012">"إلغاء التثبيت"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"قد يؤدي إيقاف هذا التطبيق إلى عدم عمل كل من نظام التشغيل Android وتطبيقات أخرى على النحو المنشود."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"إيقاف التطبيق"</string>
-    <string name="not_installed" msgid="4218816013370552746">"لم يتم تثبيت التطبيق لهذا المستخدم."</string>
+    <string name="not_installed" msgid="4163454337822508007">"التطبيق غير مثبت لهذا الملف الشخصي"</string>
     <string name="permissions_label" msgid="2701446753515612685">"الأذونات"</string>
     <string name="notifications_label" msgid="6586089149665170731">"الإشعارات"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"التخزين وذاكرة التخزين المؤقت"</string>
     <string name="application_version_label" msgid="8556889839783311649">"الإصدار: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"لم يتم منح أي أذونات."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"لم يتم طلب أي أذونات."</string>
+    <string name="unused_apps" msgid="648471933781010395">"التطبيقات غير المستخدمة"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> تطبيق غير مستخدم</item>
+      <item quantity="two">تطبيقان (<xliff:g id="COUNT_1">%d</xliff:g>) غير مستخدمين</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> تطبيقات غير مستخدمة</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> تطبيقًا غير مستخدم</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> تطبيق غير مستخدم</item>
+      <item quantity="one">تطبيق واحد (<xliff:g id="COUNT_0">%d</xliff:g>) غير مستخدم</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"إزالة الأذونات وإخلاء بعض المساحة"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"وحدة التخزين الداخلية %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"استخدام البيانات"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"استخدام بيانات التطبيق"</string>
@@ -346,15 +367,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"الطلب في كل مرة"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"عدم الفتح في هذا التطبيق"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"الروابط المتوافقة"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"التطبيقات"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"التطبيقات التي تم فتحها مؤخرًا"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"عرض جميع التطبيقات الـ ‎%1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"مدير الأذونات"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"التحكُّم في وصول التطبيقات إلى بياناتك"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"لتشغيل \"مساعد Google\" والمزيد"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"الانتقال إلى النظام والإعدادات الأخرى"</string>
     <string name="special_access" msgid="5730278220917123811">"أذونات خاصة للتطبيقات"</string>
     <string name="show_system" msgid="4401355756969485287">"عرض عمليات النظام"</string>
     <string name="hide_system" msgid="8845453295584638040">"إخفاء عمليات النظام"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"إخفاء تطبيقات النظام"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"تعديل إعدادات النظام"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"يتيح هذا الإذن للتطبيق إمكانية تعديل إعدادات النظام."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"الوصول إلى الإشعارات"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"هل تسمح بوصول خدمة <xliff:g id="SERVICE">%1$s</xliff:g> إلى الإشعارات؟"</string>
-    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"سيكون بإمكان <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> قراءة جميع الإشعارات، بما في ذلك المعلومات الشخصية مثل أسماء جهات الاتصال ونصوص الرسائل التي تتلقّاها. وسيتمكّن كذلك من تجاهل الإشعارات أو تشغيل أزرار الإجراءات التي تحتوي عليها.\n\nوتتيح هذه الميزة أيضًا للتطبيق إمكانية تفعيل ميزة \"عدم الإزعاج\" أو إيقافها وتغيير الإعدادات ذات الصلة."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"عند إيقاف الوصول إلى الإشعارات لخدمة <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>، قد يتم إيقاف الوصول إلى ميزة \"عدم الإزعاج\" أيضًا."</string>
+    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"سيكون بإمكان \"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>\" قراءة جميع الإشعارات، بما في ذلك المعلومات الشخصية مثل أسماء جهات الاتصال ونصوص الرسائل التي تتلقّاها. وسيتمكّن كذلك من تجاهل الإشعارات أو تشغيل أزرار الإجراءات التي تحتوي عليها.\n\nوتتيح هذه الميزة أيضًا للتطبيق إمكانية تفعيل ميزة \"عدم الإزعاج\" أو إيقافها وتغيير الإعدادات ذات الصلة."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"عند إيقاف الوصول إلى الإشعار لـ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>، قد يتم إيقاف الوصول إلى ميزة \"عدم الإزعاج\" أيضًا."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"إيقاف"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"إلغاء"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"إمكانية إرسال رسائل قصيرة SMS مميزة"</string>
@@ -369,8 +398,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"لا توجد طلبات حديثة للموقع الجغرافي."</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"الأذونات على مستوى التطبيقات"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"خدمات الموقع الجغرافي"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"استخدام الموقع الجغرافي"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"النظام"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"تحديثات النظام"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"الإعدادات المتقدّمة"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"نبذة والمعلومات القانونية وإعادة الضبط والمزيد"</string>
     <string name="firmware_version" msgid="8491753744549309333">"إصدار Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"مستوى رمز تصحيح أمان Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"الطراز والجهاز"</string>
@@ -436,16 +470,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"يؤدي ذلك إلى إعادة ضبط جميع الإعدادات المفضَّلة لما يلي:\n\n"<li>"التطبيقات الموقوفة"</li>\n<li>"إشعارات التطبيقات الموقوفة"</li>\n<li>"التطبيقات التلقائية للإجراءات"</li>\n<li>"القيود على البيانات الخلفية للتطبيقات"</li>\n<li>"أيّ قيود على الأذونات"</li>\n\n"ولن تفقد أيّ بيانات للتطبيقات."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"إعادة ضبط التطبيقات"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"تمت إعادة ضبط الإعدادات المفضّلة للتطبيقات"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"محو جميع البيانات (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"سيؤدي هذا الإجراء إلى محو جميع البيانات من الوحدة الأساسية لسيارتك، بما في ذلك:\n\n"<li>"حسابك على Google"</li>\n<li>"بيانات وإعدادات النظام والتطبيقات"</li>\n<li>"التطبيقات التي تم تنزيلها"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"الحسابات التي سجَّلت الدخول إليها حاليًا:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"هناك مستخدمون آخرون موجودون على هذه المركبة."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"إعادة ضبط إعدادات السيارة"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"هل تريد إعادة الضبط؟"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"هل تريد محو جميع المعلومات الشخصية والتطبيقات التي تم تنزيلها؟ لا يمكنك التراجع عن هذا الإجراء."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"محو جميع المعلومات والتطبيقات"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"جارٍ محو البيانات"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"يُرجى الانتظار..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"محو جميع البيانات (إعادة الضبط على الإعدادات الأصلية)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"محو جميع البيانات والملفات الشخصية من \"نظام الترفيه والمعلومات\"."</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"سيؤدي هذا الإجراء إلى محو جميع البيانات من \"نظام الترفيه والمعلومات\" لمركبتك، بما في ذلك:\n\n"<li>"حسابك على Google"</li>\n<li>"البيانات والإعدادات المتوفّرة على النظام والتطبيقات"</li>\n<li>"التطبيقات التي تم تنزيلها"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"الحسابات المسجَّل الدخول إليها حاليًا:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"هناك ملفات شخصية أخرى على هذه المركبة."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"محو جميع البيانات"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"هل تريد محو جميع البيانات؟"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"سيؤدي هذا إلى محو جميع بيانات ملفك الشخصي والحسابات والتطبيقات التي تم تنزيلها على \"نظام الترفيه والمعلومات\" هذا.\n\nلا يمكنك التراجع عن هذا الإجراء."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"محو جميع البيانات"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"جارٍ محو البيانات"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"يُرجى الانتظار..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"التاريخ والوقت"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تعيين التاريخ والوقت والمنطقة الزمنية والتنسيقات"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"التاريخ والوقت التلقائي"</string>
@@ -468,37 +503,38 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"تمّ تسجيل الدخول كمشرف."</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"جميع أذونات المشرفين"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"منح المستخدم دور المشرف"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"سيتمكن المستخدم من حذف حسابات المستخدمين، بما في ذلك حسابات المشرفين الآخرين، وإعادة ضبط النظام على الإعدادات الأصلية."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"سيُسمح لهذا الملف الشخصي بحذف الملفات الشخصية، بما في ذلك حسابات المشرفين الآخرين، وإعادة ضبط النظام على الإعدادات الأصلية."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"لا يمكن التراجع عن هذا الإجراء."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"منح المستخدم دور المشرف"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"إنشاء مستخدمين جدد"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"إنشاء ملفات شخصية جديدة"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"إجراء مكالمات هاتفية"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"المراسلة عبر بيانات جوّال السيارة"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"تثبيت تطبيقات جديدة"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"إلغاء تثبيت التطبيقات"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"إضافة مستخدم"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"مستخدم جديد"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"أتريد إضافة مستخدم جديد؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"عند إضافة مستخدم جديد، عليه إعداد مساحته."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"يمكن لأي مستخدم تعديل إعدادات التطبيقات لجميع المستخدمين الآخرين."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"تم الوصول إلى أقصى عدد للمستخدمين"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="zero">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدم.</item>
-      <item quantity="two">يمكنك إنشاء ما يصل إلى مستخدمينِ (<xliff:g id="COUNT">%d</xliff:g>).</item>
-      <item quantity="few">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدمين.</item>
-      <item quantity="many">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدمًا.</item>
-      <item quantity="other">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدم.</item>
-      <item quantity="one">يمكن إنشاء مستخدم واحد فقط.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"إضافة ملف شخصي"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ملف شخصي جديد"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"هل تريد إضافة ملف شخصي جديد؟"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"عند إضافة أحد المستخدمين لملف شخصي جديد، عليه إعداد مساحته."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"يمكن لأي ملف شخصي تحديث التطبيقات لجميع الملفات الشخصية الأخرى."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"تم الوصول إلى أقصى عدد للملفات الشخصية"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="zero">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> ملف شخصي.</item>
+      <item quantity="two">يمكنك إنشاء ما يصل إلى ملفّين شخصيين (<xliff:g id="COUNT">%d</xliff:g>).</item>
+      <item quantity="few">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g>ملفات شخصية.</item>
+      <item quantity="many">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g>ملفًا شخصيًا.</item>
+      <item quantity="other">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> ملف شخصي.</item>
+      <item quantity="one">يمكن إنشاء ملف شخصي واحد فقط.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"تعذّر إنشاء مستخدم جديد."</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"هل تريد حذف هذا المستخدم؟"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"سيتم حذف جميع التطبيقات والبيانات."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"تعذّر حذف المستخدم."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"تعذّر إنشاء ملف شخصي جديد"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"هل تريد حذف هذا الملف الشخصي؟"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"سيتم حذف جميع التطبيقات والبيانات المرتبطة بهذا الملف الشخصي."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"تعذّر حذف الملف الشخصي."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"سيتمّ حذف الملف الشخصي هذا عند تبديل الملفات الشخصية أو إعادة تشغيل المركبة"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"رفض"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"إعادة المحاولة"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"حذف المستخدم الأخير؟"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"سيتم إنشاء مستخدم إداري جديد بعد حذف المستخدم المتبقي الوحيد لهذه السيارة."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"سيتم حذف جميع البيانات والإعدادات والتطبيقات المرتبطة بهذا المستخدم. وستحتاج إلى إعداد النظام مرة أخرى."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"هل تريد حذف آخر ملف شخصي متبقٍّ؟"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"إذا حذفت الملف الشخصي المتبقّي الوحيد لمركبتك، سيتم محو جميع البيانات والإعدادات والتطبيقات المرتبطة بهذا الملف الشخصي."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"بعد إعادة الضبط، يمكنك إعداد ملف شخصي جديد."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"اختر مسؤولًا جديدًا."</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"أنت بحاجة إلى مدير واحد على الأقل. ولحذف هذا المدير، اختر بديلًا أولًا."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"اختر المدير"</string>
@@ -508,21 +544,22 @@
     <string name="current_user_name" msgid="3813671533249316823">"أنت (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"الاسم"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"لم يتم الإعداد."</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"تعديل اسم المستخدم"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"تعديل اسم الملف الشخصي"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"يجب عدم ترك الحقل فارغًا."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"اسم المستخدم المُدخل غير صالح."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"اسم الملف الشخصي الذي تم إدخاله غير صالح"</string>
     <string name="users_list_title" msgid="770764290290240909">"المستخدمون"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"الملفات الشخصية"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"تمّ منح الأذونات للمستخدم %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"التخزين"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"الموسيقى والصوت"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"تطبيقات أخرى"</string>
     <string name="storage_files" msgid="6382081694781340364">"الملفات"</string>
     <string name="storage_system" msgid="1271345630248014010">"النظام"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"يتضمّن النظام الملفات المستخدمة لتشغيل إصدار Android <xliff:g id="VERSION">%s</xliff:g>."</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"يتضمّن النظام الملفات المستخدمة لتشغيل إصدار Android <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"الملفات الصوتية"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"جارٍ الحساب…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"حجم التطبيق"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"بيانات المستخدمين"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"بيانات الملف الشخصي"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ذاكرة التخزين المؤقت"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"الإجمالي"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"محو مساحة التخزين"</string>
@@ -552,7 +589,7 @@
     <string name="remove_account_error_title" msgid="8368044943174826635">"أخفق حذف الحساب."</string>
     <string name="account_sync_title" msgid="6541844336300236915">"مزامنة الحساب"</string>
     <string name="account_sync_summary_some_on" msgid="4525960296068027182">"تمّ تفعيل المزامنة لـ <xliff:g id="ID_1">%1$d</xliff:g> من إجمالي <xliff:g id="ID_2">%2$d</xliff:g> عنصر."</string>
-    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"تم تفعيل المزامنة لكل العناصر."</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"المزامنة مفعَّلة لكل العناصر."</string>
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"المزامنة متوقفة لكل العناصر."</string>
     <string name="sync_disabled" msgid="393531064334628258">"المزامنة متوقفة."</string>
     <string name="sync_error" msgid="6698021343089247914">"خطأ في المزامنة"</string>
@@ -564,6 +601,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"إلغاء المزامنة"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"تواجه المزامنة حاليًا بعض المشاكل. وسوف تكون متاحة خلال وقت قصير."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"الخصوصية"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"بيانات السيارة"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"التحكُّم في وصول التطبيقات إلى موقعك الجغرافي"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"الميكروفون"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"التحكُّم في وصول التطبيقات إلى الميكروفون"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"بيانات السيارة"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"إدارة الأنشطة والمعلومات المحفوظة في هذه السيارة"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"حذف ملفك الشخصي"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"محو ملفك الشخصي وحساباتك من \"نظام الترفيه والمعلومات\"."</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"هذا الإجراء غير متاح لملفك الشخصي."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"الأمان"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"قفل الشاشة"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"بدون"</string>
@@ -599,6 +645,8 @@
     <string name="okay" msgid="4589873324439764349">"حسنًا"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"هل تريد إزالة قفل الشاشة؟"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"سيؤدي هذا الإجراء إلى السماح لأي شخص بالدخول إلى حسابك."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"قفل الملف الشخصي"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ضبط جهازك على فتح القفل تلقائيًا"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"أدخل رقم التعريف الشخصي"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"أدخل كلمة المرور"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"للحفاظ على الأمان، يجب تعيين رقم PIN."</string>
@@ -622,7 +670,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"يجب ألا يزيد رقم التعريف الشخصي عن <xliff:g id="NUMBER">%d</xliff:g> رقم."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"يجب أن يحتوي رقم التعريف الشخصي على أرقام من ۰ إلى ٩ فقط."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"لا يسمح مشرف الجهاز باستخدام رقم تعريف شخصي تم استخدامه مؤخرًا."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"حظرَ مشرف تكنولوجيا المعلومات استخدام أرقام التعريف الشخصية الشائعة. جرِّب استخدام رقم تعريف شخصي مختلف."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"حظرَ مشرف تكنولوجيا المعلومات استخدام أرقام التعريف الشخصية الشائعة. جرِّب استخدام رقم تعريف شخصي مختلف."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"يجب ألا تتضمّن كلمة المرور حرفًا غير صالح."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"كلمة المرور غير صالحة، ويجب أن تتكوَّن من 4 أحرف على الأقل."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -651,7 +699,7 @@
     </plurals>
     <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
       <item quantity="zero">يجب أن تحتوي كلمة المرور على <xliff:g id="COUNT">%d</xliff:g> رقم عددي على الأقل.</item>
-      <item quantity="two">يجب أن تحتوي كلمة المرور على رقمين عدديين (<xliff:g id="COUNT">%d</xliff:g>) على الأقل.</item>
+      <item quantity="two">يجب أن تحتوي كلمة المرور على رقمين عددين (<xliff:g id="COUNT">%d</xliff:g>) على الأقل.</item>
       <item quantity="few">يجب أن تحتوي كلمة المرور على <xliff:g id="COUNT">%d</xliff:g> أرقام عددية على الأقل.</item>
       <item quantity="many">يجب أن تحتوي كلمة المرور على <xliff:g id="COUNT">%d</xliff:g> رقمًا عدديًا على الأقل.</item>
       <item quantity="other">يجب أن تحتوي كلمة المرور على <xliff:g id="COUNT">%d</xliff:g> رقم عددي على الأقل.</item>
@@ -675,7 +723,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"لا يسمح مشرف الجهاز باستخدام كلمة مرور تم استخدامها مؤخرًا."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"حدث خطأ أثناء حفظ كلمة المرور."</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"حظرَ مشرف تكنولوجيا المعلومات استخدام كلمات المرور الشائعة. جرِّب استخدام كلمة مرور مختلفة."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"حظرَ مشرف تكنولوجيا المعلومات استخدام كلمات المرور الشائعة. جرِّب استخدام كلمة مرور مختلفة."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"لا يُسمح باستخدام الترتيب التصاعدي أو التنازلي أو المكرر للأرقام."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"خيارات قفل الشاشة"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : قبل <xliff:g id="NUM_DAYS">%3$s</xliff:g> يوم"</string>
@@ -696,10 +744,23 @@
     <string name="enter_key" msgid="2121394305541579468">"مفتاح Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"خروج من عرض توضيحي"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"خروج من وضع العرض التوضيحي"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"سيؤدي هذا إلى حذف حساب العرض التوضيحي وإعادة الضبط بحسب بيانات المصنع على النظام. سيتم فقد جميع بيانات المستخدم."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"سيؤدي هذا إلى حذف حساب العرض التوضيحي وإعادة ضبط النظام على الإعدادات الأصلية. وسيتم فقد جميع بيانات الملف الشخصي."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"خروج من عرض توضيحي"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"رفض"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"لا تتوفَّر هذه الميزة أثناء القيادة."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"لا يمكن إضافة مستخدم أثناء القيادة."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"لا يمكن إضافة ملف شخصي أثناء القيادة."</string>
     <string name="default_search_query" msgid="3137420627428857068">"بحث"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"\"مساعد Google\" والصوت"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"تطبيق \"مساعد Google\""</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"استخدام النص من الشاشة"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"السماح لـ \"مساعد Google\" بالوصول إلى محتوى الشاشة"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"استخدام لقطة الشاشة"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"السماح لـ \"مساعد Google\" بالوصول إلى صورة الشاشة"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"الإشعارات التي تم إرسالها مؤخرًا"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"جميع التطبيقات"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"الحسابات والملفات الشخصية"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"إدارة الملفات الشخصية الأخرى"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"إضافة ملف شخصي"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"حذف هذا الملف الشخصي"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"إضافة ملف شخصي"</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 476e450..23957a2 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ডিছপ্লে’"</string>
     <string name="brightness" msgid="2919605130898772866">"উজ্জ্বলতাৰ স্তৰ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"অভিযোজিত উজ্জ্বলতা"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"উপলব্ধ পোহৰ অনুযায়ী উজ্জ্বলতাৰ পৰিমাণ অপ্টিমাইজ কৰক"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"স্ক্ৰীনৰ উজ্জ্বলতা আৰু সামগ্ৰিক অৱস্থা মিলাওক"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ৰাতিৰ লাইট অন হৈ আছে"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"স্ক্ৰীণ, টাচ্চ স্ক্ৰীণ"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"অনুজ্জ্বল স্ক্ৰীণ, টাচ্চস্ক্ৰীণ, বেটাৰি"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"অনুজ্জ্বল স্ক্ৰীণ, টাচ্চস্ক্ৰীণ, বেটাৰি"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"অনুজ্জ্বল স্ক্ৰীণ, ৰাতি, আভা"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"নৈশ ম\'ড"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"নেটৱৰ্ক আৰু ইণ্টাৰনেট"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ম’বাইল নেটৱৰ্ক"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ডেটা ব্যৱহাৰৰ সতৰ্কবাণী ছেট কৰক"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ডেটা ব্যৱহাৰৰ সীমা ছেট কৰক"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ছেট কৰক"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM নেটৱৰ্ক"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d এমবি ব্যৱহাৰ কৰা হৈছে %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"অন্য নেটৱৰ্কৰ সৈতে সংযোগ কৰক"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"নেটৱৰ্কৰ অগ্ৰাধিকাৰ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ৱাই-ফাই"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ৱাই-ফাই অন কৰি থকা হৈছে…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ৱাই-ফাই অফ কৰি থকা হৈছে…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"নেটৱৰ্কৰ সৈতে সংযোগ কৰিব পৰা নগ\'ল"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"নেটৱৰ্ক যোগ কৰক"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"সংযোগ কৰক"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"সংযোগ কৰি থকা হৈছে…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"নেটৱৰ্ক সংযোগ সীমাৰ ভিতৰত নাই"</string>
     <string name="wifi_password" msgid="5565632142720292397">"পাছৱৰ্ড"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"পাছৱৰ্ড দেখুৱাওক"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"অনুগ্ৰহ কৰি নেটৱৰ্কৰ এটা নাম দিয়ক"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"এটা এপে আপোনাৰ হেডইউনিটটো <xliff:g id="TIMEOUT">%1$d</xliff:g> ছেকেণ্ডৰ বাবে অন্য ব্লুটুথ ডিভাইচে বিচাৰি পাব পৰা কৰিবলৈ বিচাৰিছে।"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ ব্লুটুথ অন কৰি আপোনাৰ হেডইউনিটটো <xliff:g id="TIMEOUT">%2$d</xliff:g> ছেকেণ্ডৰ বাবে অন্য ডিভাইচে বিচাৰি পাব পৰা কৰিবলৈ বিচাৰিছে।"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"এটা এপে ব্লুটুথ অন কৰি আপোনাৰ হেডইউনিটটো <xliff:g id="TIMEOUT">%1$d</xliff:g> ছেকেণ্ডৰ বাবে অন্য ডিভাইচে বিচাৰি পাব পৰা কৰিবলৈ বিচাৰিছে।"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"অন্য ডিভাইচৰ বাবে %1$s হিচাপে দৃশ্যমান"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"মোৰ ডিভাইচ"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"আগতে সংযোগ কৰা"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s সংযোগ কৰা হ’ল"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$sৰ সংযোগ বিচ্ছিন্ন কৰা হ’ল"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ব্লুটুথ যোৰা লগোৱাৰ অনুৰোধ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"যোৰা লগাওক আৰু সংযোগ কৰক"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ব্লুটুথ যোৰ লগোৱা ক’ড"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"জাননীৰ ডিফ’ল্ট ধ্বনি"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"এলাৰ্মৰ ডিফ’ল্ট ধ্বনি"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ছেভ কৰক"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"সতৰ্কবাৰ্তাৰ ধ্বনি"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ৰিংট’ন, জাননী, এলাৰ্ম"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"উজ্জ্বলতা"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"কম পোহৰৰ বাবে স্ক্ৰীন মিলাওক"</string>
     <string name="units_settings" msgid="402325305096925886">"এককসমূহ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"বেগ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"দূৰত্ব"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"সকলো এপ্‌ দেখুৱাওক"</string>
     <string name="default_applications" msgid="1558183275638697087">"ডিফ’ল্ট এপ্"</string>
     <string name="app_permissions" msgid="32799922508313948">"এপৰ অনুমতি"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ব্যৱহাৰ কৰি থকা এপ্‌সমূহ"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"আপোনাৰ ডেটালৈ এপৰ এক্সেছ নিয়ন্ত্ৰণ কৰক"</string>
     <string name="applications_settings" msgid="794261395191035632">"এপ সম্পৰ্কীয় তথ্য"</string>
     <string name="force_stop" msgid="2153183697014720520">"বলেৰে ৰখাওক"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"বলেৰে বন্ধ কৰিবনে?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"আনইনষ্টল কৰক"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"আপুনি যদি এই এপ্‌টো অক্ষম কৰে, তেন্তে Android আৰু অন্য এপ্‌সমূহে বিচৰাধৰণে আৰু কাম নকৰিব পাৰে।"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"এপ্‌টো অক্ষম কৰক"</string>
-    <string name="not_installed" msgid="4218816013370552746">"এই ব্যৱহাৰকাৰীজনৰ বাবে ইনষ্টল কৰা হোৱা নাই"</string>
+    <string name="not_installed" msgid="4163454337822508007">"এই প্ৰ’ফাইলটোৰ বাবে ইনষ্টল কৰি থোৱা হোৱা নাই"</string>
     <string name="permissions_label" msgid="2701446753515612685">"অনুমতি"</string>
     <string name="notifications_label" msgid="6586089149665170731">"জাননী"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ষ্ট’ৰেজ আৰু কেশ্ব"</string>
     <string name="application_version_label" msgid="8556889839783311649">"সংস্কৰণ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"কোনো অনুমতি দিয়া হোৱা নাই"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"অনুমতি বিচৰা হোৱা নাই"</string>
+    <string name="unused_apps" msgid="648471933781010395">"অব্যৱহৃত এপ্‌"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> টা অব্যৱহৃত এপ্‌</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> টা অব্যৱহৃত এপ্‌</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"অনুমতি আঁতৰাওক আৰু ঠাই খালী কৰক"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s অভ্যন্তৰীণ ষ্ট’ৰেজত আছে"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ডেটাৰ ব্যৱহাৰ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"এপ্ ডেটাৰ ব্যৱহাৰ"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"প্ৰতিবাৰতে সোধক"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"এইটো এপত নুখুলিব"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"সমৰ্থিত লিংকসমূহ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"এপ্‌"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"শেহতীয়াকৈ খোলা"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"%1$d টা এপৰ আটাইবোৰ চাওক"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"অনুমতি পৰিচালক"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"আপোনাৰ ডেটালৈ এপৰ এক্সেছ নিয়ন্ত্ৰণ কৰক"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant আৰু বহুতো এপৰ বাবে"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ছিষ্টেম আৰু অন্য ছেটিঙলৈ"</string>
     <string name="special_access" msgid="5730278220917123811">"বিশেষ এপ্ এক্সেছ"</string>
     <string name="show_system" msgid="4401355756969485287">"ছিষ্টেম দেখুৱাওক"</string>
     <string name="hide_system" msgid="8845453295584638040">"ছিষ্টেম লুকুৱাওক"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ছিষ্টেম এপ্‌ লুকুৱাওক"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"ছিষ্টেমৰ ছেটিংসমূহ সংশোধন কৰক"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"এই অনুমতিটোৱে কোনো এপক ছিষ্টেম ছেটিংসমূহ সংশোধন কৰিবলৈ অনুমতি দিয়ে।"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"জাননীৰ এক্সেছ"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"শেহতীয়াকৈ কোনো এপে অৱস্থানৰ অনুৰোধ প্ৰেৰণ কৰা নাই"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"এপ্‌-স্তৰৰ অনুমতি"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"অৱস্থান সেৱা"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"অৱস্থান ব্যৱহাৰ কৰক"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ছিষ্টেম"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"ছিষ্টেম আপডে’ট"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"উচ্চখাপৰ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"এই বিষয়ে, আইন সংক্ৰান্তীয় তথ্য, ৰিছেট আৰু বহুতো"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android সংস্কৰণ"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android সুৰক্ষা পেচ্চ স্তৰ"</string>
     <string name="hardware_info" msgid="3973165746261507658">"মডেল আৰু হাৰ্ডৱেৰ"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ইয়ে:\n\n"<li>"অক্ষম কৰি থোৱা এপ্"</li>\n<li>"অক্ষম কৰি থোৱা এপ্ জাননী"</li>\n<li>"কাৰ্যৰ ডিফ’ল্ট এপ্লিকেশ্বন"</li>\n<li>"এপৰ নেপথ্য ডেটা সীমাবদ্ধকৰণ"</li>\n<li>"যিকোনো অনুমতিৰ সীমাবদ্ধকৰণ"</li>"ৰ অগ্ৰাধিকাৰসমূহ ৰিছেট কৰিব\n\nআপুনি কোনো এপৰ ডেটা নেহেৰুৱায়।"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"এপসমূহ ৰিছেট কৰক"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"এপৰ অগ্ৰাধিকাৰসমূহ ৰিছেট কৰা হৈছে"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"সকলো ডেটা মচক (ফেক্টৰী ৰিছেট কৰক)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ইয়ে আপোনাৰ বাহনখনৰ হে’ড ইউনিটটোত থকা:\n\n"<li>"আপোনাৰ Google একাউণ্ট"</li>\n<li>"ছিষ্টেম আৰু এপ্‌ ডেটা আৰু ছেটিং "</li>\n<li>"ডাউনল’ড কৰা এপ্‌"</li>" আদিকে ধৰি সকলো ডেটা মচিব"</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"আপুনি বৰ্তমান এই একাউণ্টসমূহত ছাইন ইন হৈ আছে:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"এই বাহনখনত আৰু ব্যৱহাৰকাৰী আছে।"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"বাহনখন ৰিছেট কৰক"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ৰিছেট কৰিবনে?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"আপোনাৰ ব্যক্তিগত সকলো তথ্য আৰু ডাউনল’ড কৰা সমস্ত এপ্‌ মচিবনে? আপুনি এই কাৰ্য পিছত আনডু কৰিব নোৱাৰিব!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"সকলো মচক"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"মচি থকা হৈছে"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"অনুগ্রহ কৰি অপেক্ষা কৰক…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"সকলো ডেটা মচক (ফেক্টৰী ৰিছেট)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ইনফ’টেইনমেণ্ট ছিষ্টেমটোৰ পৰা আটাইবোৰ ডেটা আৰু প্ৰ’ফাইল মচক"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"এই কাৰ্যই আপোনাৰ বাহনখনৰ ইনফ’টেইনমেণ্ট ছিষ্টেমটোত থকা আটাইবোৰ ডেটা মচিব, য’ত এয়া অন্তৰ্ভুক্ত:\n\n"<li>"আপোনাৰ Google একাউণ্ট"</li>\n<li>"ছিষ্টেম আৰু এপৰ ডেটা আৰু ছেটিং"</li>\n<li>"ডাউনল’ড কৰা এপ্‌"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"আপুনি বৰ্তমানে এই একাউণ্টসমূহত ছাইন ইন হৈ আছে:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"এই বাহনখনত অন্য প্ৰ’ফাইল আছে।"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"আটাইবোৰ ডেটা মচক"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"আটাইবোৰ ডেটা মচিবনে?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"এই কাৰ্যই এই ইনফ’টেইনমেণ্ট ছিষ্টেমটোত থকা আপোনাৰ আটাইবোৰ ব্যক্তিগত প্ৰ’ফাইল ডেটা, একাউণ্ট আৰু ডাউনল’ড কৰা এপ্‌ মচিব।\n\nআপুনি এই কাৰ্যটো আনডু কৰিব নোৱাৰে।"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"সকলো মচক"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"মচি থকা হৈছে"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"অনুগ্রহ কৰি অপেক্ষা কৰক…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"তাৰিখ আৰু সময়"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"তাৰিখ, সময়, সময় মণ্ডল আৰু ফৰমেটসমূহ ছেট কৰক"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"স্বয়ং ছেট কৰা তাৰিখ আৰু সময়"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"প্ৰশাসক হিচাপে ছাইন ইন হৈ আছে"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"সকলো প্ৰশাসকীয় অনুমতি"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"প্ৰশাসকৰ দায়িত্ব দিয়ক"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"এই ব্যৱহাৰকাৰীজনে অন্য প্ৰশাসককে ধৰি যিকোনো ব্যৱহাৰকাৰীকে মচিব পাৰিব আৰু লগতে ছিষ্টেমটোৰ ফেক্টৰী ৰিছেট কৰিব পাৰিব।"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"এই প্ৰ’ফাইলটোৱে অন্য প্ৰশাসককে ধৰি প্ৰ’ফাইল মচিব পাৰিব তথা ছিষ্টেমটোৰ ফেক্টৰী ৰিছেট কৰিব পাৰিব।"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"এই কাৰ্যটো ওলোটাব নোৱাৰি।"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"হয়, প্ৰশাসকৰ দায়িত্ব দিয়ক"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰক"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"নতুন প্ৰ’ফাইল সৃষ্টি কৰক"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ফ\'ন কল কৰক"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"গাড়ীৰ ম’বাইল ডেটাৰ জৰিয়তে বার্তালাপ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"নতুন এপ্ ইনষ্টল কৰক"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"এপসমূহ আনইনষ্টল কৰক"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ব্যৱহাৰকাৰী যোগ কৰক"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"নতুন ব্যৱহাৰকাৰী"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"নতুন ব্যৱহাৰকাৰী যোগ কৰেনে?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"আপুনি যেতিয়া কোনো ব্য়ৱহাৰকাৰীক যোগ কৰে সেই ব্য়ক্তিজনে নিজৰ বাবে খালী ঠাই ছেট আপ কৰা প্ৰয়োজন।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"যিকোনো ব্য়ৱহাৰকাৰীয়ে সকলো ব্য়ৱহাৰকাৰীৰ বাবে এপসমূহ আপডে’ট কৰিব পাৰে।"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"অধিকতম ব্য়ৱহাৰকাৰী সৃষ্টি কৰা হ’ল"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">আপুনি <xliff:g id="COUNT">%d</xliff:g> জন পৰ্যন্ত ব্যৱহাৰকাৰী সৃষ্টি কৰিব পাৰে।</item>
-      <item quantity="other">আপুনি <xliff:g id="COUNT">%d</xliff:g> জন পৰ্যন্ত ব্যৱহাৰকাৰী সৃষ্টি কৰিব পাৰে।</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"প্ৰ’ফাইল যোগ দিয়ক"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"নতুন প্ৰ’ফাইল"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"নতুন প্ৰ’ফাইল যোগ দিবনে?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"আপুনি এটা নতুন প্ৰ’ফাইল যোগ দিলে সেই ব্যক্তিগৰাকীয়ে নিজৰ ঠাই ছেট আপ কৰা আৱশ্যক।"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"যিকোনো প্ৰ’ফাইলে অন্য আটাইবোৰ প্ৰ’ফাইলৰ বাবে এপ্‌ আপডে’ট কৰিব পাৰে।"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"প্ৰ’ফাইলৰ সীমাত উপনীত হৈছে"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">আপুনি <xliff:g id="COUNT">%d</xliff:g> টা পৰ্যন্ত প্ৰ’ফাইল সৃষ্টি কৰিব পাৰে।</item>
+      <item quantity="other">আপুনি <xliff:g id="COUNT">%d</xliff:g> টা পৰ্যন্ত প্ৰ’ফাইল সৃষ্টি কৰিব পাৰে।</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"নতুন ব্য়ৱহাৰকাৰী সৃষ্টি কৰিব পৰা নগ’ল"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"এই ব্যৱহাৰকাৰীক মচেনে?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"সকলো এপ্ আৰু ডেটা মচা হ’ব।"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ব্যৱহাৰকাৰীক মচিব পৰা নগ’ল।"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"নতুন প্ৰ’ফাইল সৃষ্টি কৰিব পৰা নগ’ল"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"এই প্ৰ’ফাইলটো মচিবনে?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"এই প্ৰ’ফাইলটোৰ আটাইবোৰ এপ্‌ আৰু ডেটা মচা হ’ব"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"প্ৰ’ফাইল মচিব পৰা নগ’ল।"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"আপুনি প্ৰ’ফাইল সলনি কৰিলে অথবা গাড়ীখন ৰিষ্টাৰ্ট কৰিলে এই প্ৰ’ফাইলটো মচা হ’ব।"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"অগ্ৰাহ্য কৰক"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"পুনৰায় চেষ্টা কৰক"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"অন্তিমজন ব্যৱহাৰকাৰীক মচেনে?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"এই গাড়ীখনৰ বাবে বাকী থকা একমাত্ৰ ব্যৱহাৰকাৰীজনক মচাৰ পিছত, এজন নতুন প্ৰশাসক ব্যৱহাৰকাৰী সৃষ্টি কৰা হ’ব।"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"এই ব্যৱহাৰকাৰীৰ লগত জড়িত সকলো ডেটা, ছেটিং আৰু এপ্ মচা হ’ব। আপুনি ছিষ্টেমটো আকৌ ছেট আপ কৰিব লাগিব।"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"অন্তিম একমাত্ৰ প্ৰ’ফাইলটো মচিবনে?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"যদি আপুনি এই বাহনখনৰ বাকী থকা একমাত্ৰ প্ৰ’ফাইলটো মচে তেন্তে প্ৰ’ফাইলটোৰ সৈতে জড়িত আটাইবোৰ ডেটা, ছেটিং আৰু এপ্‌ মচা হ’ব।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ৰিছেট কৰাৰ পাছত আপুনি এটা নতুন প্ৰ’ফাইল ছেট আপ কৰিব পাৰে।"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"নতুন প্ৰশাসক বাছনি কৰক"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"আপোনাক অতি কমেও এজন প্ৰশাসক দৰকাৰ। এইজনক মচিবলৈ হ’লে প্ৰথমে আপুনি এজন বিকল্প প্ৰশাসক নিৰ্বাচন কৰিব লাগিব।"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"প্ৰশাসক বাছনি কৰক"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"আপুনি (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"নাম"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ছেট আপ কৰা হোৱা নাই"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ব্যৱহাৰকাৰীৰ নাম সম্পাদনা কৰক"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"প্ৰ’ফাইলৰ নাম সম্পাদনা কৰক"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"খালী ঠাই পূৰ নকৰাকৈ এৰিব নোৱাৰি।"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"প্ৰদত্ত ব্যৱহাৰকাৰীৰ নাম মান্য নহয়।"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"দিয়া প্ৰ’ফাইলৰ নামটো মান্য নহয়।"</string>
     <string name="users_list_title" msgid="770764290290240909">"ব্যৱহাৰকাৰীসকল"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"প্ৰ’ফাইল"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sক অনুমতি প্ৰদান কৰা হ’ল"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ষ্ট’ৰেজ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"সংগীত আৰু ধ্বনি"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"অডিঅ’ ফাইলসমূহ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"গণনা কৰি থকা হৈছে…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"এপৰ আকাৰ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ব্যৱহাৰকাৰীৰ ডেটা"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"প্ৰ’ফাইলৰ ডেটা"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"কেশ্ব"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"মুঠ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ষ্ট’ৰেজ মচক"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ছিংক বাতিল কৰক"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ছিংকে সমস্যাৰ সন্মুখীন হৈছে। ই অলপ পিছতে ঠিক হ’ব।"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"গোপনীয়তা"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"গাড়ীৰ ডেটা"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"আপোনাৰ অৱস্থানলৈ এপৰ এক্সেছ নিয়ন্ত্ৰণ কৰক"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"মাইক্ৰ’ফ’ন"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"মাইক্ৰ’ফ’নলৈ এপৰ এক্সেছ নিয়ন্ত্ৰণ কৰক"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"গাড়ীৰ ডেটা"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"এই গাড়ীখনত ছেভ কৰি থোৱা কাৰ্যকলাপ আৰু তথ্য পৰিচালনা কৰক"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"আপোনাৰ প্ৰ’ফাইলটো মচক"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ইনফ’টেইনমেণ্ট ছিষ্টেমটোৰ পৰা আপোনাৰ প্ৰ’ফাইল আৰু একাউণ্ট মচক"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"আপোনাৰ প্ৰ’ফাইলত এই কাৰ্যটো উপলব্ধ নহয়"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"সুৰক্ষা"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"স্ক্ৰীণ লক"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"নাই"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ঠিক আছে"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"স্ক্ৰীণ লক আঁতৰাবনে?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"এই কাৰ্যই সকলোকে আপোনাৰ একাউণ্টৰ এক্সেছ দিব"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"প্ৰ’ফাইল লক"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"স্বয়ংক্ৰিয়ভাৱে আনলক কৰাৰ সুবিধা ছেট আপ কৰক"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"আপোনাৰ পিন দিয়ক"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"আপোনাৰ পাছৱৰ্ড দিয়ক"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"সুৰক্ষাৰ বাবে কোনো পিন ছেট কৰক"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>তকৈ কম সংখ্যক অংকৰ হ\'ব লাগিব"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"কেৱল ০-৯ৰ ভিতৰৰ অংকহে থাকিব লাগিব।"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ডিভাইচৰ প্ৰশাসকে শেহতীয়া পিন ব্যৱহাৰ কৰিব নিদিয়ে"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"আপোনাৰ আইটি প্ৰশাসকে উমৈহতীয়া পিনবোৰ অৱৰোধ কৰি থৈছে৷ বেলেগ পিন ব্য়ৱহাৰ কৰি চাওক৷"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"আপোনাৰ আইটি প্ৰশাসকে উমৈহতীয়া পিনবোৰ অৱৰোধ কৰি থৈছে৷ বেলেগ পিন ব্য়ৱহাৰ কৰি চাওক৷"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ইয়াত অমান্য় বৰ্ণ থাকিব নোৱাৰে।"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"অমান্য পাছৱর্ড, অতি কমেও ৪টা বর্ণ থাকিব লাগিব।"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ডিভাইচৰ প্ৰশাসকে শেহতীয়া পাছৱৰ্ড ব্যৱহাৰ কৰিব নিদিয়ে"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"পাছৱৰ্ড ছেভ কৰোঁতে আঁসোৱাহ"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"আইটি প্ৰশাসকে উমৈহতীয়া পাছৱৰ্ডসমূহ অৱৰোধ কৰি থৈছে। বেলেগ পাছৱৰ্ড ব্যৱাহৰ কৰি চাওক।"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"আইটি প্ৰশাসকে উমৈহতীয়া পাছৱৰ্ডসমূহ অৱৰোধ কৰি থৈছে। বেলেগ পাছৱৰ্ড ব্যৱাহৰ কৰি চাওক।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"সংখ্যাবোৰৰ ঊৰ্ধ্বগামী, অধোগামী বা পুনৰাবৃত্তি ক্ৰমক অনুমতি দিয়া নহয়।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্ৰীণ লক সম্পৰ্কীয় বিকল্প"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগত"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter কী"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ডেম\'ৰ পৰা বাহিৰ হওক"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ডেম\' ম\'ডৰ পৰা বাহিৰ হওক"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"এই কামে ডেম\' একাউণ্টটো মচি পেলাব আৰু ছিষ্টেমটোৰ ফেক্টৰী ডেটা ৰিছেট কৰিব। সকলো ব্যৱহাৰকাৰীৰ ডেটা হেৰাব।"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"এই কাৰ্যই ডেম’ একাউণ্টটো মচিব আৰু ছিষ্টেমটোৰ ফেক্টৰী ডেটা ৰিছেট কৰিব। প্ৰ’ফাইলৰ আটাইবোৰ ডেটা হেৰাব।"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ডেম\'ৰ পৰা বাহিৰ হওক"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"অগ্ৰাহ্য কৰক"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"গাড়ী চলাই থকা সময়ত এই সুবিধাটো উপলব্ধ নহয়"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"গাড়ী চলাই থকা সময়ত ব্য়ৱহাৰকাৰীক যোগ কৰিব নোৱাৰি"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"গাড়ী চলাই থকাৰ সময়ত প্ৰ’ফাইল যোগ দিব নোৱাৰি"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant আৰু কণ্ঠধ্বনি"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant এপ্‌"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"স্ক্ৰীনৰ পৰা পাঠ ব্যৱহাৰ কৰক"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Assistantক স্ক্ৰীনৰ সমল এক্সেছ কৰিবলৈ দিয়ক"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"স্ক্ৰীনশ্বট ব্যৱহাৰ কৰক"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Assistantক স্ক্ৰীনৰ প্ৰতিচ্ছবি এক্সেছ কৰিবলৈ দিয়ক"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"অলপতে পঠিওৱা"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"আটাইবোৰ এপ্‌"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"প্ৰ’ফাইল আৰু একাউণ্ট"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"অন্য প্ৰ’ফাইল পৰিচালনা কৰক"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"এটা প্ৰ’ফাইল যোগ দিয়ক"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"এই প্ৰ’ফাইলটো মচক"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"প্ৰ’ফাইল যোগ দিয়ক"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index f3ec3ab..226837a 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Displey"</string>
     <string name="brightness" msgid="2919605130898772866">"Parlaqlıq səviyyəsi"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptiv parlaqlıq"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Hazırkı işıq üçün parlaqlığı optimallaşdırın"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ekran parlaqlığını ətraf mühitə uyğunlaşdırın"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Gecə İşığı aktivdir"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, sensor ekran"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"solğun ekran, sensor ekran, batareya"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"solğun ekran, sensor ekran, batareya"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"solğun ekran, gecə, rəng"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gecə rejimi"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Şəbəkə və internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil şəbəkə"</string>
@@ -41,21 +37,21 @@
     <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Deaktiv / Endirilən SIM"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Daha çox əlavə edin"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil data"</string>
-    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil internetə giriş"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil şəbəkədən istifadə edərək dataya daxil olun"</string>
     <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil data söndürülsün?"</string>
     <string name="sim_selection_required_pref" msgid="6599562910262785784">"Seçim tələb olunur"</string>
     <string name="sim_change_data_title" msgid="6677115745127365131">"Mobil data üçün <xliff:g id="CARRIER">%1$s</xliff:g> istifadə edilsin?"</string>
     <string name="sim_change_data_message" msgid="4669775284395549069">"Mobil data üçün <xliff:g id="CARRIER2_0">%2$s</xliff:g> istifadə edirsiniz. <xliff:g id="CARRIER1">%1$s</xliff:g> operatoruna keçsəniz, <xliff:g id="CARRIER2_1">%2$s</xliff:g> artıq mobil data üçün istifadə olunmayacaq."</string>
     <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> istifadə edin"</string>
     <string name="roaming_title" msgid="6218635014519017734">"Rominq"</string>
-    <string name="roaming_summary" msgid="7476127740259728901">"Rouminq zamanı data xidmətinə qoşulun"</string>
-    <string name="roaming_alert_title" msgid="4433901635766775763">"Data rominqə icazə verilsin?"</string>
-    <string name="roaming_warning" msgid="4908184914868720704">"Rominq xərcləri arta bilər."</string>
+    <string name="roaming_summary" msgid="7476127740259728901">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
+    <string name="roaming_alert_title" msgid="4433901635766775763">"Data rouminqinə icazə verilsin?"</string>
+    <string name="roaming_warning" msgid="4908184914868720704">"Rominq xərcləri tutula bilər."</string>
     <string name="data_usage_settings" msgid="7877132994777987848">"Data istifadəsi"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"Əsas data"</string>
     <string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> istifadə edilib"</string>
-    <string name="cell_data_warning" msgid="8997739664336571149">"<xliff:g id="ID_1">^1</xliff:g> trafik xəbərdarlığı"</string>
-    <string name="cell_data_limit" msgid="6862164869877993009">"<xliff:g id="ID_1">^1</xliff:g> trafik limiti"</string>
+    <string name="cell_data_warning" msgid="8997739664336571149">"<xliff:g id="ID_1">^1</xliff:g> data xəbərdarlığı"</string>
+    <string name="cell_data_limit" msgid="6862164869877993009">"<xliff:g id="ID_1">^1</xliff:g> data limiti"</string>
     <string name="cell_data_warning_and_limit" msgid="5003954080814312475">"<xliff:g id="ID_1">^1</xliff:g> data xəbərdarlığı / <xliff:g id="ID_2">^2</xliff:g> data limiti"</string>
     <plurals name="billing_cycle_days_left" formatted="false" msgid="9163059632851951402">
       <item quantity="other">%d gün qalıb</item>
@@ -68,22 +64,26 @@
     <string name="carrier_and_update_now_text" msgid="9058821833613481573">"<xliff:g id="ID_1">^1</xliff:g> tərəfindən indicə güncəlləndi"</string>
     <string name="no_carrier_update_now_text" msgid="5953142546373783189">"İndi güncəlləşdirilib"</string>
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Plana baxın"</string>
-    <string name="app_data_usage" msgid="3878609885080232877">"Tətbiq trafiki"</string>
-    <string name="data_usage_app_restricted" msgid="4570970078120010951">"məhdud"</string>
-    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Statistika sıfırlanması"</string>
+    <string name="app_data_usage" msgid="3878609885080232877">"Tətbiq data istifadəsi"</string>
+    <string name="data_usage_app_restricted" msgid="4570970078120010951">"məhdudlaşdırılmış"</string>
+    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"İstifadə dövrü sıfırlanma tarixi"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Hər ayın tarixi:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Ayarlayın"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Data xəbərdarlığı və limiti"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"Tətbiq datasının istifadə tsikli"</string>
-    <string name="set_data_warning" msgid="6628236612886588097">"Xəbərdarlıq ayarlayın"</string>
-    <string name="data_warning" msgid="116776633806885370">"Trafik xəbərdarlığı"</string>
-    <string name="set_data_limit" msgid="7136539812414500084">"Trafik limiti ayarlayın"</string>
-    <string name="data_limit" msgid="227338836292511425">"Trafik limiti"</string>
-    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Trafikin limitlənməsi"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Data xəbərdarlığı ayarlayın"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data xəbərdarlığı"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Data limiti ayarlayın"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limiti"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Data istifadəsinə limit qoyulması"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Ayarladığınız limitə çatdıqda, avtomobilinizin idarə paneli mobil datanı söndürəcək.\n\nData istifadəsi idarə paneli tərəfindən ölçüldüyü və operatorun hesablaması fərqli ola bildiyi üçün uyğun limit ayarlamağınız tövsiyə olunur."</string>
-    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Trafik istifadəsi xəbərdarlığı"</string>
-    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Trafik limiti"</string>
+    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Data istifadə xəbərdarlığı ayarlayın"</string>
+    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Data istifadə limiti ayarlayın"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Ayarlayın"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM şəbəkəsi"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s arasında %1$d MB istifadə edilib"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Digər şəbəkəyə qoşulun"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Şəbəkə tərcihləri"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi yandırılır…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi söndürülür…"</string>
@@ -93,18 +93,20 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Şəbəkəyə qoşulmaq alınmadı"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Şəbəkə əlavə edin"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Qoşun"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Qoşulur…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Şəbəkənin əhatə dairəsində deyilsiniz"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parol"</string>
-    <string name="wifi_show_password" msgid="8423293211933521097">"Parol görünsün"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"Parolu göstərin"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Şəbəkə adı daxil edin"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Şəbəkə adı"</string>
     <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID daxil edin"</string>
-    <string name="wifi_security" msgid="158358046038876532">"Güvənlik"</string>
+    <string name="wifi_security" msgid="158358046038876532">"Təhlükəsizlik"</string>
     <string name="wifi_signal_strength" msgid="8507318230553042817">"Siqnal gücü"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Link sürəti"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Tezlik"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ünvanı"</string>
-    <string name="show_password" msgid="2074628020371139240">"Parol görünsün"</string>
+    <string name="show_password" msgid="2074628020371139240">"Parolu göstərin"</string>
     <string name="default_network_name_summary" msgid="8148402439232464276">"Şəbəkə adını daxil edin"</string>
     <string name="default_password_summary" msgid="8789594645836902982">"Parol daxil edin"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
@@ -126,10 +128,10 @@
     <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ünvanları"</string>
     <string name="wifi_gateway" msgid="4975799192860431013">"Şlüz"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi tərcihləri"</string>
-    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi avtomatik aktiv olsun"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Siqnalı keyfiyyətli olan saxlanmış şəbəkələr zonasında Wi-Fi aktivləşsin"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi\'ı avtomatik olaraq aktiv edin"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi daxili şəbəkə kimi saxlanmış keyfiyyətli şəbəkə yanında aktiv ediləcək"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Əlçatan deyil çünki məkan deaktivdir. "<annotation id="link">"Məkanı"</annotation>" aktiv edin."</string>
-    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi axtarışı aktiv olsun?"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi skanı aktiv edilsin?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktiv edin"</string>
     <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi skanı aktiv edildi"</string>
     <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Mobil dataya avtomatik keçin"</string>
@@ -151,8 +153,8 @@
     <string name="wifi_ap_2G" msgid="5364135697314262014">"2.4 GHz"</string>
     <string name="wifi_ap_5G" msgid="4945574428537860279">"5.0 GHz"</string>
     <string name="wifi_ap_band_select_one" msgid="615578175244067396">"Wi‑Fi hotspotu üçün azı bir diapazon seçin:"</string>
-    <string name="tether_settings_title_all" msgid="4663704772599383169">"Hotspot və modem rejimi"</string>
-    <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"Hotspot avtomatik deaktiv edilsin"</string>
+    <string name="tether_settings_title_all" msgid="4663704772599383169">"Hotspot və qoşulma"</string>
+    <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"Hotspotu avtomatik deaktiv edin"</string>
     <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"Heç bir cihaz qoşulu olmazsa, Wi‑Fi hotspot\'u deaktiv ediləcək"</string>
     <string name="wifi_ask_enable" msgid="4452418245680754578">"<xliff:g id="REQUESTER">%s</xliff:g> Wi‑Fi şəbəkəsini aktiv etmək istəyir"</string>
     <string name="wifi_ask_disable" msgid="2949290055916181553">"<xliff:g id="REQUESTER">%s</xliff:g> Wi‑Fi şəbəkəsini deaktiv etmək istəyir"</string>
@@ -167,7 +169,7 @@
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
     <string name="bluetooth_device" msgid="3178478829314083240">"Adsız cihaz"</string>
     <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Birləşdirilmiş cihazlar"</string>
-    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Cihaz əlavə edin"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Yeni cihaz birləşdirin"</string>
     <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth birləşmək üçün aktiv ediləcək"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Cihaz ayrılsın?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Nəqliyyat vasitənizin <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə bağlantısı ayrılacaq."</string>
@@ -190,12 +192,17 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Tətbiq əsas cihazı digər Bluetooth cihazları üçün <xliff:g id="TIMEOUT">%1$d</xliff:g> saniyə ərzində görünən etmək istəyir."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> Bluetooth\'u aktiv etmək və əsas cihazı digər cihazlar üçün <xliff:g id="TIMEOUT">%2$d</xliff:g> saniyə ərzində görünən etmək istəyir."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Tətbiq Bluetooth\'u aktiv etmək və əsas cihazı digər cihazlar üçün <xliff:g id="TIMEOUT">%1$d</xliff:g> saniyə ərzində görünən etmək istəyir."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Digər cihazlara %1$s olaraq görünür"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Cihazlarım"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Əvvəl qoşulmusunuz"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s qoşulub"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ayrılıb"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth birləşdirmə sorğusu"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"birləşdirin və əlaqə yaradın"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth birləşdirmə kodu"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN hərflər və ya simvollar ehtiva edir"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Birləşdirmə kodunu yazın, sonra Geriyə və ya Enter düyməsinə basın"</string>
-    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> əlavə edilsin?"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə cütləşdirilsin?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına kontaktlar və zəng tarixçənizə giriş icazəsi verin"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"Siz, həmçinin digər cihaza bu PIN kodu daxil etməli ola bilərsiniz."</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Siz bu əsas açarı digər cihazda da yazmalı ola bilərsiniz."</string>
@@ -210,11 +217,11 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Bütün dillər"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatura"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Klaviaturaları idarə edin"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"Mətnin səsləndirilməsi"</string>
-    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Defolt nitq sintezatoru"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Mətndən-nitqə daxiletmə"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Tərcih edilən mühərrik"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Cari mühərrik"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Nitq sürəti"</string>
-    <string name="tts_pitch" msgid="2389171233852604923">"Ton"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tembr"</string>
     <string name="tts_reset" msgid="6289481549801844709">"Sıfırlayın"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Səs"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Zəngin səs səviyyəsi"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Defolt bildiriş səsi"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Defolt zəngli saat səsi"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Yadda saxlayın"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Siqnal səsləri"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Zəng melodiyası, bildirişlər, siqnal"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Parlaqlıq"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ekran parlaqlığını zəif işığa uyğunlaşdırın"</string>
     <string name="units_settings" msgid="402325305096925886">"Vahidlər"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Sürət"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Məsafə"</string>
@@ -280,26 +291,32 @@
     <string name="all_applications" msgid="7798210477486822168">"Bütün tətbiqləri göstərin"</string>
     <string name="default_applications" msgid="1558183275638697087">"Defolt tətbiqlər"</string>
     <string name="app_permissions" msgid="32799922508313948">"Tətbiq icazələri"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> istifadə edən tətbiqlər"</string>
-    <string name="applications_settings" msgid="794261395191035632">"Tətbiq haqqında"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Dayandırılsın"</string>
-    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Dayandırılsın?"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Tətbiqin datanıza girişinə nəzarət edin"</string>
+    <string name="applications_settings" msgid="794261395191035632">"Tətbiq haqqında məlumat"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Məcburən dayansın"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Məcburi dayandırılsın?"</string>
     <string name="force_stop_dialog_text" msgid="4354954014318432599">"Tətbiqi məcburi dayandırsanız, o, düzgün işləməyə bilər."</string>
     <string name="disable_text" msgid="4358165448648990820">"Deaktiv edin"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktiv edin"</string>
     <string name="uninstall_text" msgid="277907956072833012">"Sistemdən silin"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Əgər bu tətbiqi deaktiv etsəniz, Android və digər tətbiqlər düzgün işlməyə bilər."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Tətbiqi deaktiv edin"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Bu istifadəçi üçün quraşdırılmayıb"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Bu profil üçün quraşdırılmayıb"</string>
     <string name="permissions_label" msgid="2701446753515612685">"İcazələr"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Bildirişlər"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Yaddaş və keş"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiya: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"İcazə verilməyib"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"İcazə sorğusu göndərilməyib"</string>
+    <string name="unused_apps" msgid="648471933781010395">"İstifadə olunmayan tətbiqlər"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> istifadə olunmayan tətbiq</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> istifadə olunmayan tətbiq</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"İcazələri silin və yer boşaldın"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"Daxili yaddaşda %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data istifadəsi"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Tətbiq trafiki"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Tətbiq data istifadəsi"</string>
     <string name="computing_size" msgid="5791407621793083965">"Hesablanır…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> əlavə icazə</item>
@@ -310,33 +327,41 @@
     <string name="assist_app_settings" msgid="9085261410166776497">"Yardım tətbiqi"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"Ekrandakı mətni istifadə edin"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"Yardım tətbiqinə ekran məzmunlarına mətn kimi daxil olmağa icazə verin"</string>
-    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Skrinşot istifadə edin"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Ani görüntü istifadə edin"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Yardım tətbiqinə ekrandakı şəkilə daxil olmağa icazə verin"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Səslə daxiletmə"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Avtodoldurma xidməti"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Yoxdur"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Seçilib"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"Asistent sisteminizdə istifadə olunan tətbiqlər haqqında məlumatı oxuya biləcək, bura ekranınızda görünən və ya tətbiqlər daxilində əlçatan olan məlumatlar da daxildir."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Bu tətbiqə etibar etdiyinizə əmin olun&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; nəyin avtomatik doldurula biləcəyini müəyyən etmək üçün ekrandakılardan istifadə edir."</string>
     <string name="autofill_add_service" msgid="6413893366443609951">"Xidmət əlavə edin"</string>
-    <string name="app_launch_domain_links_title" msgid="774480184927726651">"Linklərin açılması"</string>
+    <string name="app_launch_domain_links_title" msgid="774480184927726651">"Linkləri açmaq"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Quraşdırılmış tətbiqlər"</string>
-    <string name="domain_urls_summary_none" msgid="3077803215088293183">"Dəstəklənən linklər açılmasın"</string>
+    <string name="domain_urls_summary_none" msgid="3077803215088293183">"Dəstəklənən linkləri açmayın"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"<xliff:g id="DOMAIN">%s</xliff:g> linkini açın"</string>
     <string name="domain_urls_summary_some" msgid="5523153458016701725">"<xliff:g id="DOMAIN">%s</xliff:g> domenini və digər URL\'ləri açın"</string>
-    <string name="app_launch_title" msgid="3442601467010363057">"Defolt olaraq açılsın"</string>
+    <string name="app_launch_title" msgid="3442601467010363057">"Defolt olaraq açın"</string>
     <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"Digər defoltlar"</string>
     <string name="auto_launch_disable_text" msgid="3595315315092716391">"Defolt ayarlanmayıb."</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"Bu tətbiqin defolt olaraq bəzi əməliyyatlar üçün işə salınmasını seçmisiniz."</string>
     <string name="auto_launch_reset_text" msgid="590439611312092392">"Defoltları təmizləyin"</string>
-    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Dəstəklənən linklər açılsın"</string>
+    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Dəstəklənən linkləri açın"</string>
     <string name="app_link_open_always" msgid="5783167184335545230">"Bu tətbiqdə açın"</string>
-    <string name="app_link_open_ask" msgid="7242075065136237456">"Həmişə soruşulsun"</string>
+    <string name="app_link_open_ask" msgid="7242075065136237456">"Hər dəfə soruşun"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Bu tətbiqdə açmayın"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Dəstəklənən linklər"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Tətbiqlər"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Ən son açılan"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Bütün %1$d tətbiqə baxın"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"İcazə meneceri"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Tətbiqin datanıza girişinə nəzarət edin"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistent və daha çoxu üçün"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Sistem və digər ayarlara"</string>
     <string name="special_access" msgid="5730278220917123811">"Xüsusi tətbiq girişi"</string>
     <string name="show_system" msgid="4401355756969485287">"Sistemi göstərin"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sistemi gizlədin"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sistem tətbiqlərini gizlədin"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Sistem ayarlarını dəyişin"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Bu icazə tətbiqə sistem ayarlarını dəyişdirməyə imkan verir."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Bildiriş girişi"</string>
@@ -348,7 +373,7 @@
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Premium SMS girişi"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS müəyyən məbləğ tuta bilər və mobil operator fakturasına əlavə oluna bilər. Tətbiq üçün icazəni aktiv etsəniz, həmin tətbiqdən istifadə edərək, Premium SMS göndərə biləcəksiniz."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"İstifadə girişi"</string>
-    <string name="usage_access_description" msgid="2413168719257435422">"İstifadə girişi işlədilən tətbiqləri və müntəzəmliyi izləyir, operatoru, dili və digər parametrləri müəyyən edir."</string>
+    <string name="usage_access_description" msgid="2413168719257435422">"İstifadə girişi başqa istifadə etdiyiniz tətbiqləri və istifadə tezliyini, həmçinin, operator, dil ayarları və digər detalları izləməyə imkan verir."</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi idarəetməsi"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi idarəetməsi tətbiqə Wi-Fi şəbəkəsini aktiv və ya deaktiv etmək, Wi-Fi şəbəkələrini skan etmək və onlara qoşulmaq, şəbəkə əlavə etmək və ya silmək, yaxud yalnız lokal olan hotspota qoşulmaq imkanı verir."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"Daha çox"</string>
@@ -357,15 +382,20 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Məkan sorğusu yoxdur"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tətbiq səviyyəsi icazələri"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Məkan Xidmətləri"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Məkandan istifadə edin"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Sistem yenilənməsi"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Qabaqcıl"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Haqqında, hüquqi məlumat, sıfırlama və daha çoxu"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versiyası"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android təhlükəsizlik gücləndirmə səviyyəsi"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model və avadanlıq"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"Model: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband versiyası"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel versiyası"</string>
-    <string name="build_number" msgid="3997326631001009102">"Montaj nömrəsi"</string>
+    <string name="build_number" msgid="3997326631001009102">"Versiya nömrəsi"</string>
     <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth ünvanı"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Əlçatan deyil"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
@@ -379,7 +409,7 @@
     <string name="contributors_title" msgid="7698463793409916113">"Töhfəçilər"</string>
     <string name="manual" msgid="4819839169843240804">"Təlimat"</string>
     <string name="regulatory_labels" msgid="3165587388499646779">"Tənzimləyici etiketlər"</string>
-    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Güvənlik və tənzimləmə bələdçisi"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Təhlükəsizlik və tənzimləyici təlimat"</string>
     <string name="copyright_title" msgid="4220237202917417876">"Müəllif hüququ"</string>
     <string name="license_title" msgid="936705938435249965">"Lisenziya"</string>
     <string name="terms_title" msgid="5201471373602628765">"Şərtlər və qaydalar"</string>
@@ -416,20 +446,21 @@
     <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Bütün şəbəkə ayarları sıfırlansın? Bu əməliyyatı geri qaytara bilməzsiniz!"</string>
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ayarları sıfırlayın"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Şəbəkə ayarları sıfırlandı"</string>
-    <string name="reset_app_pref_title" msgid="5855420038951743992">"Tətbiq tərcihləri sıfırlansın"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Tətbiq seçimlərini sıfırlayın"</string>
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Bu, aşağıdakılar üçün bütün tərcihləri sıfırlayacaq:\n\n"<li>" Deaktiv edilmiş tətbiqlər"</li>\n<li>"Deaktiv edilmiş tətbiq bildirişləri"</li>\n<li>"Əməliyyatlar üçün defolt tətbiqlər"</li>\n<li>"Tətbiqlər üçün arxa fon məlumatlarının məhdudlaşdırılması"</li>\n<li>"İstənilən icazə məhdudiyyətləri"</li>\n\n"Hər hansı tətbiq məlumatını itirməyəcəksiniz."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tətbiqləri sıfırla"</string>
-    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Tətbiq tərcihləri sıfırlanıb"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Bütün datanı silin (fabrika sıfırlaması)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Bu, avtomobilin əsas blokundakı bütün datanı siləcək, bura daxildir:\n\n"<li>"Google Hesabınız"</li>\n<li>"Sistem və tətbiq datası və ayarları"</li>\n<li>"Endirilmiş tətbiqlər"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Hazırda bu hesablara daxil olmusunuz:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu avtomobildə başqa istifadəçilər mövcuddur."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Avtomobili sıfırlayın"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Sıfırlansın?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Bütün şəxsi məlumatlarınız və endirilmiş tətbiqlər silinsin? Bu əməliyyatı geri qaytara bilməyəcəksiniz!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hər şeyi silin"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Silinir"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lütfən, gözləyin..."</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Tətbiq seçimləri sıfırlanıb"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Bütün datanı silin (zavod sıfırlaması)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Məlumat-əyləncə sistemindəki bütün data və profilləri silin"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Bu, avtomobilin məlumat-əyləncə sistemindəki bütün datanı, eləcə də bunları siləcək:\n\n"<li>"Google Hesabınız"</li>\n<li>"Sistem və tətbiq datası və ayarları"</li>\n<li>"Endirilmiş tətbiqlər"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Hazırda bu hesablara daxil olmusunuz:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Bu avtomobildə başqa profillər mövcuddur."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Bütün datanı silin"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Bütün data silinsin?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Bu, məlumat-əyləncə sistemindəki bütün şəxsi profil məlumatlarınızı, hesablarınızı və endirilmiş tətbiqləri siləcək.\n\nBu əməliyyatı geri qaytara bilməzsiniz."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Hər şeyi silin"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Silinir"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Gözləyin..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarix və vaxt"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tarix, vaxt, vaxt zonası və formatları təyin edin"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Avtomatik tarix və vaxt"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"İnzibatçı kimi daxil olunub"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Bütün admin icazələri"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Admin edin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"İstifadəçi Adminlər daxil olmaqla istifadəçiləri silə və sistemi zavod ayarlarına qaytara biləcək."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil digər Adminlər daxil olmaqla profilləri silə və sistemdə zavod sıfırlaması edə biləcək."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Bu əməliyyat geri qaytarıla bilməz."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Bəli, admin edin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Yeni istifadəçilər yaradın"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Yeni profillər yaradın"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefon zəngləri edin"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Maşının mobil datası ilə mesajlaşma"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Yeni tətbiqlər quraşdırın"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Tətbiqləri ləğv edin"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"İstifadəçi əlavə edin"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni istifadəçi"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Yeni istifadəçi əlavə edilsin?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni istifadəçi əlavə etdiyinizdə həmin şəxs öz yerini təyin etməlidir."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"İstənilən istifadəçi digər bütün istifadəçilər üçün tətbiqləri güncəlləyə bilər."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"İstifadəçi limitinə çatmısınız"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sayda istifadəçiyə qədər yarada bilərsiniz.</item>
-      <item quantity="one">Yalnız bir istifadəçi yaradıla bilər.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profil əlavə edin"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Yeni profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Yeni profil əlavə edilsin?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Yeni profil əlavə etdiyinizdə həmin şəxs öz yerini təyin etməlidir."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"İstənilən profil digər bütün profillər üçün tətbiqləri güncəlləyə bilər."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profil limitinə çatmısınız"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Maksimum <xliff:g id="COUNT">%d</xliff:g> profil yarada bilərsiniz.</item>
+      <item quantity="one">Yalnız bir profil yaradıla bilər.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Yeni istifadəçi yaradılmadı"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Bu istifadəçi silinsin?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Bütün tətbiqlər və data silinəcək."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"İstifadəçi silinmədi"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Yeni profil yaratmaq alınmadı"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Bu profil silinsin?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Bu profildəki bütün tətbiqlər və data silinəcək"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profili silmək alınmadı."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Bu profil profilləri dəyişdirdikdə və ya nəqliyyat vasitəsini yenidən başlatdıqda silinəcək."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Silin"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Yenidən cəhd edin"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Son istifadəçi silinsin?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu avtomobil üçün qalan yeganə istifadəçini sildikdən sonra yeni admin istifadəçi yaradılacaq."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu istifadəçi ilə əlaqələndirilmiş bütün verilənlər, ayarlar və tətbiqlər silinəcək. Sistemi yenidən quraşdırmalı olacaqsınız."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Qalan son profil silinsin?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Bu avtomobil üçün qalan bir profili silsəniz, bu profil ilə əlaqəli bütün data, ayarlar və tətbiqlər silinəcəkdir."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Sıfırladıqdan sonra yeni profil ayarlaya bilərsiniz."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Yeni admin seçin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Ən azı bir admininiz olmalıdır. Bunu silmək üçün ilk növbədə əvəzləyici seçin."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Admin seçin"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ad"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Quraşdırılmayıb"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"İstifadəçi adını redaktə edin"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profil adını redaktə edin"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Sahə boş ola bilməz."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Daxil edilən istifadəçi adı yanlışdır."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Daxil edilmiş profil adı yanlışdır."</string>
     <string name="users_list_title" msgid="770764290290240909">"İstifadəçilər"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profillər"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s üçün verilmiş icazələr"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Yaddaş"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musiqi və audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio fayllar"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Hesablanır…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Tətbiq ölçüsü"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"İstifadəçi datası"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profil datası"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Keş"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Yekun"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Yaddaşı təmizləyin"</string>
@@ -528,15 +561,15 @@
     <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"Məhdudlaşdırılmış profillər hesablar əlavə edə bilməz"</string>
     <string name="remove_account_title" msgid="8840386525787836381">"Hesabı silin"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Hesab silinsin?"</string>
-    <string name="really_remove_account_message" msgid="4296769280849579900">"Bu hesaba aid bütün mesajlar, kontaktlar və digər məlumatlar cihazdan silinəcək."</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"Bu hesabın silinməsi bütün mesajları, kontaktları və digər datanı cihazdan siləcək!"</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"Hesab silinmədi."</string>
     <string name="account_sync_title" msgid="6541844336300236915">"Hesab sinxronizasiyası"</string>
-    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinxronizasiya <xliff:g id="ID_2">%2$d</xliff:g> elementdən <xliff:g id="ID_1">%1$d</xliff:g> element üçün aktivdir"</string>
-    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinxronizasiya bütün elementlər üçün aktivdir"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinxronizasiya <xliff:g id="ID_2">%2$d</xliff:g> elementin <xliff:g id="ID_1">%1$d</xliff:g> elementi üçün aktivdir"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Bütün elementlər üçün sinxronizasiya aktivdir"</string>
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Bütün elementlər üçün sinxronizasiya deaktivdir"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Sinxronizasiya deaktivdir"</string>
     <string name="sync_error" msgid="6698021343089247914">"Sinxronizasiya xətası"</string>
-    <string name="last_synced" msgid="4745124489150101529">"Son sinxronizasiya <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Son sinxronlaşdırma <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="1237573373537382416">"İndi sinxronlaşdırılır…"</string>
     <string name="sync_one_time_sync" msgid="491707183321353107">"İndi sinxronlaşdırmaq üçün tıklayın<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
@@ -544,10 +577,19 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Sinxronizasiyanı ləğv edin"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Hazırda sinxronizasiyada problemlər var. Bir azdan düzələcək."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Məxfilik"</string>
-    <string name="security_settings_title" msgid="6955331714774709746">"Güvənlik"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Avtomobil datası"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Məkanınıza tətbiqin girişinə nəzarət edin"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Tətbiqin mikrofona girişinə nəzarət edin"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Avtomobil datası"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Bu avtomobildə saxlanmış fəaliyyətlər və məlumatları idarə edin"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Profilinizi silin"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Məlumat-əyləncə sistemindən profil və hesablarınızı silin"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Bu əməliyyat profiliniz üçün əlçatan deyil"</string>
+    <string name="security_settings_title" msgid="6955331714774709746">"Təhlükəsizlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran kilidi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Yoxdur"</string>
-    <string name="security_lock_pattern" msgid="1174352995619563104">"Qrafik açar"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"Model"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parol"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Kilid növü seçin"</string>
@@ -567,10 +609,10 @@
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Silin"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Ləğv edin"</string>
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Yeni sxem kilidiniz"</string>
-    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Qrafik açar çəkin"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Sxem kilidi çizin"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Ediləndən sonra barmağı götürün"</string>
-    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Qrafik açar qeyd edildi"</string>
-    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Qrafik açarı təkrar çəkin"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Model qeyd edildi"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Təsdiq üçün modeli yenidən çəkin"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"Ən azı 4 rəqəmi birləşdirin. Yenidən sınayın."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"Yanlış model"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"Sxem kilidini necə çəkməli"</string>
@@ -579,19 +621,21 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Ekran kilidi ləğv edilsin?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Bu, hər kəsə hesabınıza daxil olmaq imkanı verəcək"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profil kilidi"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Avtomatik kiliddən çıxarma ayarlayın"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN kodu daxil edin"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Şifrənizi daxil edin"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Təhlükəsizlik üçün PIN kod təyin edin"</string>
-    <string name="confirm_your_pin_header" msgid="9096581288537156102">"PIN-i təkrar daxil edin"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"PIN kodu yenidən daxil edin"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN ən az 4 rəqəmdən ibarət olmalıdır"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pın kod yanlışdır, ən azı 4 rəqəm olmalıdır."</string>
-    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN-lər eyni deyil"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN kodlar uyğun gəlmir"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"PIN kodu saxlamaqla bağlı problem var"</string>
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"Yanlış PIN"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"Yanlış parol"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"Təhlükəsizlik üçün parol təyin edin"</string>
-    <string name="confirm_your_password_header" msgid="7052891840366724938">"Parolu təkrar daxil edin"</string>
-    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Parollar eyni deyil"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"Parolunuzu yenidən daxil edin"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Parollar uyğun gəlmir"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"Silin"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Ləğv edin"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Təsdiq edin"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> rəqəmdən az olmalıdır"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Yalnız 0-9 aralığında olmalıdır."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Cihaz admini son vaxtlardakı PIN kodu istifadə etməyə icazə vermir"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Ümumi PIN kodlar IT admini tərəfindən blok edilib. Fərqli PIN kod sınayın."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Ümumi PIN kodlar IT admini tərəfindən blok edilib. Fərqli PIN kod sınayın."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Yalnış simvol daxil edə bilməzsiniz"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Parol yanlışdır, ən azı 4 simvol olmalıdır."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,11 +675,11 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Cihaz admini son vaxtlardakı parolu istifadə etməyə icazə vermir"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Parolu saxlamaqla bağlı problem var"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Ümumi parollar IT admini tərəfindən blok edilib. Fərqli parolu sınayın."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Ümumi parollar IT admini tərəfindən blok edilib. Fərqli parolu sınayın."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan və ya təkrarlanan rəqəm ardıcıllığı qadağandır."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçimləri"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün əvvəl"</string>
-    <string name="credentials_reset" msgid="873900550885788639">"Kimlik bilgilərini silin"</string>
+    <string name="credentials_reset" msgid="873900550885788639">"Giriş məlumatlarını silin"</string>
     <string name="credentials_reset_summary" msgid="6067911547500459637">"Bütün sertifikatları silin"</string>
     <string name="credentials_reset_hint" msgid="3459271621754137661">"Bütün məzmun silinsin?"</string>
     <string name="credentials_erased" msgid="2515915439705550379">"Giriş məlumatları yaddaşı silindi."</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter düyməsi"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Demodan çıxın"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo rejimdən çıxın"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bu, demo hesabı siləcək və sistemi istehsalçı nizamlarına qaytaracaq."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Bu, demo hesabını siləcək və sistemi istehsalçı nizamlarına qaytaracaq. Bütün profil datası itəcək."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan çıxın"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"RƏDD EDİN"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funksiya avtomobil idarə edərkən əlçatan deyil"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Avtomobil idarə edərkən istifadəçi əlavə etmək mümkün deyil"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Avtomobil idarə edərkən profil əlavə etmək mümkün deyil"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Axtarış"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent və səs"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent tətbiqi"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Ekrandakı mətni istifadə edin"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Assistentin ekran məzmununa girişinə icazə verin"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Skrinşot istifadə edin"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Assistentin ekran şəklinə girişinə icazə verin"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Ən son göndərilənlər"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Bütün tətbiqlər"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profillər və hesablar"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Digər profilləri idarə edin"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Profil əlavə edin"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Bu profili silin"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profil əlavə edin"</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 588643c..c2c5bd6 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekran"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivo osvetljenosti"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prilagodljiva osvetljenost"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizuj nivo osvetljenosti prema dostupnom svetlu"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Prilagodite osvetljenje ekrana okruženju"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Noćno svetlo je uključeno"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, dodirni ekran"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"zatamniti ekran, dodirni ekran, baterija"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamniti ekran, dodirni ekran, baterija"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamniti ekran, noć, nijansa"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni režim"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Podesite upozorenje o potrošnji podataka"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Podesite ograničenje potrošnje podataka"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Podesi"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Mreža proizvođača originalne opreme"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"U periodu %2$s– %3$s iskorišćeno je %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Pridruži me drugoj mreži"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Podešavanja mreže"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WiFi se uključuje..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi se isključuje..."</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje sa mrežom nije uspelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži se"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Povezuje se…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Mreža nije u dometu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lozinka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži lozinku"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Unesite naziv mreže"</string>
@@ -129,7 +131,7 @@
     <string name="wifi_gateway" msgid="4975799192860431013">"Mrežni prolaz"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Podešavanja Wi‑Fi-ja"</string>
     <string name="wifi_wakeup" msgid="7451825226044542000">"Automatski uključi Wi‑Fi"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"WiFi će se ponovo uključiti u  blizini sačuvanih mreža visokog kvaliteta, kao što je kućna mreža"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi će se ponovo uključiti u blizini sačuvanih mreža visokog kvaliteta, kao što je kućna mreža"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nije dostupno jer je lokacija isključena. Uključite "<annotation id="link">"lokaciju"</annotation>"."</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Želite li da uključite WiFi skeniranje?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Uključi"</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikacija želi da učini glavnu jedinicu vidljivom za druge Bluetooth uređaje na <xliff:g id="TIMEOUT">%1$d</xliff:g> sek."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> želi da uključi Bluetooth i učini glavnu jedinicu vidljivom za druge uređaje na <xliff:g id="TIMEOUT">%2$d</xliff:g> sek."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikacija želi da uključi Bluetooth i učini glavnu jedinicu vidljivom za druge uređaje na <xliff:g id="TIMEOUT">%1$d</xliff:g> sek."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Drugi uređaji ga vide kao %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moji uređaji"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Prethodno povezano"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Povezano: %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Prekinuta je veza: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtev za Bluetooth uparivanje"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kôd za uparivanje sa Bluetooth uređajem"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Podrazumevani zvuk obaveštenja"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Podrazumevani zvuk alarma"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Sačuvaj"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvukovi obaveštenja"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Melodija zvona, obaveštenja, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Osvetljenost"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Prilagodite ekran slabom osvetljenju"</string>
     <string name="units_settings" msgid="402325305096925886">"Jedinice"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Brzina"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Razdaljina"</string>
@@ -282,7 +293,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Prikaži sve aplikacije"</string>
     <string name="default_applications" msgid="1558183275638697087">"Podrazumevane aplikacije"</string>
     <string name="app_permissions" msgid="32799922508313948">"Dozvole za aplikacije"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacije u kojima se koristi <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrolišu pristup aplikacija podacima"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
     <string name="force_stop" msgid="2153183697014720520">"Prinudno zaustavi"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Želite li da prinudno zaustavite?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite ovu aplikaciju, Android i druge aplikacije možda više neće raditi ispravno."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nije instalirano za ovog korisnika"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nije instalirano za ovaj profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dozvole"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Obaveštenja"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Memorijski prostor i keš"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nijedna dozvola nije odobrena"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nijedna dozvola nije zahtevana"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplikacije koje se ne koriste"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> aplikacija koja se ne koristi</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> aplikacije koje se ne koriste</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplikacija koje se ne koriste</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ukloni dozvole i oslobodi prostor"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s u internoj memoriji"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Potrošnja podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Potrošnja podataka apl."</string>
@@ -337,15 +355,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Uvek pitaj"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne otvaraj u ovoj aplikaciji"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podržani linkovi"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacije"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedavno otvoreno"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Prikaži sve aplikacije (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Menadžer dozvola"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrolišu pristup aplikacija podacima"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Za Pomoćnik i drugo"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Za sistem i druga podešavanja"</string>
     <string name="special_access" msgid="5730278220917123811">"Poseban pristup aplikaciji"</string>
     <string name="show_system" msgid="4401355756969485287">"Prikaži sistemske"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sakrij sistemske"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sakrij sistemske aplikacije"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Izmenite podešavanja sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Ova dozvola omogućava aplikaciji da menja podešavanja sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Pristup obaveštenjima"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Želite li da dozvolite da <xliff:g id="SERVICE">%1$s</xliff:g> ima pristup obaveštenjima?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> će moći da čita sva obaveštenja, uključujući lične podatke, poput imena kontakata i teksta poruka koje primate. Moći će i da odbacuje obaveštenja ili da koristi dugmad za radnje koja sadrže. \n\nOvo će aplikaciji omogućiti i da uključuje ili isključuje režim Ne uznemiravaj i menja srodna podešavanja."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ako isključite pristup obaveštenjima za <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, možda ćete isključiti i pristup režimu Ne uznemiravaj."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ako isključite pristup obaveštenjima za korisnika <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, možda ćete isključiti i pristup režimu Ne uznemiravaj."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Isključi"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Otkaži"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Pristup premijum SMS-ovima"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahteva za lokaciju"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dozvole na nivou aplikacija"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Koristi lokaciju"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Napredno"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Osnovni podaci, pravne informacije, resetovanje i drugo"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzija Android-a"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivo bezbednosne zakrpe za Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model i hardver"</string>
@@ -393,7 +424,7 @@
     <string name="status_serial_number" msgid="9158889113131907656">"Serijski broj"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"Verzija hardvera"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
-    <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence trećih strana"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence treće strane"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Došlo je do problema pri učitavanju licenci."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Učitava se…"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Ovim ćete resetovati sva podešavanja za:\n\n"<li>"Onemogućene aplikacije"</li>\n<li>"Obaveštenja o onemogućenim aplikacijama"</li>\n<li>"Podrazumevane aplikacije za radnje"</li>\n<li>"Ograničenja za pozadinske podatke za aplikacije"</li>\n<li>"Sva ograničenja za dozvole"</li>\n\n"Nećete izgubiti nikakve podatke aplikacije."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetuj aplikacije"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Podešavanja aplikacija su resetovana"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Obriši sve podatke (fabrička podešavanja)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Ovim brišete sve podatke iz interne memorije vozila, uključujući:\n\n"<li>"Google nalog"</li>\n<li>"podatke i podešavanja sistema i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni na sledeće naloge:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"U ovom vozilu su prisutni i drugi korisnici."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetuj vozilo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Želite li da resetujete?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite li da obrišete sve lične podatke i preuzete aplikacije? Ne možete da opozovete ovu radnju!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Briše se"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sačekajte..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Obriši sve podatke (fabrička podešavanja)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Obriši sve podatke i profile iz sistema za info-zabavu"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Ovim brišete sve podatke iz sistema za info-zabavu vozila, uključujući:\n\n"<li>"Google nalog"</li>\n<li>"podatke i podešavanja sistema i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Trenutno ste prijavljeni na sledeće naloge:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"U ovom vozilu su prisutni i drugi profili."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Obriši sve podatke"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Obrisaćete sve podatke?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ovim brišete sve podatke ličnog profila, naloge i preuzete aplikacije u ovom sistemu za info-zabavu.\n\nOva radnja ne može da se opozove."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Obriši sve"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Briše se"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Sačekajte…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vreme"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Podesite datum, vreme, vremensku zonu i formate"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatski datum i vreme"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sve dozvole za administratora"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Postavi za administratora"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći da briše korisnike, uključujući ostale administratore, i da resetuje sistem na fabrička podešavanja."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil će moći da briše profile, uključujući druge administratore, i da resetuje sistem na fabrička podešavanja."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ova radnja ne može da se opozove."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, postavi za administatora"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Napravite nove korisnike"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Pravi nove profile"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Pozivajte"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS preko mobilnih podataka auta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalirajte nove aplikacije"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstalirajte aplikacije"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodajete novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba da podesi svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može da ažurira aplikacije za sve ostale korisnike."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dostignut maksimalni broj korisnika"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="few">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="other">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Dodajte profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Novi profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Želite da dodate novi profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kada dodate novi profil, ta osoba treba da podesi svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Svaki profil može da ažurira aplikacije za sve ostale profile."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Dostignut maksimalan broj profila"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="few">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> profila.</item>
+      <item quantity="other">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> profila.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Pravljenje novog korisnika nije uspelo"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Želite da izbrišete ovog korisnika?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sve aplikacije i podaci će biti izbrisani."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspelo."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Pravljenje novog profila nije uspelo"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Želite da izbrišete ovaj profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Izbrisaćete sve aplikacije i podatke za ovaj profil"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Brisanje profila nije uspelo."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ovaj profil se briše kada pređete na drugi profil ili restartujete vozilo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Probaj ponovo"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Želite da izbrišete poslednjeg korisnika?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Novi administrator će se napraviti kada izbrišete jedinog preostalog korisnika za ovaj automobil."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Izbrisaće se svi podaci, podešavanja i aplikacije koji su povezani sa ovim korisnikom. Moraćete da podesite sistem ponovo."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Izbrisaćete poslednji preostali profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ako izbrišete jedini preostali profil za ovo vozilo, svi podaci, podešavanja i aplikacije povezani sa ovim profilom će biti obrisani."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Posle resetovanja možete da podesite novi profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Odaberite novog administratora"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Treba vam najmanje jedan administrator. Da biste izbrisali ovog, prvo odaberite zamenu."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije podešeno"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Izmenite ime korisnika"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Izmenite naziv profila"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Polje ne sme da bude prazno."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Korisničko ime koje ste uneli je nevažeće."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Uneseno ime profila je nevažeće."</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Dozvola je data korisniku %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Memorijski prostor"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzika i audio"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio datoteke"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Izračunava se…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Veličina aplikacije"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Podaci korisnika"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Podaci profila"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Keš"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Ukupno"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Obriši memorijski prostor"</string>
@@ -522,7 +556,7 @@
     <string name="no_accounts_added" msgid="5148163140691096055">"Nijedan nalog nije dodat"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Nalozi za korisnika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
     <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatski sinhronizuj podatke"</string>
-    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Omogućava aplikacijama da automatski osvežavaju podatke"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Omogući aplikacijama da automatski osvežavaju podatke"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Uključiti autom. sinh. podataka?"</string>
     <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Sve promene koje unesete na naloge na vebu će automatski biti kopirane na uređaj.\n\nNeki nalozi mogu i automatski da kopiraju na veb sve promene koje unesete na telefonu. Tako funkcioniše Google nalog."</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Isključiti autom. sinh. podataka?"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinhronizaciju"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinhronizacija trenutno ima problema. Uskoro će se nastaviti."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatnost"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Podaci o vozilu"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrolišite pristup aplikacija lokaciji"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontroliše pristup aplikacija mikrofonu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Podaci o vozilu"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Upravljajte aktivnostima i informacijama sačuvanim u ovom vozilu"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Izbrišite profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Obrišite profil i naloge iz sistema za info-zabavu"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ova radnja nije dostupna za profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Bezbednost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje ekrana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nema"</string>
@@ -574,7 +617,7 @@
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Novi šablon za otključavanje"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Nacrtajte šablon za otključavanje"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Podignite prst kada završite"</string>
-    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Šablon je zapamćen"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Šablon je snimljen"</string>
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Ponovo nacrtajte šablon da biste potvrdili"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"Povežite bar 4 tačke. Probajte ponovo."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"Pogrešan šablon"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"Potvrdi"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Uklonićete zaključavanje ekrana?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Tada će svako moći da pristupi vašem nalogu"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zaključavanje profila"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Podesite automatsko otključavanje"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Unesite PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Unesite lozinku"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Podesite PIN iz bezbednosnih razloga"</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Maksimalan broj cifara je <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Mora da sadrži samo cifre 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administrator uređaja ne dozvoljava upotrebu nedavno korišćenog PIN-a"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT administrator blokira česte PIN-ove. Izaberite drugi PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT administrator blokira česte PIN-ove. Izaberite drugi PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Ne sme da obuhvata nevažeći znak."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Lozinka je nevažeća, mora da sadrži najmanje 4 znaka."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administrator uređaja ne dozvoljava upotrebu nedavno korišćene lozinke"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Greška pri čuvanju lozinke"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT administrator blokira česte lozinke. Izaberite drugu lozinku."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT administrator blokira česte lozinke. Izaberite drugu lozinku."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Rastući, opadajući ili ponovljeni niz cifara nije dozvoljen."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pre <xliff:g id="NUM_DAYS">%3$s</xliff:g> dan(a)"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Taster Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Napustite režim demonstr."</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Da napustite režim demonstracije"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ovim ćete izbrisati nalog za demonstracije i resetovati sistem na fabrička podešavanja. Svi podaci korisnika će biti izgubljeni."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ovim ćete izbrisati nalog za demonstracije i resetovati sistem na fabrička podešavanja. Svi podaci profila će biti izgubljeni."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Napusti režim demonstr."</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcija nije dostupna tokom vožnje"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Ne možete da dodajete korisnike tokom vožnje"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Ne možete da dodate profil tokom vožnje"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Pretražite"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Pomoćnik i glas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacija Pomoćnik"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Koristi tekst sa ekrana"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Dozvolite Pomoćniku da pristupa sadržaju ekrana"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Koristi snimak ekrana"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Dozvolite Pomoćniku da pristupa slici ekrana"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedavno poslato"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Sve aplikacije"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili i nalozi"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Upravljajte drugim profilima"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Dodaj profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Izbriši ovaj profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Dodajte profil"</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 409cf2c..b9030b6 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Дысплэй"</string>
     <string name="brightness" msgid="2919605130898772866">"Узровень яркасці"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Адаптыўная яркасць"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Аптымізаваць узровень яркасці ў залежнасці ад асвятлення"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Карэкціраваць яркасць экрана з улікам наваколля"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Начная падсветка ўключана"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"экран, сэнсарны экран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"зацемнены экран, сэнсарны экран, акумулятар"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"зацемнены экран, сэнсарны экран, акумулятар"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"зацемнены экран, ноч, адценне"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Начны рэжым"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Сетка і інтэрнэт"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мабільная сетка"</string>
@@ -38,9 +34,9 @@
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карты</item>
     </plurals>
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"Актывавана / SIM-карта"</string>
-    <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Не актывавана / SIM-карта"</string>
+    <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактывавана / SIM-карта"</string>
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"Актывавана / Спампаваная SIM-карта"</string>
-    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Не актывавана / Спампаваная SIM-карта"</string>
+    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактывавана / Спампаваная SIM-карта"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Дадаць яшчэ"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мабільная перадача даных"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ да даных па мабільнай сетцы"</string>
@@ -83,11 +79,15 @@
     <string name="data_warning" msgid="116776633806885370">"Папярэджанне пра ліміт трафіка"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"Задаць ліміт трафіка"</string>
     <string name="data_limit" msgid="227338836292511425">"Ліміт трафіка"</string>
-    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Абмежаванне выкарыстання трафіка"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Абмежаванне выкарыстання даных"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Пасля дасягнення вызначанага ліміту трафіка галаўная прылада аўтамабіля выключыць мабільную перадачу даных.\n\nПаколькі метады разліку выкарыстання трафіка галаўной прыладай і аператарам могуць адрознівацца, мы рэкамендуем устанавіць заніжаны ліміт."</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Усталюйце папярэджанне аб выкарыстанні трафіка"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Усталюйце ліміт выкарыстання трафіка"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Задаць"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Сетка OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Выкарыстана: %1$d МБ (%2$s – %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Далучыцца да іншай сеткі"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Параметры сеткі"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Уключэнне Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Адключэнне Wi-Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не атрымалася падключыцца да сеткі"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Дадаць сетку"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Падключыць"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Ідзе падключэнне…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Сетка не ў зоне дасягальнасці"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Паказваць пароль"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Увядзіце назву сеткі"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Для працы праграмы трэба зрабіць ваш канектар бачным для іншых прылад Bluetooth на <xliff:g id="TIMEOUT">%1$d</xliff:g> с."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Для працы праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" трэба ўключыць Bluetooth і зрабіць ваш канектар бачным для іншых прылад на <xliff:g id="TIMEOUT">%2$d</xliff:g> с."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Для працы праграмы трэба ўключыць Bluetooth і зрабіць ваш канектар бачным для іншых прылад на <xliff:g id="TIMEOUT">%1$d</xliff:g> с."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Паказваецца іншым прыладам як \"%1$s\""</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Мае прылады"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Раней падключаныя"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Падключана: %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Адключана: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запыт спалучэння па Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Спалучэнне i падключэнне"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код спалучэння па Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартны гук апавяшчэння"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартны сігнал будзільніка"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Захаваць"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Гукі абвестак"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Рынгтон, апавяшчэнні, будзільнік"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Яркасць"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Карэкціраваць яркасць пры слабым асвятленні"</string>
     <string name="units_settings" msgid="402325305096925886">"Адзінкі"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Хуткасць"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Адлегласць"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Паказваць усе праграмы"</string>
     <string name="default_applications" msgid="1558183275638697087">"Стандартныя праграмы"</string>
     <string name="app_permissions" msgid="32799922508313948">"Дазволы праграмы"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Праграмы, якія выкарыстоўваюць: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Кіруйце доступам праграм да вашых даных"</string>
     <string name="applications_settings" msgid="794261395191035632">"Звесткі пра праграму"</string>
     <string name="force_stop" msgid="2153183697014720520">"Прымусова спыніць"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Спыніць прымусова?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Выдаліць"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Калі вы адключыце гэту праграму, іншыя праграмы могуць працаваць неналежным чынам."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Адключыць праграму"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Не ўсталявана для гэтага карыстальніка"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Праграма не ўсталявана для гэтага профілю"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дазволы"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Апавяшчэнні"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Сховішча і кэш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версія: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Няма дазволаў"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Няма запытаў на дазволы"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Праграмы не ў карыстанні"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> праграма не ў карыстанні</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> праграмы не ў карыстанні</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> праграм не ў карыстанні</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> праграмы не ў карыстанні</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Выдаліць дазволы і вызваліць месца"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s ва ўнутраным сховішчы"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Выкарыстанне трафіка"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Выкарыстанне трафіка"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Заўсёды пытацца"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Не адкрываць у гэтай праграме"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Спасылкі, якія падтрымліваюцца"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Праграмы"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Нядаўна адкрываліся"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Паказаць усе праграмы (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Менеджар дазволаў"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Кіруйце доступам праграм да вашых даных"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Для Памочніка і не толькі"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Да сістэмных і іншых налад"</string>
     <string name="special_access" msgid="5730278220917123811">"Спецыяльны доступ да праграм"</string>
     <string name="show_system" msgid="4401355756969485287">"Паказаць сістэмныя працэсы"</string>
     <string name="hide_system" msgid="8845453295584638040">"Схаваць сістэмныя працэсы"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Схаваць сістэмныя праграмы"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Змена налад сістэмы"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Гэта дазваляе праграме змяняць налады сістэмы."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Доступ да апавяшчэнняў"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма нядаўніх запытаў геаданых"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дазволы на ўзроўні праграм"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Службы геалакацыі"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Выкарыстоўваць геалакацыю"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Сістэма"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Абнаўленне сістэмы"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Дадаткова"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Агульная інфармацыя, юрыдычныя звесткі, скід налад і іншае"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Абнаўленне сістэмы бяспекі Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Мадэль і апаратнае забеспячэнне"</string>
@@ -384,7 +416,7 @@
     <string name="legal_information" msgid="1838443759229784762">"Юрыдычная інфармацыя"</string>
     <string name="contributors_title" msgid="7698463793409916113">"Удзельнікі"</string>
     <string name="manual" msgid="4819839169843240804">"Уручную"</string>
-    <string name="regulatory_labels" msgid="3165587388499646779">"Этыкеткі сертыфікацыі"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"Ярлыкі сертыфікацыі"</string>
     <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Інфармацыя па эксплуатацыі і бяспецы"</string>
     <string name="copyright_title" msgid="4220237202917417876">"Аўтарскія правы"</string>
     <string name="license_title" msgid="936705938435249965">"Ліцэнзія"</string>
@@ -419,25 +451,26 @@
     <string name="reset_esim_desc" msgid="1437276625485586740">"Гэта не прывядзе да скасавання вашага тарыфнага плана."</string>
     <string name="reset_esim_error_title" msgid="7245109418130525492">"Не ўдалося скінуць налады eSIM-карт"</string>
     <string name="reset_network_select" msgid="2433825874868038739">"Выберыце сетку"</string>
-    <string name="reset_network_button_text" msgid="8374174455632765033">"Скінуць налады"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Скід налад"</string>
     <string name="reset_network_confirm_title" msgid="5255502723840197663">"Скінуць?"</string>
     <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Скінуць усе налады сеткі? Гэта дзеянне нельга адмяніць!"</string>
-    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Скінуць налады"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Скід налад"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Налады сеткі скінуты"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"Скінуць налады праграм"</string>
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Будуць скінуты наступныя налады:\n\n"<li>" адключаныя праграмы;"</li>\n<li>"адключаныя апавяшчэнні праграм;"</li>\n<li>"стандартныя праграмы;"</li>\n<li>"абмежаванні на фонавую перадачу даных;"</li>\n<li>"абмежаванні дазволаў. "</li>\n\n"Даныя праграм не будуць выдалены."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Скінуць налады праграм"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Налады праграм скінуты"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Сцерці даныя (скід да заводскіх налад)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Гэта дзеянне сатрэ ўсе даныя з галаўной прылады аўтамабіля, у тым ліку:\n\n"<li>"ваш уліковы запіс Google;"</li>\n<li>"сістэмныя даныя і налады праграм;"</li>\n<li>"спампаваныя праграмы"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Цяпер вы ўвайшлі ў наступныя ўліковыя запісы:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У гэтага аўтамабіля ёсць іншыя карыстальнікі."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Скінуць налады аўтамабіля"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Скінуць?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Сцерці ўсю вашу асабістую інфармацыю і спампаваныя праграмы? Гэта дзеянне нельга адрабіць!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Сцерці ўсе даныя"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ідзе сціранне"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Пачакайце..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Сцерці даныя (скід да заводскіх налад)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Выдаліць усе даныя і профілі з інфармацыйна-забаўляльнай сістэмы"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"З інфармацыйна-забаўляльнай сістэмы аўтамабіля будуць выдалены ўсе даныя, у тым ліку:\n\n"<li>"ваш Уліковы запіс Google;"</li>\n<li>"налады і даныя сістэмы і праграм;"</li>\n<li>"спампаваныя праграмы."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"У дадзены момант вы ўвайшлі ў наступныя ўліковыя запісы:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"На гэтым аўтамабілі ёсць іншыя профілі."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Сцерці ўсе даныя"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Сцерці ўсе даныя?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Будуць выдалены ўсе даныя асабістых профіляў, уліковыя запісы і спампаваныя праграмы, якія ёсць на гэтай інфармацыйна-забаўляльнай сістэме.\n\nГэта дзеянне нельга адрабіць."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Сцерці ўсе даныя"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Ідзе сціранне"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Пачакайце..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата і час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Задаць дату, час, часавы пояс і фарматы"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Дата і час сеткі"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Вы ўвайшлі як адміністратар"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Усе дазволы адміністратара"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Прызначыць адміністратарам"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Гэты карыстальнік зможа выдаляць карыстальнікаў, у тым ліку іншых адміністратараў, і скідваць налады сістэмы да заводскіх."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Гэты профіль зможа выдаляць профілі, у тым ліку іншых адміністратараў, і скідваць налады сістэмы да заводскіх."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Гэта дзеянне нельга адмяніць."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Так, прызначыць адміністратарам"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Ствараць новых карыстальнікаў"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Дазволіць ствараць новыя профілі"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Рабіць тэлефонныя выклікі"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Паведамленні праз трафік аўтамабіля"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Усталёўваць новыя праграмы"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Выдаляць праграмы"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Дадаць карыстальніка"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новы карыстальнік"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Дадаць карыстальніка?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Калі вы дадаяце новага карыстальніка, яму трэба наладзіць свой профіль."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кожны карыстальнік прылады можа абнаўляць праграмы для іншых уліковых запісаў."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Дасягнуты ліміт карыстальнікаў"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальніка.</item>
-      <item quantity="few">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальнікі.</item>
-      <item quantity="many">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальнікаў.</item>
-      <item quantity="other">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальніка.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Дадаць профіль"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Новы профіль"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Дадаць новы профіль?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Калі вы дадаяце новы профіль, яго трэба наладзіць."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"З любога профілю можна абнаўляць праграмы для ўсіх іншых профіляў."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Дасягнуты ліміт колькасці профіляў"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Можна стварыць толькі <xliff:g id="COUNT">%d</xliff:g> профіль.</item>
+      <item quantity="few">Можна стварыць толькі <xliff:g id="COUNT">%d</xliff:g> профілі.</item>
+      <item quantity="many">Можна стварыць толькі <xliff:g id="COUNT">%d</xliff:g> профіляў.</item>
+      <item quantity="other">Можна стварыць толькі <xliff:g id="COUNT">%d</xliff:g> профілю.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Не ўдалося стварыць новага карыстальніка"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Выдаліць карыстальніка?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Усе праграмы і даныя будуць выдалены."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Не ўдалося выдаліць карыстальніка."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Не ўдалося стварыць новы профіль"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Выдаліць гэты профіль?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Усе праграмы і даныя для гэтага профілю будуць выдалены"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Не ўдалося выдаліць профіль."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Пры пераключэнні на іншы профіль або перазапуску аўтамабіля гэты профіль будзе выдалены."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрыць"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Паўтарыць"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Выдаліць карыстальніка?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Пасля выдалення апошняга з карыстальнікаў гэтага аўтамабіля будзе створаны новы адміністратар."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Усе даныя, налады і праграмы, звязаныя з гэтым карыстальнікам, будуць выдалены. Спатрэбіцца наладзіць сістэму паўторна."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Выдаліць апошні профіль?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Калі выдаліць апошні профіль для гэтага аўтамабіля, то выдаляцца ўсе звязаныя з ім даныя, налады і праграмы."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Пасля скіду вы зможаце наладзіць новы профіль."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Выберыце новага адміністратара"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Патрэбны па меншай меры адзін адміністратар. Каб выдаліць існуючага, спачатку выберыце яму замену."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Выберыце адміністратара"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Вы (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Імя"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не наладжана"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Змяніць імя карыстальніка"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Змяненне назвы профілю"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Поле не можа быць пустым."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Уведзена несапраўднае імя карыстальніка"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Уведзена несапраўдная назва профілю."</string>
     <string name="users_list_title" msgid="770764290290240909">"Карыстальнікі"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профілі"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Дазволы карыстальніка %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Сховішча"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музыка і аўдыя"</string>
@@ -512,13 +547,13 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аўдыяфайлы"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Ідзе падлік…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Памер праграмы"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Карыстальніцкія даныя"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Даныя профілю"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кэш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Усяго"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Ачысціць сховішча"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Ачысціць кэш"</string>
     <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Выдаліць даныя праграмы?"</string>
-    <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Усе даныя гэтай праграмы будуць назаўсёды выдалены. Гэта датычыцца ўсіх файлаў, налад, уліковых запісаў, баз даных і г. д."</string>
+    <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Усе даныя гэтай праграмы будуць назаўсёды выдаленыя. Гэта датычыцца ўсіх файлаў, налад, уліковых запісаў, баз даных і г. д."</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Не ўдалося ачысціць сховішча для праграмы."</string>
     <string name="storage_unmount_success" msgid="1553591517580407021">"<xliff:g id="NAME">%1$s</xliff:g> бяспечна вынята"</string>
     <string name="storage_unmount_failure" msgid="4591934911541762883">"Не ўдалося бяспечна выняць <xliff:g id="NAME">%1$s</xliff:g>"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Скасаваць сінхранізацыю"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Цяпер ёсць праблемы з сінхранізацыяй, аднак яна хутка адновіцца."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Прыватнасць"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Даныя аўтамабіля"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Кіраваць доступам праграм да даных пра месцазнаходжанне"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Мікрафон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Кіраваць доступам праграм да мікрафона"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Даныя аўтамабіля"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Кіраванне дзеяннямі і звесткамі, захаванымі на гэтым аўтамабілі"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Выдаліць профіль"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Выдаліць ваш профіль і ўліковыя запісы з інфармацыйна-забаўляльнай сістэмы"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Гэта дзеянне для вашага профілю недаступнае"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Бяспека"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блакіроўка экрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Няма"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"ОК"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Зняць блакіроўку экрана?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Доступ да вашага ўліковага запісу зможа атрымаць любы чалавек"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Блакіроўка профілю"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Наладзіць аўтаматычную разблакіроўку"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Увядзіце PIN-код"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Увядзіце пароль"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Задайце PIN-код, каб абараніць прыладу"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Колькасць лічбаў павінна быць менш за <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"PIN-код павінен змяшчаць толькі лічбы 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Адміністратар прылады не дазваляе выкарыстоўваць апошні PIN-код"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT-адміністратар блакіруе папулярныя PIN-коды. Паспрабуйце іншы PIN-код."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT-адміністратар блакіруе папулярныя PIN-коды. Паспрабуйце іншы PIN-код."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Выкарыстанне недапушчальных сімвалаў."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Няправільны пароль. Мінімальная колькасць сімвалаў: 4"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Адміністратар прылады не дазваляе выкарыстоўваць апошні пароль"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Памылка захавання пароля"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-адміністратар блакіруе папулярныя паролі. Паспрабуйце іншы пароль."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT-адміністратар блакіруе папулярныя паролі. Паспрабуйце іншы пароль."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Забаронена выкарыстоўваць паслядоўнасці з лічбаў, якія ідуць адна за адной або паўтараюцца."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Параметры блакіроўкі экрана"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> сут. таму назад"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Клавіша Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Выйсці з дэма-рэжыму"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Выйсці з дэма-рэжыму"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Адбудзецца скід сістэмы да заводскіх налад. Тэставы ўліковы запіс і ўсе карыстальніцкія даныя будуць выдалены."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Адбудзецца скід сістэмы да заводскіх налад. Тэставы ўліковы запіс і ўсе даныя профілю будуць выдалены."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Выйсці з дэма-рэжыму"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"АДХІЛІЦЬ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Функцыя недаступная, калі аўтамабіль рухаецца"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Нельга дадаць карыстальніка, калі аўтамабіль рухаецца"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Нельга дадаваць профіль, калі аўтамабіль рухаецца"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Пошук"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Памочнік і Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Памочнік"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Выкарыстоўваць тэкст з экрана"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Даць памочніку доступ да змесціва экрана"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Выкарыстоўваць здымак экрана"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Даць памочніку доступ да відарыса экрана"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Нядаўна адпраўленыя"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Усе праграмы"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профілі і ўліковыя запісы"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Кіраваць іншымі профілямі"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Дадаць профіль"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Выдаліць гэты профіль"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Дадаць профіль"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 585b05b..564c559 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Дисплей"</string>
     <string name="brightness" msgid="2919605130898772866">"Ниво на яркостта"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Адаптивна яркост"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Оптимизиране на нивото на яркостта спрямо наличната светлина"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Коригиране на яркостта на екрана спрямо околната среда"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Нощно осветление: Включено"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"екран, сензорен екран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"затъмняване на екрана, сензорен екран, батерия"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затъмняване на екрана, сензорен екран, батерия"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"затъмняване на екрана, нощ, нюансиране"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Нощен режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
@@ -70,7 +66,7 @@
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Преглед на плана"</string>
     <string name="app_data_usage" msgid="3878609885080232877">"Пренос на данни от прилож."</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"ограничено"</string>
-    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Дата на нулиране на цикъла за използване"</string>
+    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Дата на възстановяване на цикъла за използване"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Дата от всеки месец:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Задаване"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Предупреждение и лимит за данните"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Задаване на предупреждение за преноса на данни"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Задаване на ограничение за преноса на данни"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Задаване"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Мрежа на OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Използвали сте %1$d МБ в периода от %2$s до %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Присъединяване към друга мрежа"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Предпочитания за мрежата"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi се включва…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi се изключва…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Свързването с мрежата не бе успешно"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Добавяне на мрежа"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Свързване"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Свързва се…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Мрежата не е в обхват"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Парола"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показване на паролата"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Моля, въведете име на мрежа"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Приложение иска да направи основното ви устройство видимо за други устройства с Bluetooth за <xliff:g id="TIMEOUT">%1$d</xliff:g> секунди."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска да включи Bluetooth и да направи основното ви устройство видимо за други устройства за <xliff:g id="TIMEOUT">%2$d</xliff:g> секунди."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Приложение иска да включи Bluetooth и да направи основното ви устройство видимо за други устройства за <xliff:g id="TIMEOUT">%1$d</xliff:g> секунди."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Вижда се като %1$s за други устройства"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Моите устройства"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"По-рано свързвани"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Установена е връзка с(ъс) %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s – връзката е прекратена"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Заявка за сдвояване чрез Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Сдвояване и свързване"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код за сдвояване с Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартен звук за известяване"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартен звук за будилника"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Запазване"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Звук на сигналите"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Мелодия, известия и будилници"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Яркост"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Коригиране на яркостта на екрана при слаба светлина"</string>
     <string name="units_settings" msgid="402325305096925886">"Мерни ед."</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Скорост"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Разстояние"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Показване на всички приложения"</string>
     <string name="default_applications" msgid="1558183275638697087">"Приложения по подразбиране"</string>
     <string name="app_permissions" msgid="32799922508313948">"Разрешения за приложенията"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Приложения, използващи <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Управлявайте достъпа на приложенията до данните ви"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информация за приложенията"</string>
     <string name="force_stop" msgid="2153183697014720520">"Принудително спиране"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Да се спре ли принудително?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Деинсталиране"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако деактивирате това приложение, Android и други приложения може да спрат да работят както трябва."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Деактивиране"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Не е инсталирано за този потребител"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Не е инсталирано за този потребителски профил"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Разрешения"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Известия"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Хранилище и кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версия: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Няма предоставени разрешения"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Няма заявени разрешения"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Неизползвани приложения"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> неизползвани приложения</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> неизползвано приложение</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Премахване на разреш. и освоб. на място"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s във вътрешното хранилище"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Пренос на данни"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Прилож.: Пренос на данни"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Извеждане на запитване всеки път"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Без отваряне в това приложение"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Поддържани връзки"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Приложения"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Наскоро отваряни"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Преглед на всичките %1$d приложения"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Мениджър на разрешенията"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Управлявайте достъпа на приложенията до данните ви"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"За Асистент и др."</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Към системните и други настройки"</string>
     <string name="special_access" msgid="5730278220917123811">"Специален достъп за приложението"</string>
     <string name="show_system" msgid="4401355756969485287">"Системни процеси"</string>
     <string name="hide_system" msgid="8845453295584638040">"Скриване на системните процеси"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Скриване на системните приложения"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Промяна на сист. настройки"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Това разрешение позволява на дадено приложение да променя системни настройки."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Достъп до известията"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма скорошни заявки за местоположението"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Разрешения на ниво приложение"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Услуги за местоположение"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Използване на местоположението"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Системни актуализации"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Разширени"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Всичко за Android Auto, правна информация, нулиране и др."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версия на Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво на корекцията на сигурността под Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Модел и хардуер"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Това действие ще нулира всички предпочитания за:\n\n"<li>"деактивираните приложения;"</li>\n<li>"известията за деактивирани приложения;"</li>\n<li>"стандартните приложения за действия;"</li>\n<li>"ограниченията за данни на заден план за приложенията;"</li>\n<li>" ограниченията за всички разрешения."</li>\n\n"Няма да загубите данни от приложенията."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Нулиране на приложенията"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Предпочитанията за приложенията са нулирани"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Изтрив. на данните (възст. на фабр. настр.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Това ще изтрие всички данни от основното устройство на автомобила ви, включително:\n\n"<li>"профила ви в Google;"</li>\n<li>"данни и настройки от системата и приложенията;"</li>\n<li>"изтеглените приложения."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Понастоящем сте влезли в следните профили:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"В този автомобил има други потребители."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Нулиране на автомобила"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Да се извърши ли нулиране?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Да се изтрият ли цялата ви лична информация и всички изтеглени приложения? Не можете да отмените това действие!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Изтриване на всичко"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Изтрива се"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Моля, изчакайте..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Изтр. на вс. данни (възст. на фабр. настр.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Изтриване на всички данни и потребителски профили от информационно-развлекателната система"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Това ще изтрие всички данни от информационно-развлекателната система на автомобила ви, включително:\n\n"<li>"профила ви в Google;"</li>\n<li>"данни и настройки от системата и приложенията;"</li>\n<li>"изтеглените приложения."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Понастоящем сте влезли в следните профили:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"В този автомобил има други потребителски профили."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Изтриване на всички данни"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Да се изтрият ли всички данни?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Това действие ще изтрие цялата информация от личния ви потребителски профил, всички профили и изтеглените на тази информационно-развлекателна система приложения.\n\nНе можете да го отмените."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Изтриване на всички данни"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Данните се изтриват"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Моля, изчакайте..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата и час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Задаване на дата, час, часова зона и формати"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Автоматична дата и час"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Влезли сте като администратор"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Всички администраторски разрешения"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Задаване като администратор"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Този потребител ще може да изтрива потребители, включително и други администратори, и да възстановява фабричните настройки на системата."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Този потребителски профил ще може да изтрива профили, включително на други администратори, и да възстановява фабричните настройки на системата."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Това действие не е обратимо."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, задаване като администратор"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Създаване на нови потребители"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Създаване на нови потр. профили"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Провеждане на телефонни обаждания"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS чрез моб. данни на автомобила"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталиране на нови приложения"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталиране на приложения"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавяне на потребител"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нов потребител"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Добавяне на нов потребител?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когато добавите нов потребител, той трябва да настрои работното си пространство."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Всеки потребител може да актуализира приложенията за всички останали потребители."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнахте огранич. за потребители"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Можете да създадете до <xliff:g id="COUNT">%d</xliff:g> потребители.</item>
-      <item quantity="one">Може да бъде създаден само един потребител.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Добавяне на потребителски профил"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Нов потребителски профил"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Да се добави ли новият профил?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Когато добавите нов потребителски профил, съответният човек трябва да настрои работната си област."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Всеки потребителски профил може да актуализира приложенията за всички останали профили."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Достигнахте лимита за потр. профили"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Можете да създадете до <xliff:g id="COUNT">%d</xliff:g> потребителски профила.</item>
+      <item quantity="one">Може да бъде създаден само един потребителски профил.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Неуспешно създаване на нов потребител"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Да се изтрие ли потребителят?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Всички приложения и данни ще бъдат изтрити."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Изтриването на потребителя бе неуспешно."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Новият потр. профил не бе създаден"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Да се изтрие ли този потр. профил?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Всички приложения и данни, свързани с този потребителски профил, ще бъдат изтрити"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Потребителският профил не бе изтрит"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Този потр. профил ще бъде изтрит, когато превключите към друг или рестартирате превозното средство."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Отхвърляне"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Нов опит"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Изтриване на последния потребител?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"След като изтриете единствения оставащ потребител за този автомобил, ще бъде създаден нов потребител с администраторски достъп."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Всички данни, настройки и приложения, свързани с този потребител, ще бъдат изтрити. Трябва да настроите системата отново."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Да се изтрие ли последният потр. профил?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ако премахнете единствения оставащ потребителски профил за това превозно средство, всички свързани с профила данни, настройки и приложения ще бъдат изтрити."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"След нулирането можете да настроите нов потребителски профил."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Избиране на нов администратор"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Трябва да посочите поне един администратор. За да изтриете този, първо изберете заместник."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Избиране на администратор"</string>
@@ -488,21 +520,22 @@
     <string name="current_user_name" msgid="3813671533249316823">"Вие (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не е настроен"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Редактиране на потребит. име"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Редактиране на името в профила"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Полето трябва да се попълни."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Въведеното потребителско име е невалидно."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Въведеното име на потр. профил е невалидно."</string>
     <string name="users_list_title" msgid="770764290290240909">"Потребители"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Потребителски профили"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Разрешенията са дадени на %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Хранилище"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музика и аудио"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"Други приложения"</string>
     <string name="storage_files" msgid="6382081694781340364">"Файлове"</string>
     <string name="storage_system" msgid="1271345630248014010">"Система"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Системата включва файлове, използвани за изпълняването на версия <xliff:g id="VERSION">%s</xliff:g> на Android"</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Категорията „Система Android“ включва файлове, използвани за изпълняването на версия <xliff:g id="VERSION">%s</xliff:g> на Android"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудиофайлове"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Изчислява се…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Размер на приложението"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Потребителски данни"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Данни в потребителския профил"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Общо"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Изчистване на данните"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Анулиране на синхронизирането"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Понастоящем има проблеми със синхронизирането. Ще се решат скоро."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Поверителност"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Данни от превозното средство"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Управление на достъпа на приложенията до местоположението ви"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Управление на достъпа на приложенията до микрофона"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Данни от превозното средство"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Управление на активностите и информацията, запазени на това превозно средство"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Изтриване на потр. ви профил"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Изтриване на потребителския ви профил от информационно-развлекателната система"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Това действие не е налице за потребителския ви профил"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Сигурност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Заключване на екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Без"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ОK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Премахване на закл. на екрана?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Така ще разрешите на всеки да има достъп до профила ви"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Заключване на потребителския профил"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Настройване на функцията за автоматично отключване"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Въведете ПИН кода си"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Въведете паролата си"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"От съображения за сигурност задайте ПИН"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Трябва да съдържа по-малко от <xliff:g id="NUMBER">%d</xliff:g> цифри"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Трябва да съдържа само цифри от 0 до 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Администраторът на устройството не разрешава ползването на скорошен ПИН"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Често срещаните ПИН кодове се блокират от системния ви администратор. Опитайте с друг ПИН код."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Често срещаните ПИН кодове се блокират от системния ви администратор. Опитайте с друг ПИН код."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Не може да включва невалиден знак."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Паролата е невалидна, трябва да съдържа поне 4 знака."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Администраторът на устройството не разрешава ползването на скорошна парола"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Грешка при запазването на паролата"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Често срещаните пароли се блокират от системния ви администратор. Опитайте с друга парола."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Често срещаните пароли се блокират от системния ви администратор. Опитайте с друга парола."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Възходящите, низходящите и повтарящите се поредици от цифри не са разрешени."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заключване на екрана"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Преди <xliff:g id="NUM_DAYS">%3$s</xliff:g> дни"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Въведете ключа"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Демонстр. режим: Изход"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Изход от демонстр. режим"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Това действие ще изтрие демонстрационния профил и ще възстанови фабричните настройки на системата. Всички потребителски данни ще бъдат изгубени."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Това действие ще изтрие демонстрационния профил и ще възстанови фабричните настройки на системата. Всички данни в потр. профил ще бъдат изгубени."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Демонстр. режим: Изход"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОТХВЪРЛЯНЕ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Функцията не е налице по време на шофиране"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Потребителят не може да се добави по време на шофиране"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Потр. профил не може да се добави по време на шофиране"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Търсете"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Асистент и Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Приложение Асистент"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Използване на текста от екрана"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Разрешете на Асистент да осъществява достъп до текстовото съдържание на екрана"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Използване на екранна снимка"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Разрешете на Асистент да осъществява достъп до изображението на екрана"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Наскоро изпратили известия"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Всички приложения"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Потребители и профили"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Управление на други потр. профили"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Добавяне на потребителски профил"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Изтриване на този потр. профил"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Добавяне на потребителски профил"</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 0adcad5..5f5ab64 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"ডিসপ্লে"</string>
     <string name="brightness" msgid="2919605130898772866">"উজ্জ্বলতার স্তর"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"অভিযোজিত উজ্জ্বলতা"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"উপলভ্য আলোর পরিপ্রেক্ষিতে উজ্জ্বলতার স্তর অপ্টিমাইজ করুন"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"নাইট লাইট চালু আছে"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"স্ক্রিন, টাচস্ক্রিন"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"অনুজ্জ্বল স্ক্রিন, টাচস্ক্রিন, ব্যাটারি"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"অনুজ্জ্বল স্ক্রিন, টাচস্ক্রিন, ব্যাটারি"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"অনুজ্জ্বল স্ক্রিন, রাত্রি, আভা"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"রাতের মোড"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"নেটওয়ার্ক এবং ইন্টারনেট"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"মোবাইল নেটওয়ার্ক"</string>
@@ -70,7 +67,7 @@
     <string name="launch_manage_plan_text" msgid="906657488611815787">"প্ল্যান দেখুন"</string>
     <string name="app_data_usage" msgid="3878609885080232877">"অ্যাপ ডেটার ব্যবহার"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"সীমাবদ্ধ"</string>
-    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"ব্যবহার চক্র রিসেট করার তারিখ"</string>
+    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"ব্যবহার চক্র আবার সেট করার তারিখ"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"প্রতি মাসের তারিখ:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"সেট করুন"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"ডেটা সম্পর্কিত সতর্কতা ও সীমা"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ডেটা ব্যবহারের সতর্কতা সেট করুন"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ডেটা ব্যবহারের সীমা সেট করুন"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"সেট করুন"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"ওয়াই-ফাই"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ওয়াই-ফাই চালু করা হচ্ছে..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ওয়াই-ফাই বন্ধ করা হচ্ছে..."</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"নেটওয়ার্কে কানেক্ট করা যায়নি"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"নেটওয়ার্ক যোগ করুন"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"কানেক্ট"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"কানেক্ট করা হচ্ছে…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"নেটওয়ার্ক পরিষেবা সীমার মধ্যে নেই"</string>
     <string name="wifi_password" msgid="5565632142720292397">"পাসওয়ার্ড"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"পাসওয়ার্ড দেখুন"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"নেটওয়ার্কের নাম লিখুন"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"একটি অ্যাপ আপনার হেডইউনিটটিকে অন্যান্য ব্লুটুথ ডিভাইসের জন্য <xliff:g id="TIMEOUT">%1$d</xliff:g> সেকেন্ড দেখাতে চায়।"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ব্লুটুথ চালু করতে চায় এবং আপনার হেডইউনিটটিকে অন্যান্য ডিভাইসের জন্য <xliff:g id="TIMEOUT">%2$d</xliff:g> সেকেন্ড দেখাতে চায়।"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"একটি অ্যাপ ব্লুটুথ চালু করতে চায় এবং আপনার হেডইউনিটটিকে অন্যান্য ডিভাইসের জন্য <xliff:g id="TIMEOUT">%1$d</xliff:g> সেকেন্ড দেখাতে চায়।"</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ব্লুটুথ পেয়ার করার অনুরোধ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"পেয়ার এবং কানেক্ট করুন"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ব্লুটুথ-এর সাথে পেয়ার করার কোড"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ডিফল্ট বিজ্ঞপ্তির সাউন্ড"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ডিফল্ট অ্যালার্মের শব্দ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"সেভ করুন"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"একক"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"গতি"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"দূরত্ব"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"সব অ্যাপ দেখুন"</string>
     <string name="default_applications" msgid="1558183275638697087">"ডিফল্ট অ্যাপ"</string>
     <string name="app_permissions" msgid="32799922508313948">"অ্যাপের অনুমতি"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"অ্যাপ <xliff:g id="APPS">%1$s</xliff:g> ব্যবহার করছে"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"অ্যাপের তথ্য"</string>
     <string name="force_stop" msgid="2153183697014720520">"জোর করে বন্ধ করুন"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"জোর করে বন্ধ করবেন?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"আনইনস্টল করুন"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"আপনি এই অ্যাপটি বন্ধ করলে, Android এবং অন্যান্য অ্যাপকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেগুলি আর কাজ নাও করতে পারে।"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"অ্যাপ বন্ধ করুন"</string>
-    <string name="not_installed" msgid="4218816013370552746">"এই ব্যবহারকারীর জন্য ইনস্টল করা নেই"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"অনুমতিগুলি"</string>
     <string name="notifications_label" msgid="6586089149665170731">"বিজ্ঞপ্তি"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"স্টোরেজ ও ক্যাশে"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ভার্সন: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"কোনও অনুমতি দেওয়া হয় নি"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"কোনও অনুমতির অনুরোধ জানানো হয়নি"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ব্যবহার করা হয়নি এমন অ্যাপ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">ব্যবহার হয়নি এমন <xliff:g id="COUNT_1">%d</xliff:g>টি অ্যাপ</item>
+      <item quantity="other">ব্যবহার হয়নি এমন <xliff:g id="COUNT_1">%d</xliff:g>টি অ্যাপ</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"অনুমতি সরান এবং স্পেস খালি করুন"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"ইন্টারনাল স্টোরেজে %s রয়েছে"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ডেটা ব্যবহার"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"অ্যাপ ডেটার ব্যবহার"</string>
@@ -334,9 +367,24 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"প্রতিবার জিজ্ঞেস করুন"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"এই অ্যাপে খুলবেন না"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"সমর্থিত লিঙ্ক"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"অ্যাপের বিশেষ অ্যাক্সেস"</string>
     <string name="show_system" msgid="4401355756969485287">"সিস্টেম অ্যাপ দেখুন"</string>
     <string name="hide_system" msgid="8845453295584638040">"সিস্টেম লুকান"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"সিস্টেম অ্যাপ আড়াল করুন"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"সিস্টেম সেটিংস পরিবর্তন করুন"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"এই অনুমতিটি কোনও অ্যাপকে সিস্টেম সেটিংস পরিবর্তন করার অনুমতি দেয়।"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"বিজ্ঞপ্তি অ্যাক্সেস"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"কোনও সাম্প্রতিক লোকেশনের অনুরোধ নেই"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"অ্যাপ-লেবেল অনুমতি"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"লোকেশন পরিষেবা"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"সিস্টেম"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"সিস্টেম আপডেট"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android ভার্সন"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android সুরক্ষার প্যাচ লেবেল"</string>
     <string name="hardware_info" msgid="3973165746261507658">"মডেল ও হার্ডওয়্যার"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"এটি এইগুলির জন্য সব পছন্দ রিসেট করবে:\n\n"<li>" বন্ধ করা অ্যাপ"</li>\n<li>" বন্ধ করা অ্যাপের বিজ্ঞপ্তি"</li>\n<li>" অ্যাকশনের জন্য ডিফল্ট অ্যাপ্লিকেশন"</li>\n<li>" অ্যাপের জন্য ব্যাকগ্রাউন্ড ডেটার সীমাবদ্ধতা"</li>\n<li>" যেকোনও অনুমতির সীমাবদ্ধতা"</li>\n\n" আপনি কোনও অ্যাপের ডেটা হারাবেন না।"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"অ্যাপ রিসেট করুন"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"অ্যাপের অভিরুচি রিসেট করা হয়েছে"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"সমস্ত ডেটা মুছে ফেলুন (ফ্যাক্টরি রিসেট)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"এটি গাড়ির প্রধান ডিসপ্লে ইউনিট থেকে সমস্ত ডেটা মুছে ফেলবে, নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:\n\n"<li>"আপনার Google অ্যাকাউন্ট"</li>\n<li>"সিস্টেম এবং অ্যাপের ডেটা এবং সেটিংস"</li>\n<li>"ডাউনলোড করা অ্যাপ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"আপনি বর্তমানে নিম্নলিখিত অ্যাকাউন্টে সাইন-ইন করে আছেন:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"এই গাড়িতে অন্য ব্যবহারকারী আছেন।"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"গাড়ি রিসেট করুন"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"রিসেট করবেন?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"আপনার সমস্ত ব্যক্তিগত তথ্য এবং ডাউনলোড করা অ্যাপ মুছে দিতে চান? আপনি এই প্রক্রিয়াটি আগের অবস্থায় ফেরাতে পারবেন না!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"সবকিছু মুছে দিন"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"মোছা হচ্ছে"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"অপেক্ষা করুন..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"সমস্ত ডেটা মুছুন (ফ্যাক্টরি রিসেট)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"আপনি বর্তমানে নিম্নলিখিত অ্যাকাউন্টে সাইন-ইন করে আছেন:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"সবকিছু মুছে দিন"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"মুছে ফেলা হচ্ছে"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"অপেক্ষা করুন..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"দিন ও তারিখ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"তারিখ, সময়, টাইম জোন ও ফর্ম্যাট সেট করুন"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"অটোমেটিক তারিখ ও সময়"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"অ্যাডমিন হিসেবে সাইন-ইন করেছেন"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"সকল অ্যাডমিন অনুমতি সহকারে"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"নতুন অ্যাডমিন বেছে নিন"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ব্যবহারকারী অন্যান্য অ্যাডমিন সহ ব্যবহারকারীদের মুছে দিতে পারবে এবং ফ্যাক্টরি সিস্টেমটি রিসেট করবে।"</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"এই অ্যাকশনটি আগের অবস্থায় ফেরানো যাবে না।"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"হ্যাঁ, নতুন অ্যাডমিন বেছে নিন"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"নতুন ব্যবহারকারী তৈরি করুন"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ফোন কল করে দেখুন"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"গাড়ির মোবাইল ডেটা ব্যবহার করে মেসেজিং"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"নতুন অ্যাপ ইনস্টল করে দেখুন"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"অ্যাপ আনইনস্টল করে দেখুন"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ব্যবহারকারী যোগ করুন"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"নতুন ব্যবহারকারী"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ব্যবহারকারী যোগ করবেন?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"আপনি একজন নতুন ব্যবহারকারী যোগ করলে তাকে তার স্পেস সেট-আপ করে নিতে হবে৷"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"যেকোনও ব্যবহারকারী বাকি সব ব্যবহারকারীর জন্য অ্যাপ আপডেট করতে পারবেন।"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"আর কোনও প্রোফাইল যোগ করা যাবে না"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">আপনি <xliff:g id="COUNT">%d</xliff:g>টি প্রোফাইল তৈরি করতে পারবেন।</item>
-      <item quantity="other">আপনি <xliff:g id="COUNT">%d</xliff:g>টি প্রোফাইল তৈরি করতে পারবেন।</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"নতুন প্রোফাইল তৈরি করা যায়নি"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"এই ব্যবহারকারীর অ্যাকাউন্টটি মুছবেন?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ব্যবহারকারীকে মুছে ফেলা যায়নি।"</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"আপনার প্রোফাইল পরিবর্তন বা গাড়ি রিস্টার্ট করলে এই প্রোফাইলটি মুছে ফেলা হবে।"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"খারিজ"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"আবার চেষ্টা করুন"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"শেষ ব্যবহারকারীকে মুছে দিতে চান?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"এই গাড়ির আগের ব্যবহারকারীকে মুছে ফেলার পর, নতুন অ্যাডমিন ব্যবহারকারী তৈরি করা হবে।"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"এই ব্যবহারকারীর সব ডেটা, সেটিংস, এবং অ্যাপ মুছে ফেলা হবে। আপনাকে সিস্টেম আবার সেট-আপ করতে হবে।"</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"নতুন অ্যাডমিন বেছে নিন"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"আপনার একজন অ্যাডমিন প্রয়োজন। এটি মুছে ফেলতে, অন্য একটি বিকল্প বেছে নিন।"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"অ্যাডমিন বেছে নিন"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"আপনি (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"নাম"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"সেট-আপ করা নেই"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ব্যবহারকারীর নাম এডিট করুন"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"ক্ষেত্র খালি রাখা যাবে না।"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ব্যবহারকারীর যে নাম লেখা হয়েছে তা সঠিক নয়।"</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"ব্যবহারকারী"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s কে অনুমতি দেওয়া হয়েছে"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"স্টোরেজ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"মিউজিক ও অডিও"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"অডিও ফাইলগুলি"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"হিসেব করা হচ্ছে…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"অ্যাপের সাইজ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ব্যবহারকারীর ডেটা"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ক্যাশ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"মোট"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"স্টোরেজ মুছুন"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"সিঙ্ক বাতিল করুন"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"সিঙ্কে বর্তমানে সমস্যা দেখা দিচ্ছে। এটি খুব শীঘ্রই ঠিক হয়ে যাবে।"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"গোপনীয়তা"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"গাড়ির ডেটা"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"গাড়ির ডেটা"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"এই ডিভাইসে সেভ করা অ্যাক্টিভিটি এবং তথ্য ম্যানেজ করুন"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"নিরাপত্তা"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"স্ক্রিন লক"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"কোনওটিই নয়"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"ঠিক আছে"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"স্ক্রিন লক সরিয়ে দেবেন?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"এর ফলে যেকেউ আপনার অ্যাকাউন্ট অ্যাক্সেস করতে পারবেন"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"পিন লিখুন"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"পাসওয়ার্ড লিখুন"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"নিরাপত্তার জন্য একটি পিন সেট করুন"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>টি সংখ্যার চেয়ে কম হতে হবে"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"শুধুমাত্র ০-৯ এর মতো সংখ্যা থাকতে পারে।"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ডিভাইস অ্যাডমিন একটি সাম্প্রতিক পিন ব্যবহার করতে দেয় না"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"একইধরনের পিন আপনার আইটি অ্যাডমিনের মাধ্যমে ব্লক করা হয়। অন্য একটি পিন ব্যবহার করার চেষ্টা করুন।"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"একইধরনের পিন আপনার আইটি অ্যাডমিনের মাধ্যমে ব্লক করা হয়। অন্য একটি পিন ব্যবহার করার চেষ্টা করুন।"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"কোনও নিষিদ্ধ অক্ষর ব্যবহার করা যাবে না।"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"এই পাসওয়ার্ডটি ব্যবহার করা যাবে না, এতে অন্তত ৪টি অক্ষর থাকতে হবে।"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ডিভাইস অ্যাডমিন একটি সাম্প্রতিক পাসওয়ার্ড ব্যবহার করতে দেয় না"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"পাসওয়ার্ড সেভ করার সময় সমস্যা"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"একইধরনের পাসওয়ার্ড আপনার আইটি অ্যাডমিনের মাধ্যমে ব্লক করা হয়। অন্য একটি পাসওয়ার্ড ব্যবহার করার চেষ্টা করুন।"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"একইধরনের পাসওয়ার্ড আপনার আইটি অ্যাডমিনের মাধ্যমে ব্লক করা হয়। অন্য একটি পাসওয়ার্ড ব্যবহার করার চেষ্টা করুন।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ছোট থেকে বড়, বড় থেকে ছোট সংখ্যা অথবা নির্দিষ্ট কয়েকটি সংখ্যা বার বার লেখা যাবে না।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্রিন লকের বিকল্প"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগে"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"বোতাম টিপুন"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ডেমো মোড ছেড়ে যান"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ডেমো মোড ছেড়ে বেরিয়ে আসুন"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"এর ফলে ডেমো অ্যাকাউন্টটি মুছে দেওয়া হবে এবং সিস্টেমের ডেটা ফ্যাক্টরি রিসেট করা হবে। ব্যবহারকারীর সমস্ত ডেটা মুছে যাবে।"</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ডেমো মোড ছেড়ে যান"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"খারিজ করুন"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ড্রাইভ করার সময় এই ফিচার কাজ করবে না"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ড্রাইভ করার সময় ব্যবহারকারীকে যোগ করতে পারবেন না"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant ও ভয়েস"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index d8661ac..a1ae883 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekran"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivo osvjetljenja"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prilagodljiva osvijetljenost"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiziranje nivoa osvjetljenja u odnosu na osvijetljenost okoline"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Prilagodite osvijetljenost ekrana okruženju"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Noćno svjetlo je uključeno"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, ekran osjetljiv na dodir"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"zatamnjenje ekrana, ekran osjetljiv na dodir, baterija"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamnjenje ekrana, ekran osjetljiv na dodir, baterija"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamnjenje ekrana, noć, boja"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Postavljanje upozorenja o prijenosu podataka"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Postavljanje ograničenja za prijenos podataka"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Postavi"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Mreža za OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Iskoristili ste %1$d MB od %2$s do %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Pridružite se drugoj mreži"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Postavke mreže"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WiFi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Uključivanje WiFi-a…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Isključivanje WiFi-a…"</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje na mrežu nije uspjelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Povezivanje…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Mreža nije u dometu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lozinka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži lozinku"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Unesite naziv mreže"</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikacija želi da vaša glavna jedinica bude vidljiva drugim Bluetooth uređajima na <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi uključiti Bluetooth te učiniti vašu glavu jedinicu vidljivom drugim uređajima na <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikacija želi uključiti Bluetooth te učiniti vašu glavnu jedinicu vidljivom drugim uređajima na <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Drugim uređajima će se prikazivati kao %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moji uređaji"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Prethodno povezani"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Uređaj %1$s je povezan"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Prekinuta je veza s uređajem %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtjev za uparivanje putem Bluetootha"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kôd za uparivanje putem Bluetootha"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Zadani zvuk obavještenja"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Zadani zvuk alarma"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Sačuvaj"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvukovi obavještenja"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Melodija zvona, obavještenja, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Osvjetljenje"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Podesite ekran za slabo osvjetljenje"</string>
     <string name="units_settings" msgid="402325305096925886">"Jedinice"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Brzina"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Razdaljina"</string>
@@ -282,7 +293,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Prikaži sve aplikacije"</string>
     <string name="default_applications" msgid="1558183275638697087">"Zadane aplikacije"</string>
     <string name="app_permissions" msgid="32799922508313948">"Odobrenja za aplikaciju"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacije koje koriste aplikacije: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrolirajte pristup aplikacije podacima"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
     <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Prisilno zaustaviti?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite ovu aplikaciju, moguće je da Android i druge aplikacije više neće funkcionirati ispravno."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nije instalirano za ovog korisnika"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nije instalirano za ovaj profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Odobrenja"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Obavještenja"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Pohrana i keš memorija"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nema dodijeljenih odobrenja"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nema zatraženih odobrenja"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nekorištene aplikacije"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nekorištena aplikacija</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nekorištene aplikacije</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nekorištenih aplikacija</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ukloni odobrenja i oslobodi prostor"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s u unutrašnjoj pohrani"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Prijenos podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Prijenos podataka za apl."</string>
@@ -337,15 +355,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pitaj svaki put"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Nemoj otvarati u ovoj aplikaciji"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podržani linkovi"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacije"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedavno otvarano"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Prikaži sve aplikacije (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Upravitelj odobrenja"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrolirajte pristup aplikacije podacima"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Za Asistenta i druge usluge"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Za sistem i druge postavke"</string>
     <string name="special_access" msgid="5730278220917123811">"Poseban pristup aplikacijama"</string>
     <string name="show_system" msgid="4401355756969485287">"Prikaži sistemske procese"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sakrij sistemske procese"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sakrij sistemske aplikacije"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Izmjena postavki sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Ovo odobrenje omogućava aplikaciji da izmijeni postavke sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Pristup obavještenjima"</string>
-    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Dozvoliti aplikaciji <xliff:g id="SERVICE">%1$s</xliff:g> pristup obavještenjima?"</string>
+    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Dozvoliti pristup obavještenjima za uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> će moći čitati sva obavještenja, uključujući lične informacije kao što su imena kontakata i tekst primljenih poruka. Također će moći odbaciti obavještenja ili koristiti dugmad za radnje u obavještenjima.\n\nTime će se aplikaciji dati i mogućnost da uključi i isključi način rada Ne ometaj te da promijeni postavke povezane s tom opcijom."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ako aplikaciji <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> isključite pristup obavještenjima, može se isključiti i pristup načinu rada Ne ometaj."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ako korisniku <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> isključite pristup obavještenjima, može se isključiti i pristup načinu rada Ne ometaj."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Isključi"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Otkaži"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Pristup premium SMS-ovima"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Odobrenja na nivou aplikacija"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Koristi lokaciju"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Napredno"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Osnovne informacije, pravne informacije, poništavanje i drugo"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzija Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivo sigurnosne zakrpe Androida"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model i hardver"</string>
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Ovim će se vratiti sve postavke na zadano za:\n\n"<li>"Onemogućene aplikacije"</li>\n<li>"Obavještenja za onemogućene aplikacije"</li>\n<li>"Zadane aplikacije za radnje"</li>\n<li>"Ograničenje pozadinskih podataka za aplikacije"</li>\n<li>"Sva ograničenja za odobrenja"</li>\n\n"Nećete izgubiti podatke iz aplikacija."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Vrati aplikacije na zadano"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Postavke aplikacije su vraćene na zadano"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Izbriši sve podatke"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Na ovaj način će se izbrisati svi podaci s glavne jedinice vozila, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"sistemske i aplikacijske podatke i postavke"</li>\n<li>"preuzete aplikacije"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni u sljedeće račune:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Drugi korisnici su prisutni u ovom vozilu."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Vrati vozilo na zadano"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vratiti na zadano?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Izbrisati sve vaše lične podatke i preuzete aplikacije? Ovu radnju ne možete poništiti!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje u toku"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Pričekajte..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Izbriši sve (vrati na fabričke postavke)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Brisanje svih podataka i profila s informativno-zabavnog sistema"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Ovim ćete u potpunosti izbrisati sve podatke informativno-zabavnog sistema vozila, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"podatke i postavke sistema i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Trenutno ste prijavljeni na sljedećim računima:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Drugi profili su prisutni u ovom vozilu."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Potpuno izbriši sve podatke"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Potpuno izbrisati sve podatke?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ovim ćete potpuno izbrisati podatke svog ličnog profila, račune i preuzete aplikacije na ovom informativno-zabavnom sistemu.\n\nNe možete opozvati ovu radnju."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Izbriši sve podatke"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Potpuno brisanje podataka"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Pričekajte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vrijeme"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Postavi datum, vrijeme, vremensku zonu i formate"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatski datum i vrijeme"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sva odobrenja administratora"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Postavi kao administratora"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći izbrisati korisnike, uključujući druge Administratore te vratiti sistem na fabričke postavke."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Putem ovog profila bit će moguće izbrisati profile, uključujući druge administratore, te vratiti sistem na fabričke postavke."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ova radnja se ne može poništiti."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, postavi kao administratora"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Kreirajte nove korisnike"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Kreiranje novih profila"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Uspostavljajte telefonske pozive"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Poruke putem mobilnih podataka auta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalirajte nove aplikacije"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstalirajte aplikacije"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za sve druge korisnike."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dostignut limit za broj korisnika"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="few">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="other">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Dodaj profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Novi profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Dodati novi profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kada dodate novi profil, ta osoba treba postaviti svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Putem bilo kojeg profila mogu se ažurirati aplikacije za sve ostale profile."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Dosegnuli ste maksimalni broj profila"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="few">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> profila.</item>
+      <item quantity="other">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> profila.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Kreiranje novog korisnika nije uspjelo"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbrisati ovog korisnika?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sve aplikacije i podaci će biti izbrisani."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspjelo."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Kreiranje novog profila nije uspjelo"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Izbrisati ovaj profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Sve aplikacije i podaci za ovaj profil će se izbrisati"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Brisanje profila nije uspjelo."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ovaj profil će se izbrisati kada zamijenite profile ili ponovo pokrenete vozilo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Pokušaj ponovo"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Brisati zadnjeg korisnika?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nakon što izbrišete preostalog korisnika ovog automobila, kreirat će se novi korisnik administrator."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Svi podaci, postavke i aplikacije povezane s ovim korisnikom bit će izbrisani. Morat ćete ponovo postaviti sistem."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Izbrisati posljednji preostali profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ako izbrišete jedini preostali profil za ovo vozilo, svi podaci, postavke i aplikacije povezani s ovim profilom će se potpuno izbrisati."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Nakon vraćanja na zadano, možete postaviti novi profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Odabir novog administratora"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Morate odabrati najmanje jednog administratora. Da izbrišete ovog, prvo odaberite zamjenskog."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije postavljen"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Izmjena korisničkog imena"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Uredite naziv profila"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Polje ne može biti prazno."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Korisničko ime koje ste unijeli je nevažeće."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Naziv profila koji ste unijeli nije važeći."</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Odobrenja za korisnika %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Pohrana"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzika i zvuk"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio fajlovi"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Računanje…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Veličina aplikacije"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Korisnički podaci"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Podaci profila"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Keš memorija"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Ukupno"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Obriši pohranu"</string>
@@ -541,7 +575,7 @@
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinhronizacija je isključena za sve stavke"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Sinhronizir. ISKLJUČENO"</string>
     <string name="sync_error" msgid="6698021343089247914">"Greška u sinhroniziranju"</string>
-    <string name="last_synced" msgid="4745124489150101529">"Posljednja sinhronizacija: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Posljednje sinhroniziranje: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="1237573373537382416">"Sinhroniziranje u toku…"</string>
     <string name="sync_one_time_sync" msgid="491707183321353107">"Dodirnite da sinhronizirate odmah<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinhroniziranje"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Trenutno se javljaju problemi sa sinhroniziranjem. Ubrzo će opet raditi."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatnost"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Podaci vozila"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrolirajte pristup aplikacije vašoj lokaciji"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontrolirajte pristup aplikacije mikrofonu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Podaci vozila"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Upravljajte aktivnostima i informacijama pohranjenim u ovom vozilu"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Izbriši profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Izbrišite profile i račune s informativno-zabavnog sistema"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ova radnja nije dostupna za vaš profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sigurnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje ekrana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ništa"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"UREDU"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Ukloniti zaključavanje ekrana?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Svi će imati pristup vašem računu"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zaključavanje profila"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Postavite automatsko otključavanje"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Unesite svoj PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Unesite lozinku"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Postavite PIN radi sigurnosti"</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Ukupan broj cifri mora biti manji od <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Mora sadržavati samo cifre 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administrator uređaja ne dozvoljava korištenje nedavnog PIN kôda"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Vaš IT administrator je blokirao uobičajene PIN kôdove. Probajte drugi PIN kôd."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Vaš IT administrator je blokirao uobičajene PIN kôdove. Probajte drugi PIN kôd."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Ne može sadržavati nevažeći znak."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Lozinka je nevažeća. Mora sadržavati najmanje 4 znaka."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administrator uređaja ne dozvoljava korištenje nedavne lozinke"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Greška prilikom pohrane lozinke"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vaš IT administrator je blokirao uobičajene lozinke. Probajte drugu lozinku."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Vaš IT administrator je blokirao uobičajene lozinke. Probajte drugu lozinku."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nije dozvoljen rastući, opadajući ili ponavljajući niz cifri."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tipka Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Izađite iz demonstr."</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Izađite iz načina demonstr."</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ovim će se izbrisati račun za demonstraciju i vratiti sistem na fabričke postavke. Svi korisnički podaci bit će izgubljeni."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ovim ćete izbrisati račun za demonstraciju i vratiti sistem na fabričke postavke. Svi podaci profila će se izgubiti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Izađite iz demonstr."</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcija nije dostupna tokom vožnje"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Nije moguće dodati korisnika za vrijeme vožnje"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Nije moguće dodati profil za vrijeme vožnje"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Pretraživanje"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistent i glas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacija Asistent"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Korištenje teksta s ekrana"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Dozvoli Asistentu da pristupi sadržaju ekrana"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Koristi snimak ekrana"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Dozvolite Asistentu da pristupi snimku ekrana"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedavno poslano"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Sve aplikacije"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili i računi"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Upravljajte drugim profilima"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Dodaj profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Izbriši ovaj profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Dodaj profil"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 3bdbd87..a6caaf8 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Pantalla"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivell de brillantor"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Brillantor adaptativa"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimitza el nivell de brillantor segons la llum disponible"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ajusta la brillantor de la pantalla a l\'entorn"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Llum nocturna activada"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"pantalla, pantalla tàctil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"pantalla atenuada, pantalla tàctil, bateria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"pantalla atenuada, pantalla tàctil, bateria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"pantalla atenuada, nit, color"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode nocturn"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Xarxa i Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Xarxa mòbil"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Estableix un advertiment d\'ús de dades"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Estableix un límit d\'ús de dades"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Estableix"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Xarxa OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB en ús (%2$s - %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Uneix-me a una altra xarxa"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferències de xarxa"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"S\'està activant la Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"S\'està desactivant la Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"No s\'ha pogut connectar a la xarxa"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Afegeix una xarxa"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connecta"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"S\'està connectant…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"La xarxa està fora de l\'abast"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contrasenya"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostra la contrasenya"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Introdueix un nom de xarxa"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Una aplicació vol que el capçal sigui visible per a altres dispositius Bluetooth durant <xliff:g id="TIMEOUT">%1$d</xliff:g> segons."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> vol activar el Bluetooth i que el capçal sigui visible per a altres dispositius durant <xliff:g id="TIMEOUT">%2$d</xliff:g> segons."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Una aplicació vol activar el Bluetooth i que el capçal sigui visible per a altres dispositius durant <xliff:g id="TIMEOUT">%1$d</xliff:g> segons."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible com a %1$s per a altres dispositius"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Els meus dispositius"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Connectats prèviament"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s s\'ha connectat"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s s\'ha desconnectat"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Sol·licitud de vinculació de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Vincula i connecta"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Codi de vinculació per Bluetooth"</string>
@@ -198,7 +205,7 @@
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Vols vincular el dispositiu amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Permet que <xliff:g id="DEVICE_NAME">%1$s</xliff:g> accedeixi als contactes i a l\'historial de trucades"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"Pot ser que també hagis d\'introduir aquest PIN a l\'altre dispositiu."</string>
-    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Pot ser que també hagis d\'introduir aquesta clau d\'accés a l\'altre dispositiu."</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Pot ser que també hagis d\'introduir aquesta contrasenya a l\'altre dispositiu."</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Ha de tenir 16 dígits"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Generalment 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Sol·licitud de vinculació"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"So de notificació predeterminat"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"So d\'alarma predeterminat"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Desa"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sons d\'alerta"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"So de trucada, notificacions, alarma"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brillantor"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ajusta la pantalla per a poca llum"</string>
     <string name="units_settings" msgid="402325305096925886">"Unitats"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocitat"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distància"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostra totes les aplicacions"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplicacions predeterminades"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permisos d\'aplicacions"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplicacions que utilitzen <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controla l\'accés de les aplicacions a les teves dades"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informació de les aplicacions"</string>
     <string name="force_stop" msgid="2153183697014720520">"Força l\'aturada"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vols forçar l\'aturada?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstal·la"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si desactives aquesta aplicació, és possible que Android i altres aplicacions deixin de funcionar com esperes."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desactiva l\'aplicació"</string>
-    <string name="not_installed" msgid="4218816013370552746">"No instal·lada per a l\'usuari"</string>
+    <string name="not_installed" msgid="4163454337822508007">"No està instal·lada per a aquest perfil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificacions"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Emmagatzematge i memòria cau"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versió: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No s\'ha concedit cap permís"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No s\'ha sol·licitat cap permís"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplicacions no utilitzades"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplicacions no utilitzades</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplicació no utilitzada</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Suprimeix els permisos i allibera espai"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s a l\'emmagatzematge intern"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Ús de dades"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ús de dades de l\'aplicació"</string>
@@ -329,14 +346,22 @@
     <string name="auto_launch_disable_text" msgid="3595315315092716391">"No s\'ha definit cap valor predeterminat."</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"Has triat executar l\'aplicació de manera predeterminada per fer algunes accions."</string>
     <string name="auto_launch_reset_text" msgid="590439611312092392">"Esborra els valors predeterminats"</string>
-    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Obre els enllaços admesos"</string>
+    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Obrir els enllaços admesos"</string>
     <string name="app_link_open_always" msgid="5783167184335545230">"Obre en aquesta aplicació"</string>
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pregunta sempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"No obris en aquesta aplicació"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Enllaços admesos"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplicacions"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Obertes fa poc"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Mostra les %1$d aplicacions"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gestor de permisos"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controla l\'accés de les aplicacions a les teves dades"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Per a l\'Assistent i més"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Per al sistema i altres opcions de configuració"</string>
     <string name="special_access" msgid="5730278220917123811">"Accés especial d\'aplicacions"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostra el sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Amaga el sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Amaga les aplicacions del sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar configuració sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Aquest permís permet que una aplicació modifiqui la configuració del sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Accés a les notificacions"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hi ha cap sol·licitud d\'ubicació recent"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos al nivell de l\'aplicació"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Serveis d\'ubicació"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Utilitza la ubicació"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Actualitzacions del sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Configuració avançada"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informació sobre el dispositiu, informació legal, restabliment de les dades de fàbrica i més"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versió d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivell de pedaç de seguretat d\'Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model i maquinari"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Es restabliran totes les preferències de:\n\n"<li>"aplicacions desactivades"</li>\n<li>"notificacions d\'aplicacions desactivades"</li>\n<li>"aplicacions predeterminades per a les accions"</li>\n<li>"restriccions de dades en segon pla per a les aplicacions"</li>\n<li>"restriccions de permisos"</li>\n\n"No perdràs les dades de les aplicacions."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restableix les aplicacions"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"S\'han restablert les preferències d\'aplicacions"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Esborra totes les dades (restabliment de les dades de fàbrica)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Aquesta opció esborrarà totes dades de la unitat principal del vehicle, com ara:\n\n"<li>"el teu Compte de Google"</li>\n<li>"la configuració i les dades d\'aplicacions i del sistema"</li>\n<li>"les aplicacions baixades"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Actualment tens la sessió iniciada als comptes següents:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hi ha altres usuaris al vehicle."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Restableix el vehicle"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Restablir?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vols esborrar tota la informació personal i les aplicacions baixades? Aquesta acció no es pot desfer."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Esborra-ho tot"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"S\'està esborrant"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Esborra totes les dades (restabliment de les dades de fàbrica)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Esborra tots els perfils i les dades del sistema d\'informació i entreteniment"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Aquesta opció esborrarà totes les dades del sistema d\'informació i entreteniment del vehicle, com ara:\n\n"<li>"El teu Compte de Google"</li>\n<li>"La configuració i les dades de les aplicacions i del sistema"</li>\n<li>"Les aplicacions baixades"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Actualment tens la sessió iniciada als comptes següents:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Hi ha altres perfils en aquest vehicle."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Esborra totes les dades"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vols esborrar totes les dades?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Això esborrarà totes les dades del perfil personal, els comptes i les aplicacions baixades d\'aquest sistema d\'informació i entreteniment.\n\nAquesta acció no es pot desfer."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Esborra-ho tot"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"S\'està esborrant"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Espera..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data i hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Estableix la data, l\'hora, la zona horària i els formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data i hora automàtiques"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sessió iniciada com a administrador"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tots els permisos d\'administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Converteix en administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'usuari podrà suprimir usuaris, inclosos altres administradors, i restablir les dades de fàbrica del sistema."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"El perfil podrà suprimir perfils, inclosos altres administradors, i restablir les dades de fàbrica del sistema."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Aquesta acció no es pot desfer."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, converteix en administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Crea usuaris"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Crea perfils"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fes trucades"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Envia SMS amb dades mòbils del cotxe"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instal·la aplicacions noves"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstal·la aplicacions"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Afegeix un usuari"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Usuari nou"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Vols afegir un usuari?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quan s\'afegeix un usuari nou, aquesta persona ha de configurar el seu espai."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsevol usuari pot actualitzar les aplicacions de la resta d\'usuaris."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"S\'ha assolit el límit d\'usuaris"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Pots crear fins a <xliff:g id="COUNT">%d</xliff:g> usuaris.</item>
-      <item quantity="one">Només es pot crear 1 usuari.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Afegeix un perfil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Perfil nou"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vols afegir un perfil nou?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Quan s\'afegeix un perfil nou, aquesta persona ha de configurar el seu espai."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Qualsevol perfil pot actualitzar les aplicacions dels altres perfils."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"S\'ha assolit el límit de perfils"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Pots crear fins a <xliff:g id="COUNT">%d</xliff:g> perfils.</item>
+      <item quantity="one">Només es pot crear un perfil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"No s\'ha pogut crear l\'usuari"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vols suprimir l\'usuari?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se suprimiran totes les dades i totes les aplicacions."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"No s\'ha pogut suprimir l\'usuari."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"No s\'ha pogut crear un perfil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vols suprimir aquest perfil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Totes les aplicacions i dades d\'aquest perfil se suprimiran"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"No s\'ha pogut suprimir el perfil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Aquest perfil se suprimirà quan canviïs de perfil o quan tornis a engegar el vehicle."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignora"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Torna-ho a provar"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suprimir l\'últim usuari?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Després de suprimir l\'únic usuari restant d\'aquest cotxe, es crearà un usuari administrador nou."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"S\'esborraran totes les dades, les opcions de configuració i les aplicacions associades a aquest usuari. Hauràs de tornar a configurar el sistema."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vols suprimir el darrer perfil restant?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Si suprimeixes l\'únic perfil restant d\'aquest vehicle, s\'esborraran totes les dades, opcions de configuració i aplicacions que hi estiguin associades."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Després del restabliment, podràs configurar un perfil nou."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Tria un administrador nou"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Hi ha d\'haver com a mínim un administrador. Per suprimir aquest administrador, primer n\'has de triar un altre."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Tria un administrador"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Tu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"No configurat"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edita el nom d\'usuari"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edita el nom del perfil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"El camp no pot estar en blanc."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"El nom d\'usuari que has introduït no és vàlid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"El nom de perfil que has introduït no és vàlid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuaris"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Perfils"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedits a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Emmagatzematge"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música i àudio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Fitxers d\'àudio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"S\'està calculant…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Mida de l\'aplicació"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dades d\'usuari"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dades del perfil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Memòria cau"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Esborra emmagatzematge"</string>
@@ -533,7 +566,7 @@
     <string name="account_sync_title" msgid="6541844336300236915">"Sincronització del compte"</string>
     <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronització activada per a <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> elements"</string>
     <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronització activada per a tots els elements"</string>
-    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronització desactivada per a tots els elements"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"La sincronització està desactivada per a tots els elements"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Sincronització desactivada"</string>
     <string name="sync_error" msgid="6698021343089247914">"Error de sincronització"</string>
     <string name="last_synced" msgid="4745124489150101529">"Última sincronització: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel·la la sincronització"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"La sincronització té problemes. Tornarà a funcionar aviat."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privadesa"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dades del vehicle"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controla l\'accés de les aplicacions a la teva ubicació"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Micròfon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controla l\'accés de les aplicacions al micròfon"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dades del vehicle"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gestiona les activitats i la informació desades en aquest vehicle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Suprimeix el perfil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Esborra el perfil i els comptes del sistema d\'informació i entreteniment"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Aquesta acció no està disponible per al teu perfil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguretat"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueig de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Cap"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"D\'acord"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Suprimir bloqueig de pantalla?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Qualsevol persona podrà accedir al teu compte"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Bloqueig del perfil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configura el desbloqueig automàtic"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Introdueix el PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Introdueix la contrasenya"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Per seguretat, defineix un PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Ha de tenir <xliff:g id="NUMBER">%d</xliff:g> dígits o menys"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Només pot contenir dígits del 0 al 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"L\'administrador del dispositiu no permet que s\'utilitzi un PIN recent"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"L\'administrador de TI ha bloquejat els PIN més comuns. Prova un altre PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"L\'administrador de TI ha bloquejat els PIN més comuns. Prova un altre PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"No pot incloure un caràcter no vàlid."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"La contrasenya no és vàlida; ha de tenir com a mínim 4 caràcters."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"L\'administrador del dispositiu no permet que s\'utilitzi una contrasenya recent"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error en desar la contrasenya"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"L\'administrador de TI ha bloquejat les contrasenyes més comunes. Prova una altra contrasenya."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"L\'administrador de TI ha bloquejat les contrasenyes més comunes. Prova una altra contrasenya."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No es permet cap seqüència de dígits ascendents, descendents ni repetits."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcions de bloqueig de pantalla"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: fa <xliff:g id="NUM_DAYS">%3$s</xliff:g> dies"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla de retorn"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Surt de la demostració"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Surt del mode de demostració"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Aquesta acció suprimirà el compte de demostració i es restabliran les dades de fàbrica del sistema. Es perdran totes les dades d\'usuari."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Aquesta acció suprimirà el compte de demostració i es restabliran les dades de fàbrica del sistema. Es perdran totes les dades del perfil."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Surt de la demostració"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Aquesta funció no està disponible mentre condueixes"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"No pots afegir usuaris mentre condueixes"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"No pots afegir perfils mentre condueixes"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Cerca"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent i veu"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplicació Assistent"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Ús del text de la pantalla"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permet que l\'Assistent accedeixi al contingut de la pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Ús de captures de pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permet que l\'Assistent accedeixi a la imatge de la pantalla"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Enviades fa poc"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Totes les aplicacions"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Perfils i comptes"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gestiona altres perfils"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Afegeix un perfil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Suprimeix aquest perfil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Afegeix un perfil"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c64195e..ce2345b 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Displej"</string>
     <string name="brightness" msgid="2919605130898772866">"Úroveň jasu"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptivní jas"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimalizovat úroveň jasu podle okolního světla"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Přizpůsobit jas obrazovky okolí"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Noční režim je aktivní"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"displej, dotyková obrazovka"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ztlumení obrazovky, dotyková obrazovka, baterie"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ztlumení obrazovky, dotyková obrazovka, baterie"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ztlumení obrazovky, noc, tónování"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noční režim"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Síť a internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilní síť"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Nastavení upozornění na využití dat"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Nastavení limitu datových přenosů"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Nastavit"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Síť OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s – %3$s využito %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Připojit k jiné síti"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Možnosti sítě"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Zapínání Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Vypínání Wi‑Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Připojení k síti se nezdařilo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Přidat síť"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Připojit"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Připojování…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Síť není v dosahu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Heslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Zobrazit heslo"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Zadejte název sítě"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikace chce na <xliff:g id="TIMEOUT">%1$d</xliff:g> s zviditelnit autorádio pro ostatní zařízení Bluetooth."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> chce zapnout Bluetooth a na <xliff:g id="TIMEOUT">%2$d</xliff:g> s zviditelnit autorádio pro ostatní zařízení."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikace chce zapnout Bluetooth a na <xliff:g id="TIMEOUT">%1$d</xliff:g> s zviditelnit autorádio pro ostatní zařízení."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Viditelné pro ostatní zařízení jako %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Má zařízení"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Dříve připojeno"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Zařízení %1$s je připojeno"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Zařízení %1$s je odpojeno"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Požadavek na párování zařízení Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párovat a připojit"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Párovací kód Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Výchozí zvuk oznámení"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Výchozí zvuk budíku"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Uložit"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvuky upozornění"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Vyzvánění, oznámení, budík"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Jas"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Přizpůsobit obrazovku slabému světlu"</string>
     <string name="units_settings" msgid="402325305096925886">"Jednotky"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Rychlost"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Vzdálenost"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Zobrazit všechny aplikace"</string>
     <string name="default_applications" msgid="1558183275638697087">"Výchozí aplikace"</string>
     <string name="app_permissions" msgid="32799922508313948">"Oprávnění aplikací"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikace, které používají oprávnění <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Ovládejte přístup aplikací k vašim datům"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informace o aplikaci"</string>
     <string name="force_stop" msgid="2153183697014720520">"Vynutit ukončení"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vynutit ukončení?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Odinstalovat"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Pokud tuto aplikaci deaktivujete, systém Android a ostatní aplikace nemusejí fungovat správně."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktivovat aplikaci"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Pro tohoto uživatele nenainstalováno"</string>
+    <string name="not_installed" msgid="4163454337822508007">"U tohoto profilu není nainstalováno"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Oprávnění"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Oznámení"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Úložiště a mezipaměť"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verze: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nebyla udělena žádná oprávnění"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nevyžaduje žádná oprávnění"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nepoužívané aplikace"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nepoužívané aplikace</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nepoužívané aplikace</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nepoužívaných aplikací</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nepoužívaná aplikace</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Odebrat oprávnění a uvolnit místo"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s v interním úložišti"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Využití dat"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Využití dat aplikací"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pokaždé se zeptat"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Neotevírat v této aplikaci"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podporované odkazy"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikace"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedávno spuštěné"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Zobrazit všechny aplikace (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Správce oprávnění"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Ovládejte přístup aplikací k vašim datům"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Pro Asistenta a další aplikace"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"K systému a dalším nastavením"</string>
     <string name="special_access" msgid="5730278220917123811">"Zvláštní přístup aplikací"</string>
     <string name="show_system" msgid="4401355756969485287">"Zobrazit systémové aplikace"</string>
     <string name="hide_system" msgid="8845453295584638040">"Skrýt systémové aplikace"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Skrýt systémové aplikace"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Změny nastavení systému"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Toto oprávnění umožňuje aplikaci měnit nastavení systému."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Přístup k oznámením"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žádné nedávné žádosti o určení polohy"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Oprávnění na úrovni aplikace"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Služby určování polohy"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Používat polohu"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizace systému"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Rozšířená nastavení"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informace, právní informace, resetování a další"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verze systému Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Úroveň opravy zabezpečení Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model a hardware"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Touto akcí obnovíte všechna nastavení pro:\n\n"<li>"deaktivované aplikace,"</li>\n<li>"deaktivovaná oznámení aplikací,"</li>\n<li>"výchozí aplikace k provádění akcí,"</li>\n<li>"omezení dat na pozadí pro aplikace,"</li>\n<li>"omezení oprávnění."</li>\n\n"O žádná data aplikací nepřijdete."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetovat aplikace"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Předvolby aplikací byly resetovány"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Vymazat data (tovární reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Touto akcí vymažete všechna data z řídicí jednotky vozidla, včetně těchto:\n\n"<li>"váš účet Google,"</li>\n<li>"data a nastavení systému a aplikací,"</li>\n<li>"stažené aplikace."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Jste přihlášeni k následujícím účtům:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tomto vozidle jsou další uživatelé."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetovat vozidlo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetovat?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Chcete vymazat všechny osobní údaje a stažené aplikace? Tuto akci nelze vrátit zpět."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vymazat vše"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Mazání"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Prosím čekejte..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Vymazat data (tovární reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Vymazat z informačního a zábavního systému všechna data a profily"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Touto akcí vymažete všechna data z informačního a zábavního systému vozidla, včetně těchto:\n\n"<li>"váš účet Google,"</li>\n<li>"data a nastavení systému a aplikací,"</li>\n<li>"stažené aplikace."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Jste přihlášeni k následujícím účtům:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"V tomto vozidle jsou další profily."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Vymazat všechna data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vymazat všechna data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Touto akcí z tohoto informačního a zábavního systému vymažete veškerá data osobního profilu, účty a stažené aplikace.\n\nTuto akci nelze vrátit zpět."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Vymazat vše"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Mazání"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Prosím čekejte…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum a čas"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Umožňuje nastavit datum, čas, časové pásmo a formát"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatické datum a čas"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Jste přihlášeni jako administrátor"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Všechna oprávnění administrátora"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nastavit jako administrátora"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Uživatel bude moci mazat ostatní uživatele (včetně administrátorů) a resetovat systém do továrního nastavení."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Tento profil bude moci mazat ostatní profily (včetně administrátorů) a resetovat systém do továrního nastavení."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Tuto akci nelze vrátit zpět."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ano, nastavit jako administrátora"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Vytvoření nových uživatelů"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Vytváření nových profilů"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonování"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS přes mobilní data auta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalace nových aplikací"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinstalace aplikací"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Přidat uživatele"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nový uživatel"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Přidat nového uživatele?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Každý nově přidaný uživatel si musí nastavit vlastní prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Každý uživatel může aktualizovat aplikace všech ostatních uživatelů."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Bylo dosaženo limitu uživatelů"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="few">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatele.</item>
-      <item quantity="many">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatele.</item>
-      <item quantity="other">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatelů.</item>
-      <item quantity="one">Lze vytvořit jen jednoho uživatele.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Přidat profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nový profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Přidat nový profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Uživatel každého nově přidaného profilu si musí nastavit vlastní prostor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Všechny profily mohou aktualizovat aplikace všech ostatních profilů."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Maximální počet profilů dosažen"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="few">Můžete vytvořit až <xliff:g id="COUNT">%d</xliff:g> profily.</item>
+      <item quantity="many">Můžete vytvořit až <xliff:g id="COUNT">%d</xliff:g> profilu.</item>
+      <item quantity="other">Můžete vytvořit až <xliff:g id="COUNT">%d</xliff:g> profilů.</item>
+      <item quantity="one">Můžete vytvořit jen jeden profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Nového uživatele se nepodařilo vytvořit"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Smazat tohoto uživatele?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Budou smazány všechny aplikace a data."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Uživatele se nepodařilo smazat."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Vytvoření nového profilu se nezdařilo"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vymazat tento profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Veškeré aplikace a data v tomto profilu budou vymazána"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Vymazání profilu se nezdařilo."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Když přepnete profily nebo restartujete vozidlo, tento profil bude smazán."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zavřít"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Zkusit znovu"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Smazat posledního uživatele?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po smazání posledního uživatele auta bude vytvořen nový uživatel-administrátor."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Budou smazána všechna data, nastavení a aplikace tohoto uživatele. Systém bude nutné nastavit znovu."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Smazat poslední zbývající profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Pokud smažete jediný profil, který v autě zbývá, budou vymazána veškerá data, nastavení a aplikace přidružené k tomuto profilu."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Po resetu můžete nastavit nový profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Vyberte nového administrátora"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Potřebujete minimálně jednoho administrátora. Chcete-li tohoto administrátora smazat, nejprve vyberte náhradního."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Vyberte administrátora"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Jméno"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Není nastaveno"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Upravení uživatelského jména"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Upravit profilové jméno"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Pole nesmí být prázdné."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Zadané uživatelské jméno není platné."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Zadané profilové jméno je neplatné."</string>
     <string name="users_list_title" msgid="770764290290240909">"Uživatelé"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profily"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Oprávnění uživatele %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Úložiště"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Hudba a zvuk"</string>
@@ -512,12 +547,12 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Zvukové soubory"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Výpočet…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Velikost aplikace"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Uživatelská data"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profilová data"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Mezipaměť"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Celkem"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Vymazat úložiště"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Vymazat mezipaměť"</string>
-    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Smazat data aplikace?"</string>
+    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Vymazat data aplikace?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Veškerá data (všechny soubory, nastavení, účty, databáze apod.) této aplikace budou trvale vymazána."</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Data aplikace v úložišti se nepodařilo vymazat."</string>
     <string name="storage_unmount_success" msgid="1553591517580407021">"Úložiště <xliff:g id="NAME">%1$s</xliff:g> bylo bezpečně odpojeno"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Zrušit synchronizaci"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Nastaly potíže se synchronizací. Služba bude brzy obnovena."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Soukromí"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Údaje o vozidlu"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Ovládání přístupu aplikace k vaší poloze"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Ovládání přístupu aplikace k mikrofonu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Údaje o vozidlu"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Správa aktivit a údajů uložených v tomto vozidlu"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Vymazat profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Vymazat profil a účty z informačního a zábavního systému"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Tato akce ve vašem profilu není dostupná"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpečení"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zámek obrazovky"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Žádný zámek"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Odstranit zámek obrazovky?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Kdokoli bude mít přístup k vašemu účtu"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zamknutí profilu"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Nastavení automatického odemykání"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Zadejte PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Zadejte heslo"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Z bezpečnostních důvodů nastavte PIN"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"PIN musí mít méně než tento počet číslic: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Kód PIN smí obsahovat pouze číslice 0 až 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administrátor zařízení nedovoluje použití nedávno použitého kódu PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Obvyklé kódy PIN jsou blokovány administrátorem IT. Použijte jiný PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Obvyklé kódy PIN jsou blokovány administrátorem IT. Použijte jiný PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Heslo nesmí obsahovat neplatné znaky."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Heslo není platné, musí obsahovat nejméně 4 znaky."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administrátor zařízení neumožňuje použít heslo, které jste použili nedávno"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Při ukládání hesla došlo k chybě"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Obvyklá hesla jsou blokována administrátorem IT. Použijte jiné heslo."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Obvyklá hesla jsou blokována administrátorem IT. Použijte jiné heslo."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Posloupnost rostoucích, klesajících nebo opakujících se číslic není povolena."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámku obrazovky"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : před <xliff:g id="NUM_DAYS">%3$s</xliff:g> dny"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Klávesa Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Ukončit ukázku"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ukončení ukázkového režimu"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ukázkový účet bude smazán a systém se resetuje do továrního nastavení. Všechna uživatelská data budou ztracena."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ukázkový účet bude smazán a systém se resetuje do továrního nastavení. Všechna profilová data budou ztracena."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Ukončit ukázku"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ZAVŘÍT"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkce při řízení není dostupná"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Při řízení nelze přidat uživatele"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Při řízení nelze přidat profil"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Hledat"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistent a hlas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Asistenční aplikace"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Použití textu z obrazovky"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Povolit asistentovi přístup k obsahu obrazovky"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Použití snímku obrazovky"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Povolit asistentovi přístup ke snímku obrazovky"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedávno odeslané"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Všechny aplikace"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profily a účty"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Spravovat další profily"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Přidat profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Smazat tento profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Přidat profil"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index b7655aa..89b651e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Visning"</string>
     <string name="brightness" msgid="2919605130898772866">"Lysstyrke"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Automatisk lysstyrke"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimer lysstyrken til det omgivende lys"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Tilpas skærmens lysstyrke til omgivelserne"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nattelys er aktiveret"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skærm, touchskærm"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"nedton skærm, touchskærm, batteri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"nedton skærm, touchskærm, batteri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"nedton skærm, nat, farvetone"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattilstand"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Netværk og internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnetværk"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Angiv en advarsel om dataforbrug"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Angiv en grænse for dataforbrug"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Angiv"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-netværk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB er brugt %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Opret forbindelse til et andet netværk"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Netværkspræferencer"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Aktiverer Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Deaktiverer Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Der kunne ikke oprettes forbindelse til netværket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tilføj netværk"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Forbind"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Tilslutter…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Netværket er ikke inden for rækkevidde"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Adgangskode"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Vis adgangskode"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Giv netværket et navn"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"En app ønsker at gøre din hovedenhed synlig for andre Bluetooth-enheder i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ønsker at aktivere Bluetooth og gøre din hovedenhed synlig for andre enheder i <xliff:g id="TIMEOUT">%2$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"En app ønsker at aktivere Bluetooth og gøre din hovedenhed synlig for andre enheder i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Synlig som %1$s for andre enheder"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mine enheder"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Tidligere forbundne enheder"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s er forbundet"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s afbrød forbindelsen"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Anmodning om Bluetooth-parring"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Tilknyt og forbind"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-parringskode"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standardlyd for notifikationer"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standardlyd for alarmer"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Gem"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Underretningslyde"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringetone, notifikationer, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Lysstyrke"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Tilpas skærmen til svag belysning"</string>
     <string name="units_settings" msgid="402325305096925886">"Måleenhed"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hastighed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Afstand"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Vis alle apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Standardapps"</string>
     <string name="app_permissions" msgid="32799922508313948">"Apptilladelser"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps, der bruger <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Administrer dine apps\' adgang til data"</string>
     <string name="applications_settings" msgid="794261395191035632">"Appinfo"</string>
     <string name="force_stop" msgid="2153183697014720520">"Tving til at standse"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vil du tvinge appen til at standse?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Afinstaller"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Hvis du deaktiverer denne app, kan det medføre, at Android-apps og andre apps ikke fungerer korrekt."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiver appen"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ikke installeret for denne bruger"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ikke installeret for denne profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Tilladelser"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifikationer"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Lagerplads og cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Der er ikke givet nogen tilladelser"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Der er ikke anmodet om nogen tilladelser"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Apps, du ikke bruger"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> app, du ikke bruger</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apps, du ikke bruger</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Fjern tilladelser, og frigør plads"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s i intern lagerplads"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Dataforbrug"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Dataforbrug i apps"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Spørg hver gang"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Åbn ikke i denne app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Understøttede links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Åbnet for nylig"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Se alle %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Tilladelsesadministrator"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Administrer dine apps\' adgang til data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Til Assistent m.m."</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Til systemindstillinger m.m."</string>
     <string name="special_access" msgid="5730278220917123811">"Særlig appadgang"</string>
     <string name="show_system" msgid="4401355756969485287">"Vis system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Skjul system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Skjul systemapps"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Rediger systemindstillingerne"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Denne tilladelse giver en app lov til at ændre systemindstillingerne."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Adgang til notifikationer"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Der er ingen seneste placeringsanmodninger"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tilladelser på appniveau"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Placeringstjenester"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Brug placering"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Systemopdateringer"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avanceret"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Om, juridiske oplysninger, nulstilling m.m."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Seneste sikkerhedsopdatering i Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model og hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Dette vil nulstille alle præferencer for:\n\n "<li>"Deaktiverede apps"</li>\n" "<li>"Deaktiverede appnotifikationer"</li>\n" "<li>"Standardapps til handlinger"</li>\n" "<li>"Begrænsning af baggrundsdata for apps"</li>\n<li>" "</li>"Eventuelle begrænsede tilladelser\n\n Du vil ikke miste nogen appdata."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Nulstil apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-præferencerne er blevet nulstillet"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Ryd alle data (nulstil)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Denne handling sletter alle data fra dit køretøjs hovedenhed. bl.a.:\n\n"<li>"Din Google-konto"</li>\n<li>"Data og indstillinger for system og apps "</li>\n<li>"Downloadede apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Du er i øjeblikket logget ind på følgende konti:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Der er andre brugere på dette køretøj."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Nulstil køretøj"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vil du nulstille?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vil du slette alle dine personlige oplysninger og downloadede apps? Du kan ikke fortryde denne handling."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Slet alt"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Sletter"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vent et øjeblik..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Ryd alle data (gendan fabriksindst.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ryd alle data og profiler fra infotainmentsystemet"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Denne handling rydder alle data fra dit køretøjs infotainmentsystem, bl.a.:\n\n"<li>"Din Google-konto"</li>\n<li>"Data og indstillinger for system og apps"</li>\n<li>"Downloadede apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Du er i øjeblikket logget ind på følgende konti:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Der er knyttet andre profiler til dette køretøj."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Ryd alle data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vil du rydde alle data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Denne handling vil rydde alle dine personlige profildata, konti og downloadede apps på dette infotainmentsystem.\n\nHandlingen kan ikke fortrydes."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Slet alt"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Rydder"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Vent et øjeblik…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dato og klokkeslæt"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Angiv dato, klokkeslæt, tidszone og formater"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatisk dato og tid"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Logget ind som administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle administratortilladelser"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tildel administratorrettigheder"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Brugeren vil kunne slette brugere, heriblandt andre administratorer, og gendanne systemets fabriksindstillinger."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profilen vil kunne slette profiler, bl.a. andre administratorer, og gendanne systemets fabriksindstillinger."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Denne handling kan ikke fortrydes."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, tildel administratorrettigheder"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Opret nye brugere"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Opret nye profiler"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Foretag telefonopkald"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sms-beskeder via bilens mobildata"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer nye apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Afinstaller apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tilføj bruger"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruger"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tilføj ny bruger?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du tilføjer en ny bruger, skal vedkommende konfigurere sit område."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brugere kan opdatere apps for alle andre brugere."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Grænsen for brugere er nået"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Der kan kun oprettes <xliff:g id="COUNT">%d</xliff:g> bruger.</item>
-      <item quantity="other">Der kan kun oprettes <xliff:g id="COUNT">%d</xliff:g> brugere.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Tilføj profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Ny profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vil du tilføje en ny profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Når du tilføjer en ny profil, skal den pågældende person konfigurere sit område."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Alle profiler kan opdatere apps for alle øvrige profiler."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Grænsen for profiler er nået"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Du kan oprette <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="other">Du kan oprette op til <xliff:g id="COUNT">%d</xliff:g> profiler.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Der kunne ikke oprettes en ny bruger"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vil du slette brugeren?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle apps og data slettes."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Brugeren kunne ikke slettes."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Der kunne ikke oprettes en ny profil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vil du slette denne profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Alle apps og data, der er knyttet til denne profil, slettes"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profilen kunne ikke slettes."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Denne profil slettes, når du skifter profil eller starter køretøjet igen."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Luk"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Prøv igen"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Vil du slette den sidste bruger?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Når den sidste tilbageværende bruger er slettet for denne bil, oprettes en ny administrator."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle data, indstillinger og apps, der er knyttet til denne bruger, slettes. Du skal konfigurere systemet igen."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vil du slette den sidste profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Hvis du sletter den sidste tilbageværende profil for dette køretøj, ryddes alle de data, indstillinger og apps, der er knyttet til denne profil."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Når nulstillingen er gennemført, kan du konfigurere en ny profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Vælg en ny administrator"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Der skal være mindst én administrator. Hvis du vil slette denne, skal du først vælge en anden."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Vælg en administrator"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Dig (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Navn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ikke konfigureret"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Rediger brugernavn"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Rediger profilnavn"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Feltet skal udfyldes."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Det brugernavn, du har angivet, er ugyldigt."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Det angivne profilnavn er ugyldigt."</string>
     <string name="users_list_title" msgid="770764290290240909">"Brugere"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiler"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Tilladelser er givet til %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Lagerplads"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musik og lyd"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Lydfiler"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Beregner…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Appstørrelse"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Brugerdata"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profildata"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"I alt"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Ryd lagerplads"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuller synkronisering"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Der er i øjeblikket problemer med synkroniseringen. Den fortsætter om et øjeblik."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatliv"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Data i bilen"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Styr dine apps\' adgang til din placering"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Styr dine apps\' adgang til mikrofonen"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Data i bilen"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Administrer aktiviteter og oplysninger, der er gemt i denne bil"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Slet din profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ryd din profil og dine konti fra infotainmentsystemet"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Denne handling kan ikke udføres for din profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sikkerhed"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skærmlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ingen"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Vil du fjerne skærmlåsen?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Dette vil betyde, at alle kan få adgang til din konto"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profillås"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Konfigurer automatisk oplåsning"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Angiv din pinkode"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Angiv din adgangskode"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Angiv en pinkode af sikkerhedshensyn"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Pinkoden skal indeholde færre end <xliff:g id="NUMBER">%d</xliff:g> tal"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Må kun indeholde tallene 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Enhedens administrator tillader ikke brug af en nylig brugt pinkode"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Brug af almindelige pinkoder er blokeret af din it-administrator. Prøv en anden pinkode."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Brug af almindelige pinkoder er blokeret af din it-administrator. Prøv en anden pinkode."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Der må ikke bruges et ugyldigt tegn."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Adgangskoden er ugyldig. Den skal fylde mindst 4 tegn."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Enhedens administrator tillader ikke brug af en nylig brugt adgangskode"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Adgangskoden kunne ikke gemmes"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Brug af almindelige adgangskoder er blokeret af din it-administrator. Prøv en anden adgangskode."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Brug af almindelige adgangskoder er blokeret af din it-administrator. Prøv en anden adgangskode."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stigende eller faldende talsekvens og gentagne tal er ikke tilladt."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valgmuligheder for skærmlås"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dage siden"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter-tast"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Luk demotilstand"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Luk demotilstand"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Denne handling sletter demokontoen og gendanner systemets fabriksdata. Du mister alle brugerdata."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Denne handling sletter demokontoen og gendanner systemets fabriksdata. Du mister alle profildata."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Luk demotilstand"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"AFVIS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funktionen er ikke tilgængelig, mens du kører"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Du kan ikke tilføje brugere, mens du kører"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Du kan ikke tilføje brugere, mens du kører"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Søg"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Google Assistent og stemmekommandoer"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent-app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Brug tekst fra skærmen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Giv Assistent adgang til indhold på skærmen"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Brug screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Giv Assistent adgang til screenshot"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Sendt for nylig"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Alle apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiler og konti"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Administrer andre profiler"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Tilføj en profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Slet denne profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Tilføj profil"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index e623484..347e6ac 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Helligkeit"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Automatische Helligkeit"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Helligkeit an Lichtverhältnisse anpassen"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nachtlicht ist eingeschaltet"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"bildschirm, display, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"display dimmen, bildschirm dimmen, touchscreen, akku"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"display dimmen, bildschirm dimmen, touchscreen, akku"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"display dimmen, bildschirm dimmen, nacht, tönung"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Netzwerk und Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilfunknetz"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Warnung für Datennutzung festlegen"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Limit für Datennutzung festlegen"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Festlegen"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"WLAN"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WLAN wird aktiviert…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WLAN wird deaktiviert…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Netzwerkverbindung konnte nicht hergestellt werden"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"WLAN hinzufügen"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Verbinden"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Wird verbunden…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Netzwerk außer Reichweite"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Passwort"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Passwort anzeigen"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Gib einen Netzwerknamen ein"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Eine App fordert die Berechtigung, deine Haupteinheit <xliff:g id="TIMEOUT">%1$d</xliff:g> Sekunden lang für andere Bluetooth-Geräte sichtbar zu machen."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> fordert die Berechtigung, Bluetooth zu aktivieren und deine Haupteinheit <xliff:g id="TIMEOUT">%2$d</xliff:g> Sekunden lang für andere Geräte sichtbar zu machen."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Eine App fordert die Berechtigung, Bluetooth zu aktivieren und deine Haupteinheit <xliff:g id="TIMEOUT">%1$d</xliff:g> Sekunden lang für andere Geräte sichtbar zu machen."</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Anfrage zur Bluetooth-Kopplung"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koppeln &amp; verbinden"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-Kopplungscode"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standard-Benachrichtigungston"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standard-Weckton"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Speichern"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"Einheiten"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Geschwindigkeit"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distanz"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"Alle Apps anzeigen"</string>
     <string name="default_applications" msgid="1558183275638697087">"Standard-Apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App-Berechtigungen"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps, die die Berechtigung \"<xliff:g id="APPS">%1$s</xliff:g>\" verwenden"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"App-Info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Beenden erzwingen"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Beenden erzwingen?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Deinstallieren"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Bei Deaktivierung dieser App funktionieren Android und andere Apps möglicherweise nicht mehr ordnungsgemäß."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"App deaktivieren"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nicht für diesen Nutzer installiert"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"Berechtigungen"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Benachrichtigungen"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Speicher und Cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Keine Berechtigungen gewährt"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Keine Berechtigungen angefordert"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nicht verwendete Apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nicht verwendete Apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nicht verwendete App</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Berechtigungen löschen/Speicher freigeben"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in internem Speicher"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datennutzung"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Datenverbrauch durch Apps"</string>
@@ -334,15 +367,30 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Jedes Mal fragen"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"In dieser App nicht öffnen"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Unterstützte Links"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"Spezieller App-Zugriff"</string>
     <string name="show_system" msgid="4401355756969485287">"Systemprozesse anzeigen"</string>
     <string name="hide_system" msgid="8845453295584638040">"Systemprozesse ausblenden"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"System-Apps ausblenden"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Systemeinstellungen ändern"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Durch diese Berechtigung kann eine App Systemeinstellungen ändern."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Benachrichtigungszugriff"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"<xliff:g id="SERVICE">%1$s</xliff:g> Zugriff auf Benachrichtigungen erlauben?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kann alle Benachrichtigungen lesen, also auch persönliche Informationen wie Kontaktnamen und eingehende Nachrichten, sowie Benachrichtigungen schließen oder in ihnen enthaltene Aktionen auslösen.\n\nZusätzlich wird die App in die Lage versetzt, die „Bitte nicht stören“-Funktion zu aktivieren bzw. zu deaktivieren und zugehörige Einstellungen zu ändern."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Wenn du den Benachrichtigungszugriff für <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> deaktivierst, wird möglicherweise auch der „Bitte nicht stören“-Zugriff deaktiviert."</string>
+    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kann alle Benachrichtigungen lesen, also auch persönliche Informationen wie Kontaktnamen und eingehende Nachrichten, sowie Benachrichtigungen schließen oder in ihnen enthaltene Aktionen auslösen.\n\nZusätzlich wird die App in die Lage versetzt, die \"Bitte nicht stören\"-Funktion zu aktivieren bzw. zu deaktivieren und zugehörige Einstellungen zu ändern."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Wenn du den Benachrichtigungszugriff für <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> deaktivierst, wird möglicherweise auch der \"Bitte nicht stören\"-Zugriff deaktiviert."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Deaktivieren"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Abbrechen"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Zugriff auf Premium-SMS"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Keine letzten Standortanfragen"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Berechtigungen auf App-Ebene"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Standortdienste"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Systemupdates"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android-Version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stand der Sicherheitsupdates"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modell und Hardware"</string>
@@ -417,19 +473,26 @@
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Einstellungen zurücksetzen"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Die Netzwerkeinstellungen wurden zurückgesetzt"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"App-Einstellungen zurücksetzen"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hierdurch werden die folgenden Einstellungen zurückgesetzt:\n\n "<li>"Deaktivierungen von Apps"</li>\n" "<li>"Deaktivierungen von App-Benachrichtigungen"</li>\n" "<li>"Festlegungen von Standard-Apps für bestimmte Aktionen"</li>\n" "<li>"Einschränkungen der Hintergrunddaten für Apps"</li>\n" "<li>"Jegliche Zugriffsbeschränkungen"</li>\n\n" Alle App-Daten bleiben erhalten."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hierdurch werden alle Einstellungen zurückgesetzt für:\n\n"<li>"Deaktivierte Apps"</li>\n<li>"Benachrichtigungen zu deaktivierten Apps"</li>\n<li>"Standardanwendungen für Aktionen"</li>\n<li>"Einschränkungen der Hintergrunddaten für Apps"</li>\n<li>"Jegliche Zugriffsbeschränkungen"</li>\n\n"Alle App-Daten bleiben erhalten."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Apps zurücksetzen"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-Einstellungen wurden zurückgesetzt"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Alle Daten löschen (Werkseinstellungen)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Hierdurch werden alle Daten von der Haupteinheit deines Fahrzeugs gelöscht, wie z. B. die Folgenden:\n\n"<li>"Dein Google-Konto"</li>\n<li>"System- und App-Daten sowie entsprechende Einstellungen"</li>\n<li>"Heruntergeladene Apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Du bist derzeit in folgenden Konten angemeldet:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Auf der Haupteinheit dieses Fahrzeugs sind andere Nutzer vorhanden."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Fahrzeug zurücksetzen"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Zurücksetzen?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Alle personenbezogenen Daten und heruntergeladenen Apps löschen? Diese Aktion kann nicht rückgängig gemacht werden!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Alles löschen"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wird gelöscht"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Bitte warten…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Alle Daten löschen"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Du bist zurzeit in folgenden Konten angemeldet:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Alles löschen"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Wird gelöscht"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Bitte warten…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum &amp; Uhrzeit"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Datum, Uhrzeit, Zeitzone &amp; Formate festlegen"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Datum/Uhrzeit autom. festlegen"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Als Administrator angemeldet"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle Administrator-Berechtigungen"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Als Administrator festlegen"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Der Nutzer kann dann andere Nutzer einschließlich anderer Administratoren löschen und das System auf die Werkseinstellungen zurücksetzen."</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"Diese Aktion lässt sich nicht rückgängig machen."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, als Administrator festlegen"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Neue Nutzer erstellen"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Anrufe tätigen"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS über mobile Daten des Autos senden und empfangen"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Neue Apps installieren"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Apps deinstallieren"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Nutzer hinzufügen"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Neuer Nutzer"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Neuen Nutzer hinzufügen?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Jeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Nutzerlimit erreicht"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Du kannst bis zu <xliff:g id="COUNT">%d</xliff:g> Nutzer erstellen.</item>
-      <item quantity="one">Es kann nur ein Nutzer erstellt werden.</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Nutzer konnte nicht erstellt werden"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Diesen Nutzer löschen?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sämtliche Apps und Daten werden gelöscht."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Der Nutzer konnte nicht gelöscht werden."</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Dieses Profil wird gelöscht, wenn das Profil gewechselt oder das Fahrzeug wieder gestartet wird."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Schließen"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Noch einmal versuchen"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Letzten Nutzer löschen?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nachdem du den letzten Nutzer für dieses Auto gelöscht hast, wird ein neuer Administrator erstellt."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Sämtliche Daten, Einstellungen und Apps, die mit diesem Nutzer zugeordnet sind, werden gelöscht. Du musst das System dann neu einrichten."</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Neuen Administrator auswählen"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Du benötigst mindestens einen Administrator. Damit diesen Administrator löschen kannst, musst du zuerst einen Ersatz auswählen."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Administrator auswählen"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"Du (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nicht eingerichtet"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Nutzername bearbeiten"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"Das Feld darf nicht leer sein."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Der eingegebene Nutzername ist ungültig."</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"Nutzer"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"Berechtigungen für %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Speicher"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musik &amp; Audio"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audiodateien"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Wird berechnet…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App-Größe"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Nutzerdaten"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Gesamt"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Speicherinhalt löschen"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Synchronisierung abbrechen"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Bei der Synchronisierung treten momentan Probleme auf. Sie wird bald fortgesetzt."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Datenschutz"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Fahrzeugdaten"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Fahrzeugdaten"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Aktivitäten und Informationen verwalten, die in diesem Fahrzeug gespeichert sind"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"Sicherheit"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Displaysperre"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Keine"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"Ok"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Displaysperre entfernen?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Dadurch können andere auf dein Konto zugreifen"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN eingeben"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Passwort eingeben"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Richte zur Sicherheit eine PIN ein"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"PIN muss weniger als <xliff:g id="NUMBER">%d</xliff:g> Ziffern haben"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Es dürfen nur Ziffern von 0 bis 9 enthalten sein."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Der Geräteadministrator hat festgelegt, dass bereits verwendete PINs nicht noch einmal verwendet werden dürfen"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Dein IT-Administrator hat die Verwendung allzu häufiger PINs blockiert. Versuch es mit einer anderen PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Dein IT-Administrator hat die Verwendung allzu häufiger PINs blockiert. Versuch es mit einer anderen PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Ungültige Zeichen sind nicht zulässig."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Ungültiges Passwort – muss mindestens 4 Zeichen haben."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Der Geräteadministrator hat festgelegt, dass bereits verwendete Passwörter nicht noch einmal verwendet werden dürfen"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Fehler beim Speichern des Passworts"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Dein IT-Administrator hat die Verwendung allzu häufiger Passwörter blockiert. Versuch es mit einem anderen Passwort."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Dein IT-Administrator hat die Verwendung allzu häufiger Passwörter blockiert. Versuch es mit einem anderen Passwort."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Aufsteigende, absteigende oder sich wiederholende Ziffernfolgen sind unzulässig."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Optionen für die Displaysperre"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: vor <xliff:g id="NUM_DAYS">%3$s</xliff:g> Tagen"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Schlüssel eingeben"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Demo beenden"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demomodus beenden"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dadurch wird das Demokonto gelöscht und das System auf die Werkseinstellungen zurückgesetzt. Dabei gehen alle Nutzerdaten verloren."</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demo beenden"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"SCHLIEẞEN"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funktion während der Fahrt nicht verfügbar"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Während der Fahrt kann kein Nutzer hinzugefügt werden"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Suche"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; Voice"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 8805f94..c89af6f 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Οθόνη"</string>
     <string name="brightness" msgid="2919605130898772866">"Επίπεδο φωτεινότητας"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Προσαρμοστική φωτεινότητα"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Βελτιστοποίηση του επιπέδου φωτεινότητας για το διαθέσιμο φως"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Προσαρμογή φωτεινότητας οθόνης στο περιβάλλον"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Νυχτερινός φωτισμός ενεργός"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"οθόνη, οθόνη αφής"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"μείωση φωτεινότητας οθόνης, οθόνη αφής, μπαταρία"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"μείωση φωτεινότητας οθόνης, οθόνη αφής, μπαταρία"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"μείωση φωτεινότητας οθόνης, νυχτερινή λειτουργία, απόχρωση"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Νυχτερινή λειτουργία"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Δίκτυο και διαδίκτυο"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Δίκτυο κινητής τηλεφωνίας"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Ορισμός προειδοποίησης χρήσης δεδομένων"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Ορισμός ορίου χρήσης δεδομένων"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Ορισμός"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Δίκτυο OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB χρησιμοποιήθηκαν %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Σύνδεση σε άλλο δίκτυο"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Προτιμήσεις δικτύου"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ενεργοποίηση Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Απενεργοποίηση Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Αποτυχία σύνδεσης στο δίκτυο"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Προσθήκη δικτύου"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Σύνδεση"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Σύνδεση…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Το δίκτυο δεν βρίσκεται εντός εμβέλειας"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Κωδικός πρόσβασης"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Εμφάνιση κωδικού πρόσβασης"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Εισαγάγετε ένα όνομα δικτύου"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Μια εφαρμογή θέλει να κάνει τη μονάδα κεφαλής σας ορατή σε άλλες συσκευές Bluetooth για <xliff:g id="TIMEOUT">%1$d</xliff:g> δευτερόλεπτα."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> θέλει να ενεργοποιήσει το Bluetooth και να κάνει τη μονάδα κεφαλής σας ορατή σε άλλες συσκευές για <xliff:g id="TIMEOUT">%2$d</xliff:g> δευτερόλεπτα."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Μια εφαρμογή θέλει να ενεργοποιήσει το Bluetooth και να κάνει τη μονάδα κεφαλής σας ορατή σε άλλες συσκευές για <xliff:g id="TIMEOUT">%1$d</xliff:g> δευτερόλεπτα."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Η συσκευή εμφανίζεται ως %1$s στις άλλες συσκευές"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Οι συσκευές μου"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Συνδέθηκαν στο παρελθόν"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Η συσκευή %1$s συνδέθηκε"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Η συσκευή %1$s αποσυνδέθηκε"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Αίτημα σύζευξης Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Σύζευξη και σύνδεση"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Κωδικός σύζευξης Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Προεπιλεγμ. ήχος ειδοποίησης"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Προεπιλεγμ. ήχος ξυπνητηριού"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Αποθήκευση"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Ήχοι ειδοποιήσεων"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ήχος κλήσης, ειδοποιήσεις, ξυπνητήρια"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Φωτεινότητα"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Προσαρμογή οθόνης για χαμηλό φωτισμό"</string>
     <string name="units_settings" msgid="402325305096925886">"Μονάδες"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Ταχύτητα"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Απόσταση"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Εμφάνιση όλων των εφαρμογών"</string>
     <string name="default_applications" msgid="1558183275638697087">"Προεπιλεγμένες εφαρμογές"</string>
     <string name="app_permissions" msgid="32799922508313948">"Άδειες εφαρμογών"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Εφαρμογές που χρησιμοποιούν <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Ελέγξτε την πρόσβαση των εφαρμογών στα δεδομένα σας"</string>
     <string name="applications_settings" msgid="794261395191035632">"Πληροφορίες εφαρμογής"</string>
     <string name="force_stop" msgid="2153183697014720520">"Αναγκαστική διακοπή"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Αναγκαστική διακοπή;"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Απεγκατάσταση"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Εάν απενεργοποιήσετε αυτήν την εφαρμογή, η λειτουργία του Android και άλλων εφαρμογών ενδέχεται να μην είναι η αναμενόμενη."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Απενεργοποίηση εφαρμογής"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Δεν εγκαταστάθηκε για αυτόν τον χρήστη"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Δεν εγκαταστάθηκε για αυτό το προφίλ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Δικαιώματα"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Ειδοποιήσεις"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Αποθηκευτικός χώρος και κρυφή μνήμη"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Έκδοση: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Δεν έχουν εκχωρηθεί δικαιώματα"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Δεν ζητήθηκαν δικαιώματα"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Εφαρμογές που δεν χρησιμοποιούνται"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> εφαρμογές που δεν χρησιμοποιούνται</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> εφαρμογή που δεν χρησιμοποιείται</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Κατάργηση αδειών και απελευθέρωση χώρου"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s εσωτερικού αποθηκευτικού χώρου"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Χρήση δεδομένων"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Χρήση δεδομένων εφαρμογών"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ερώτηση κάθε φορά"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Να μην ανοίγει σε αυτήν την εφαρμογή"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Υποστηριζόμενοι σύνδεσμοι"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Εφαρμογές"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Άνοιξε πρόσφατα"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Προβολή όλων των εφαρμογών %1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Διαχείριση αδειών"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Ελέγξτε την πρόσβαση των εφαρμογών στα δεδομένα σας"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Για τον Βοηθό κ.ά."</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Για το σύστημα και άλλες ρυθμίσεις"</string>
     <string name="special_access" msgid="5730278220917123811">"Ειδική πρόσβαση στην εφαρμογή"</string>
     <string name="show_system" msgid="4401355756969485287">"Εμφάνιση συστήματος"</string>
     <string name="hide_system" msgid="8845453295584638040">"Απόκρυψη συστήματος"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Απόκρυψη εφαρμογών συστήματος"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Τροποποίηση ρυθμ. συστήματος"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Αυτή η άδεια επιτρέπει σε μια εφαρμογή την τροποποίηση των ρυθμίσεων συστήματος."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Πρόσβαση ειδοποιήσεων"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Δεν υπάρχουν πρόσφατα αιτήματα τοποθεσίας"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Άδειες επιπέδου εφαρμογής"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Υπηρεσίες τοποθεσίας"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Χρήση τοποθεσίας"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Σύστημα"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ενημερώσεις συστήματος"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Σύνθετες"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Πληροφορίες, νομικές πληροφορίες, επαναφορά και άλλα"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Έκδοση Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Επίπεδο ενημέρωσης κώδικα ασφαλείας Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Μοντέλο και εξοπλισμός"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Με αυτήν την ενέργεια, θα γίνει επαναφορά όλων των προτιμήσεων για:\n\n"<li>"απενεργοποιημένες εφαρμογές"</li>\n<li>"απενεργοποιημένες ειδοποιήσεις εφαρμογών"</li>\n<li>"προεπιλεγμένες εφαρμογές για ενέργειες"</li>\n<li>"περιορισμούς δεδομένων παρασκηνίου για εφαρμογές"</li>\n<li>"τυχόν περιορισμούς αδειών"</li>\n\n"Δεν θα χάσετε τυχόν δεδομένα εφαρμογών."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Επαναφορά εφαρμογών"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Έγινε επαναφορά των προτιμήσεων των εφαρμογών"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Διαγραφή δεδομένων (Επαν. εργοστ. ρυθμ.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα από την κεντρική μονάδα του οχήματος, συμπεριλαμβανομένων:\n\n"<li>"του Λογαριασμού σας Google"</li>\n<li>"των δεδομένων και των ρυθμίσεων του συστήματος και των εφαρμογών"</li>\n<li>"των εφαρμογών που έχετε κατεβάσει"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Αυτήν τη στιγμή είστε συνδεδεμένοι στους παρακάτω λογαριασμούς:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Υπάρχουν άλλοι χρήστες σε αυτό το όχημα."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Επαναφορά οχήματος"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Να γίνει επαναφορά;"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Να διαγραφούν όλα τα προσωπικά σας στοιχεία και οι εφαρμογές που έχετε κατεβάσει; Δεν είναι δυνατή η αναίρεση αυτής της ενέργειας!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Διαγραφή όλων"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Διαγραφή"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Περιμένετε…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Διαγραφή δεδομένων (επαναφ. εργ. ρυθ.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Διαγραφή όλων των δεδομένων και προφίλ του συστήματος ενημέρωσης και ψυχαγωγίας"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα από το σύστημα ενημέρωσης και ψυχαγωγίας του οχήματος, συμπεριλαμβανομένων των εξής:\n\n"<li>"Του Λογαριασμού σας Google"</li>\n<li>"Των δεδομένων και των ρυθμίσεων του συστήματος και των εφαρμογών"</li>\n<li>"Των εφαρμογών που έχετε κατεβάσει"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Αυτήν τη στιγμή είστε συνδεδεμένοι στους παρακάτω λογαριασμούς:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Υπάρχουν άλλα προφίλ σε αυτό το όχημα."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Διαγραφή όλων των δεδομένων"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Διαγραφή όλων των δεδομένων;"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Αυτή η ενέργεια θα διαγράψει όλα τα προσωπικά δεδομένα προφίλ, τους λογαριασμούς και τις ληφθείσες εφαρμογές σας σε αυτό το σύστημα ενημέρωσης και ψυχαγωγίας.\n\nΗ αναίρεσή της δεν είναι δυνατή."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Διαγραφή όλων"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Διαγραφή"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Περιμένετε…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ημερομηνία και ώρα"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ορισμός ημερομηνίας, ώρας, ζώνης ώρας και μορφές"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Αυτόματη ημερομηνία και ώρα"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Συνδεδεμένος ως διαχειριστής"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Όλα τα δικαιώματα διαχειριστή"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Να γίνει διαχειριστής"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Ο χρήστης θα μπορεί να διαγράφει χρήστες, συμπεριλαμβανομένων άλλων διαχειριστών, και να επαναφέρει τις εργοστασιακές ρυθμίσεις του συστήματος."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Το προφίλ θα έχει τη δυνατότητα διαγραφής προφίλ, συμπεριλαμβανομένων άλλων Διαχειριστών, και επαναφοράς των εργοστασιακών ρυθμίσεων του συστήματος."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Αυτή η ενέργεια δεν είναι αναστρέψιμη."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ναι, να γίνει διαχειριστής"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Δημιουργία νέων χρηστών"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Δημιουργία νέων προφίλ"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Τηλεφωνικές κλήσεις"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Αντ. μηνυμάτων μέσω δεδ. κιν. τηλ. αυτοκ."</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Εγκατάσταση νέων εφαρμογών"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Απεγκαταστήστε εφαρμογές"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Προσθήκη χρήστη"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Νέος χρήστης"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Προσθήκη νέου χρήστη;"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Κατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει το χώρο του."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Οποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Συμπληρώθηκε το όριο χρηστών"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Μπορείτε να δημιουργήσετε έως <xliff:g id="COUNT">%d</xliff:g> χρήστες.</item>
-      <item quantity="one">Είναι δυνατή η δημιουργία μόνο ενός χρήστη.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Προσθήκη προφίλ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Νέο προφίλ"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Προσθήκη νέου προφίλ;"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Όταν προσθέτετε ένα νέο προφίλ, το άτομο που κατέχει το προφίλ θα πρέπει να ρυθμίσει τον χώρο του."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Όλα τα προφίλ έχουν τη δυνατότητα ενημέρωσης εφαρμογών για όλα τα άλλα προφίλ."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Συμπληρώθηκε το όριο προφίλ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Μπορείτε να δημιουργήσετε έως <xliff:g id="COUNT">%d</xliff:g> προφίλ.</item>
+      <item quantity="one">Μπορείτε να δημιουργήσετε μόνο ένα προφίλ.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Η δημιουργία νέου χρήστη απέτυχε"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Να διαγραφεί ο χρήστης;"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Όλες οι εφαρμογές και τα δεδομένα θα διαγραφούν."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Η διαγραφή χρήστη απέτυχε."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Η δημιουργία νέου προφίλ απέτυχε"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Διαγραφή αυτού του προφίλ;"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Θα διαγραφούν όλες οι εφαρμογές και τα δεδομένα αυτού του προφίλ"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Η διαγραφή του προφίλ απέτυχε."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Αυτό το προφίλ θα διαγραφεί μόλις αλλάξετε προφίλ ή όταν βάλετε ξανά σε λειτουργία το όχημα."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Παράβλεψη"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Επανάληψη"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Διαγρ. τελευταίου χρήστη;"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Αφού διαγράψετε τον μοναδικό χρήστη που έχει απομείνει για αυτό το αυτοκίνητο, θα δημιουργηθεί ένας νέος διαχειριστής."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Όλα τα δεδομένα, οι ρυθμίσεις και οι εφαρμογές που είναι συσχετισμένες με αυτόν τον χρήστη θα διαγραφούν. Θα πρέπει να ρυθμίσετε ξανά το σύστημα."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Διαγραφή τελευτ. εναπομείναντος προφίλ;"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Εάν διαγράψετε το μοναδικό εναπομείναν προφίλ για αυτό το όχημα, όλα τα δεδομένα, οι ρυθμίσεις και οι εφαρμογές που έχουν συσχετιστεί με αυτό το προφίλ θα διαγραφούν."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Μπορείτε να ρυθμίσετε ένα νέο προφίλ μετά την επαναφορά."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Επιλογή νέου διαχειριστή"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Θα πρέπει να υπάρχει τουλάχιστον ένας διαχειριστής. Για να διαγράψετε αυτόν τον διαχειριστή, πρώτα επιλέξτε έναν αντικαταστάτη."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Επιλογή διαχειριστή"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Εσείς (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Όνομα"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Δεν έχει ρυθμιστεί"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Επεξεργασία ονόματος χρήστη"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Επεξεργασία ονόματος προφίλ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Το πεδίο δεν μπορεί να παραμείνει κενό."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Το όνομα χρήστη που καταχωρίστηκε είναι μη έγκυρο."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Το όνομα προφίλ που καταχωρίσατε δεν είναι έγκυρο."</string>
     <string name="users_list_title" msgid="770764290290240909">"Χρήστες"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Προφίλ"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Δικαιώματα που δόθηκαν σε %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Αποθηκευτικός χώρος"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Μουσική και ήχος"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Αρχεία ήχου"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Υπολογισμός…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Μέγεθος εφαρμογής"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Δεδομένα χρήστη"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Δεδομένα προφίλ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Κρυφή μνήμη"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Σύνολο"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Διαγραφή αποθηκευτικού χώρου"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Ακύρωση συγχρονισμού"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Ο συγχρονισμός αντιμετωπίζει προβλήματα αυτή τη στιγμή. Θα είναι διαθέσιμος ξανά σε λίγο."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Απόρρητο"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Δεδομένα οχήματος"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Ελέγξτε την πρόσβαση εφαρμογών στην τοποθεσία σας"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Μικρόφωνο"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Ελέγξτε την πρόσβαση των εφαρμογών στο μικρόφωνο"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Δεδομένα οχήματος"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Διαχείριση δραστηριοτήτων και πληροφοριών που έχουν αποθηκευτεί σε αυτό το όχημα"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Διαγραφή του προφίλ σας"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Διαγράψτε το προφίλ και τους λογαριασμούς σας από το σύστημα ενημέρωσης και ψυχαγωγίας"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Αυτή η ενέργεια δεν είναι δυνατή για το προφίλ σας"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Ασφάλεια"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Κλείδωμα οθόνης"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Κανένα"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Κατάργηση κλειδώματος οθόνης;"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Έτσι όλοι οι χρήστες θα έχουν πρόσβαση στον λογαριασμό σας"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Κλείδωμα προφίλ"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Ρύθμιση αυτόματου ξεκλειδώματος"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Εισαγάγετε τον αριθμό σας PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Εισαγάγετε κωδικό πρόσβασης"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Για λόγους ασφαλείας, ορίστε ένα PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Πρέπει να έχει λιγότερα από <xliff:g id="NUMBER">%d</xliff:g> ψηφία"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Πρέπει να περιέχει μόνο ψηφία από το 0 έως το 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Ο διαχειριστής της συσκευής δεν επιτρέπει τη χρήση πρόσφατου PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Τα συνηθισμένα PIN αποκλείονται από τον διαχειριστή IT. Δοκιμάστε να χρησιμοποιήσετε διαφορετικό PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Τα συνηθισμένα PIN αποκλείονται από τον διαχειριστή IT. Δοκιμάστε να χρησιμοποιήσετε διαφορετικό PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Δεν μπορεί να περιλαμβάνει μη έγκυρο χαρακτήρα."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Μη έγκυρος κωδικός πρόσβασης. Πρέπει να αποτελείται από τουλάχιστον 4 χαρακτήρες."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Ο διαχειριστής της συσκευής δεν επιτρέπει τη χρήση πρόσφατου κωδικού πρόσβασης"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Σφάλμα κατά την αποθ. του κωδ. πρόσβασης"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Οι συνηθισμένοι κωδικοί πρόσβασης αποκλείονται από τον διαχειριστή IT. Δοκιμάστε να χρησιμοποιήσετε διαφορετικό κωδικό πρόσβασης."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Οι συνηθισμένοι κωδικοί πρόσβασης αποκλείονται από τον διαχειριστή IT. Δοκιμάστε να χρησιμοποιήσετε διαφορετικό κωδικό πρόσβασης."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Δεν επιτρέπεται η αύξουσα, φθίνουσα ή επαναλαμβανόμενη ακολουθία ψηφίων."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Επιλογές κλειδώματος οθόνης"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ημέρες πριν"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Πλήκτρο Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Έξοδος από επίδειξη"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Έξοδος από λειτ. επίδειξης"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Με αυτόν τον τρόπο, ο λογαριασμός επίδειξης θα χαθεί και θα γίνει επαναφορά των εργοστασιακών δεδομένων συστήματος. Όλα τα δεδομένα χρήστη θα χαθούν."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Αυτή η ενέργεια θα διαγράψει τον λογαριασμό επίδειξης και θα επαναφέρει τις εργοστασιακές ρυθμίσεις του συστήματος. Όλα τα δεδομένα προφίλ θα χαθούν."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Έξοδος από επίδειξη"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ΠΑΡΑΒΛΕΨΗ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Η λειτουργία δεν διατίθεται κατά τη διάρκεια της οδήγησης."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Δεν είναι δυνατή η προσθήκη χρήστη κατά την οδήγηση."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Δεν είναι δυνατή η προσθήκη προφίλ κατά την οδήγηση."</string>
     <string name="default_search_query" msgid="3137420627428857068">"Αναζήτηση"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Βοηθός και φωνή"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Εφαρμογή Βοηθός"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Χρήση κειμένου από την οθόνη"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Να επιτρέπεται στον Βοηθό να έχει πρόσβαση στο περιεχόμενο της οθόνης"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Χρήση στιγμιότυπου οθόνης"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Να επιτρέπεται στον Βοηθό να έχει πρόσβαση στην εικόνα της οθόνης"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Στάλθηκαν πρόσφατα"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Όλες οι εφαρμογές"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Προφίλ και λογαριασμοί"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Διαχείριση άλλων προφίλ"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Προσθέστε ένα προφίλ"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Διαγραφή αυτού του προφίλ"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Προσθήκη προφίλ"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 9c0dc84..a0a4320 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Brightness level"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimise brightness level for available light"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adjust screen brightness to environment"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light is on"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Network and internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Set data usage warning"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Set data usage limit"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Set"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM network"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB used %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Join other network"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Network preferences"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connecting…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Network not in range"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Please enter a network name"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"An app wants to make your head unit visible to other Bluetooth devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%2$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"An app wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible as %1$s to other devices"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"My devices"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Previously connected"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s connected"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s disconnected"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Save"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alert sounds"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, notifications, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brightness"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adjust screen for low light"</string>
     <string name="units_settings" msgid="402325305096925886">"Units"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Speed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App permissions"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps using <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Control app access to your data"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Not installed for this user"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Not installed for this profile"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storage and cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Unused apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> unused apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> unused app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remove permissions and free up space"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in internal storage"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ask every time"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Don’t open in this app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Supported links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Recently opened"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"View all %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Permission manager"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Control app access to your data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"For Assistant and more"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"To system and other settings"</string>
     <string name="special_access" msgid="5730278220917123811">"Special app access"</string>
     <string name="show_system" msgid="4401355756969485287">"Show system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Hide system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Hide system apps"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modify system settings"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"This permission allows an app to modify system settings."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Notification access"</string>
@@ -357,8 +382,12 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Use location"</string>
+    <string name="location_settings_footer" msgid="296892848338100051">"Location may use sources like GPS, Wi‑Fi, mobile networks and sensors to help estimate your device’s location."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Advanced"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"About, legal info, reset and more"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model and hardware"</string>
@@ -420,16 +449,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Delete all data (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Erase all data (factory reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Erase all data and profiles from the infotainment system"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"This will erase all data from your vehicle’s infotainment system, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"You are currently signed in to the following accounts:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"There are other profiles present on this vehicle."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Erase all data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Erase all data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"This will erase all your personal profile data, accounts and downloaded apps on this infotainment system.\n\nYou can’t undo this action."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Erase everything"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Erasing"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Please wait…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatic date and time"</string>
@@ -452,33 +482,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"The profile will be able to delete profiles, including other Admins, and factory reset the system."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Create new profiles"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
-      <item quantity="one">Only one user can be created.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Add profile"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"New profile"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Add new profile?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"When you add a new profile, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Any profile can update apps for all other profiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profile limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> profiles.</item>
+      <item quantity="one">Only one profile can be created.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Failed to create a new profile"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Delete this profile?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"All apps and data for this profile will be deleted"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Failed to delete profile."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"This profile will be deleted when you switch profiles or restart the vehicle."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Delete the last remaining profile?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"If you delete the only remaining profile for this vehicle, all data, settings and apps associated with this profile will be erased."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"After reset, you can set up a new profile."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
@@ -488,10 +519,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit profile name"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Field can\'t be blank."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Username entered is invalid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profile name entered is invalid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Music and audio"</string>
@@ -502,7 +534,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio files"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculating…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App size"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"User data"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profile data"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Clear storage"</string>
@@ -544,6 +576,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Vehicle data"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Control app access to your location"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microphone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Control app access to microphone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Vehicle data"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Manage activities and info saved on this vehicle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Delete your profile"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Erase your profile and accounts from the infotainment system"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"This action is unavailable for your profile"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -579,6 +620,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remove screen lock?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"This will allow anyone to access your account"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profile lock"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Set up automatic unlocking"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Enter your PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Enter your password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"For security, set a PIN"</string>
@@ -602,7 +645,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> digits"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Must contain only digits 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Device admin doesn\'t allow using a recent PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"This can\'t include an invalid character."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password invalid. Must be at least four characters."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +674,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Device admin doesn\'t allow using a recent password"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error saving password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
@@ -652,10 +695,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Exit Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"This will delete the demo account and factory data reset the system. All profile data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Feature not available while driving"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Can\'t add user while driving"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Can\'t add profile while driving"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Use text from screen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Allow Assistant to access screen contents"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Use screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Allow Assistant to access screen image"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Recently sent"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"All apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiles &amp; accounts"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Manage other profiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Add a profile"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Delete this profile"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Add profile"</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index ba0a0c4..bda9b9c 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Brightness level"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimise brightness level for available light"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adjust screen brightness to environment"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light is on"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Network and Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Set data usage warning"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Set data usage limit"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Set"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM network"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB used %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Join other network"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Network preferences"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connecting…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Network not in range"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Please enter a network name"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"An app wants to make your head unit visible to other Bluetooth devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%2$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"An app wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible as %1$s to other devices"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"My devices"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Previously connected"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s connected"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s disconnected"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Save"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alert sounds"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, notifications, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brightness"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adjust screen for low light"</string>
     <string name="units_settings" msgid="402325305096925886">"Units"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Speed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App permissions"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps using <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Control app access to your data"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Not installed for this user"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Not installed for this profile"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storage and cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Unused apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> unused apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> unused app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remove permissions and free up space"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in internal storage"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ask every time"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Don’t open in this app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Supported links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Recently opened"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"View all %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Permission manager"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Control app access to your data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"For Assistant and more"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"To system and other settings"</string>
     <string name="special_access" msgid="5730278220917123811">"Special app access"</string>
     <string name="show_system" msgid="4401355756969485287">"Show system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Hide system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Hide system apps"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modify system settings"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"This permission allows an app to modify system settings."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Notification access"</string>
@@ -357,8 +382,12 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Use location"</string>
+    <string name="location_settings_footer" msgid="296892848338100051">"Location may use sources like GPS, Wi‑Fi, mobile networks and sensors to help estimate your device’s location."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Advanced"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"About, legal info, reset and more"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model and hardware"</string>
@@ -420,16 +449,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Erase all data (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Erase all data (factory reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Erase all data and profiles from the infotainment system"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"This will erase all data from your vehicle’s infotainment system, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"You are currently signed in to the following accounts:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"There are other profiles present on this vehicle."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Erase all data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Erase all data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"This will erase all your personal profile data, accounts and downloaded apps on this infotainment system.\n\nYou can’t undo this action."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Erase everything"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Erasing"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Please wait…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatic date and time"</string>
@@ -452,33 +482,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"The profile will be able to delete profiles, including other Admins, and factory reset the system."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Create new profiles"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
-      <item quantity="one">Only one user can be created.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Add profile"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"New profile"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Add new profile?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"When you add a new profile, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Any profile can update apps for all other profiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profile limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> profiles.</item>
+      <item quantity="one">Only one profile can be created.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Failed to create a new profile"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Delete this profile?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"All apps and data for this profile will be deleted"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Failed to delete profile."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"This profile will be deleted when you switch profiles or restart the vehicle."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Delete the last remaining profile?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"If you delete the only remaining profile for this vehicle, all data, settings and apps associated with this profile will be erased."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"After reset, you can set up a new profile."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
@@ -488,10 +519,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit profile name"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Field can\'t be blank."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Username entered is invalid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profile name entered is invalid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Music and audio"</string>
@@ -502,7 +534,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio files"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculating…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App size"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"User data"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profile data"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Clear storage"</string>
@@ -544,6 +576,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Vehicle data"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Control app access to your location"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microphone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Control app access to microphone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Vehicle data"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Manage activities and info saved on this vehicle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Delete your profile"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Erase your profile and accounts from the infotainment system"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"This action is unavailable for your profile"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -579,6 +620,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remove screen lock?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"This will allow anyone to access your account"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profile lock"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Set up automatic unlocking"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Enter your PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Enter your password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"For security, set a PIN"</string>
@@ -602,7 +645,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> digits"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Must contain only digits 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Device admin doesn\'t allow using a recent PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"This can\'t include an invalid character."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password invalid. Must be at least four characters."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +674,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Device admin doesn\'t allow using a recent password"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error saving password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
@@ -652,10 +695,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Exit Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"This will delete the demo account and factory data reset the system. All profile data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Feature not available while driving"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Can\'t add user while driving"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Can\'t add profile while driving"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Use text from screen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Allow Assistant to access screen contents"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Use screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Allow Assistant to access screen image"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Recently sent"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"All apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiles &amp; accounts"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Manage other profiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Add a profile"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Delete this profile"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Add profile"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 022fb1b..f2b1379 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Brightness level"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimise brightness level for available light"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adjust screen brightness to environment"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light is on"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Network and Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Set data usage warning"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Set data usage limit"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Set"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM network"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB used %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Join other network"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Network preferences"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connecting…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Network not in range"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Please enter a network name"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"An app wants to make your head unit visible to other Bluetooth devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%2$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"An app wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible as %1$s to other devices"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"My devices"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Previously connected"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s connected"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s disconnected"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Save"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alert sounds"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, notifications, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brightness"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adjust screen for low light"</string>
     <string name="units_settings" msgid="402325305096925886">"Units"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Speed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App permissions"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps using <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Control app access to your data"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Not installed for this user"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Not installed for this profile"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storage and cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Unused apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> unused apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> unused app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remove permissions and free up space"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in internal storage"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ask every time"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Don’t open in this app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Supported links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Recently opened"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"View all %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Permission manager"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Control app access to your data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"For Assistant and more"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"To system and other settings"</string>
     <string name="special_access" msgid="5730278220917123811">"Special app access"</string>
     <string name="show_system" msgid="4401355756969485287">"Show system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Hide system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Hide system apps"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modify system settings"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"This permission allows an app to modify system settings."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Notification access"</string>
@@ -357,8 +382,12 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Use location"</string>
+    <string name="location_settings_footer" msgid="296892848338100051">"Location may use sources like GPS, Wi‑Fi, mobile networks and sensors to help estimate your device’s location."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Advanced"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"About, legal info, reset and more"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model and hardware"</string>
@@ -420,16 +449,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Delete all data (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Delete all your personal information and downloaded apps? You won\'t be able to undo this action."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Erase all data (factory reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Erase all data and profiles from the infotainment system"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"This will erase all data from your vehicle’s infotainment system, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"You are currently signed in to the following accounts:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"There are other profiles present on this vehicle."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Erase all data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Erase all data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"This will erase all your personal profile data, accounts and downloaded apps on this infotainment system.\n\nYou can’t undo this action."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Erase everything"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Erasing"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Please wait…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatic date and time"</string>
@@ -452,33 +482,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"The profile will be able to delete profiles, including other Admins, and factory reset the system."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Create new profiles"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
-      <item quantity="one">Only one user can be created.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Add profile"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"New profile"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Add new profile?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"When you add a new profile, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Any profile can update apps for all other profiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profile limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> profiles.</item>
+      <item quantity="one">Only one profile can be created.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Failed to create a new profile"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Delete this profile?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"All apps and data for this profile will be deleted"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Failed to delete profile."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"This profile will be deleted when you switch profiles or restart the vehicle."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Delete the last remaining profile?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"If you delete the only remaining profile for this vehicle, all data, settings and apps associated with this profile will be erased."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"After reset, you can set up a new profile."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
@@ -488,10 +519,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit profile name"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Field can\'t be blank."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Username entered is invalid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profile name entered is invalid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Music and audio"</string>
@@ -502,7 +534,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio files"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculating…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App size"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"User data"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profile data"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Clear storage"</string>
@@ -544,6 +576,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Vehicle data"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Control app access to your location"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microphone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Control app access to microphone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Vehicle data"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Manage activities and info saved on this vehicle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Delete your profile"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Erase your profile and accounts from the infotainment system"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"This action is unavailable for your profile"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -579,6 +620,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remove screen lock?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"This will allow anyone to access your account"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profile lock"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Set up automatic unlocking"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Enter your PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Enter your password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"For security, set a PIN"</string>
@@ -602,7 +645,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> digits"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Must contain only digits 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Device admin doesn\'t allow using a recent PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"This can\'t include an invalid character."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password invalid. Must be at least four characters."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +674,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Device admin doesn\'t allow using a recent password"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error saving password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
@@ -652,10 +695,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Exit Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"This will delete the demo account and factory data reset the system. All profile data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Feature not available while driving"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Can\'t add user while driving"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Can\'t add profile while driving"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Use text from screen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Allow Assistant to access screen contents"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Use screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Allow Assistant to access screen image"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Recently sent"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"All apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiles &amp; accounts"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Manage other profiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Add a profile"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Delete this profile"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Add profile"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d9e27c0..8c0a5cd 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Brightness level"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimise brightness level for available light"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adjust screen brightness to environment"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light is on"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Network and internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Set data usage warning"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Set data usage limit"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Set"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM network"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB used %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Join other network"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Network preferences"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connecting…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Network not in range"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Please enter a network name"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"An app wants to make your head unit visible to other Bluetooth devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%2$d</xliff:g> seconds."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"An app wants to turn on Bluetooth and make your head unit visible to other devices for <xliff:g id="TIMEOUT">%1$d</xliff:g> seconds."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible as %1$s to other devices"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"My devices"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Previously connected"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s connected"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s disconnected"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Save"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alert sounds"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, notifications, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brightness"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adjust screen for low light"</string>
     <string name="units_settings" msgid="402325305096925886">"Units"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Speed"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App permissions"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps using <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Control app access to your data"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Not installed for this user"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Not installed for this profile"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storage and cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Unused apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> unused apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> unused app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remove permissions and free up space"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in internal storage"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ask every time"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Don’t open in this app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Supported links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Recently opened"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"View all %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Permission manager"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Control app access to your data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"For Assistant and more"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"To system and other settings"</string>
     <string name="special_access" msgid="5730278220917123811">"Special app access"</string>
     <string name="show_system" msgid="4401355756969485287">"Show system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Hide system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Hide system apps"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modify system settings"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"This permission allows an app to modify system settings."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Notification access"</string>
@@ -357,8 +382,12 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Use location"</string>
+    <string name="location_settings_footer" msgid="296892848338100051">"Location may use sources like GPS, Wi‑Fi, mobile networks and sensors to help estimate your device’s location."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Advanced"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"About, legal info, reset and more"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model and hardware"</string>
@@ -420,16 +449,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Delete all data (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Want to reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Delete all your personal information and downloaded apps? You won\'t be able to undo this action."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Erase all data (factory reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Erase all data and profiles from the infotainment system"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"This will erase all data from your vehicle’s infotainment system, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"You are currently signed in to the following accounts:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"There are other profiles present on this vehicle."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Erase all data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Erase all data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"This will erase all your personal profile data, accounts and downloaded apps on this infotainment system.\n\nYou can’t undo this action."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Erase everything"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Erasing"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Please wait…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatic date and time"</string>
@@ -452,33 +482,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"The profile will be able to delete profiles, including other Admins, and factory reset the system."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Create new profiles"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
-      <item quantity="one">Only one user can be created.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Add profile"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"New profile"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Add new profile?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"When you add a new profile, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Any profile can update apps for all other profiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profile limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> profiles.</item>
+      <item quantity="one">Only one profile can be created.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Failed to create a new profile"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Delete this profile?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"All apps and data for this profile will be deleted"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Failed to delete profile."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"This profile will be deleted when you switch profiles or restart the vehicle."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Delete the last remaining profile?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"If you delete the only remaining profile for this vehicle, all data, settings and apps associated with this profile will be erased."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"After reset, you can set up a new profile."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
@@ -488,10 +519,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit profile name"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Field can\'t be blank."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Username entered is invalid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profile name entered is invalid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Music and audio"</string>
@@ -502,7 +534,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio files"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculating…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App size"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"User data"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profile data"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Clear storage"</string>
@@ -544,6 +576,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Vehicle data"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Control app access to your location"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microphone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Control app access to microphone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Vehicle data"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Manage activities and info saved on this vehicle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Delete your profile"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Erase your profile and accounts from the infotainment system"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"This action is unavailable for your profile"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -579,6 +620,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remove screen lock?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"This will allow anyone to access your account"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profile lock"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Set up automatic unlocking"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Enter your PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Enter your password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"For security, set a PIN"</string>
@@ -602,7 +645,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> digits"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Must contain only digits 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Device admin doesn\'t allow using a recent PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"This can\'t include an invalid character."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password invalid. Must be at least four characters."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +674,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Device admin doesn\'t allow using a recent password"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error saving password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
@@ -652,10 +695,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Exit Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"This will delete the demo account and factory data reset the system. All profile data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Feature not available while driving"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Can\'t add user while driving"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Can\'t add profile while driving"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Use text from screen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Allow Assistant to access screen contents"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Use screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Allow Assistant to access screen image"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Recently sent"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"All apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiles &amp; accounts"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Manage other profiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Add a profile"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Delete this profile"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Add profile"</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 16069d8..77b770d 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎Display‎‏‎‎‏‎"</string>
     <string name="brightness" msgid="2919605130898772866">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎Brightness level‎‏‎‎‏‎"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎Adaptive brightness‎‏‎‎‏‎"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎Optimize brightness level for available light‎‏‎‎‏‎"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‎Adjust screen brightness to environment‎‏‎‎‏‎"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎Night Light is on‎‏‎‎‏‎"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎screen, touchscreen‎‏‎‎‏‎"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎dim screen, touchscreen, battery‎‏‎‎‏‎"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎dim screen, touchscreen, battery‎‏‎‎‏‎"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎dim screen, night, tint‎‏‎‎‏‎"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎Night mode‎‏‎‎‏‎"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‏‎‎Network &amp; internet‎‏‎‎‏‎"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎Mobile network‎‏‎‎‏‎"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎Set data usage warning‎‏‎‎‏‎"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎Set data usage limit‎‏‎‎‏‎"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎Set‎‏‎‎‏‎"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‎‎OEM network‎‏‎‎‏‎"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎%1$d MB used %2$s - %3$s‎‏‎‎‏‎"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎Join other network‎‏‎‎‏‎"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‎Network preferences‎‏‎‎‏‎"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎Wi‑Fi‎‏‎‎‏‎"</string>
     <string name="wifi_starting" msgid="473253087503153167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‎Turning Wi‑Fi on…‎‏‎‎‏‎"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‎Turning off Wi‑Fi…‎‏‎‎‏‎"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎Failed to connect to network‎‏‎‎‏‎"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎Add network‎‏‎‎‏‎"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎Connect‎‏‎‎‏‎"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‎Connecting…‎‏‎‎‏‎"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‎Network not in range‎‏‎‎‏‎"</string>
     <string name="wifi_password" msgid="5565632142720292397">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎Password‎‏‎‎‏‎"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎Show password‎‏‎‎‏‎"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎Please enter a network name‎‏‎‎‏‎"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎An app wants to make your headunit visible to other Bluetooth devices for ‎‏‎‎‏‏‎<xliff:g id="TIMEOUT">%1$d</xliff:g>‎‏‎‎‏‏‏‎ seconds.‎‏‎‎‏‎"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ wants to turn on Bluetooth and make your headunit visible to other devices for ‎‏‎‎‏‏‎<xliff:g id="TIMEOUT">%2$d</xliff:g>‎‏‎‎‏‏‏‎ seconds.‎‏‎‎‏‎"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‎An app wants to turn on Bluetooth and make your headunit visible to other devices for ‎‏‎‎‏‏‎<xliff:g id="TIMEOUT">%1$d</xliff:g>‎‏‎‎‏‏‏‎ seconds.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎Visible as %1$s to other devices‎‏‎‎‏‎"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‎My devices‎‏‎‎‏‎"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎Previously connected‎‏‎‎‏‎"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎%1$s connected‎‏‎‎‏‎"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎%1$s disconnected‎‏‎‎‏‎"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎Bluetooth pairing request‎‏‎‎‏‎"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎Pair &amp; connect‎‏‎‎‏‎"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‏‎Bluetooth pairing code‎‏‎‎‏‎"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎Default notification sound‎‏‎‎‏‎"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎Default alarm sound‎‏‎‎‏‎"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‎Save‎‏‎‎‏‎"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‎‏‏‎Alert sounds‎‏‎‎‏‎"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‎‏‎Ringtone, notifications, alarm‎‏‎‎‏‎"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎Brightness‎‏‎‎‏‎"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‎Adjust screen for low light‎‏‎‎‏‎"</string>
     <string name="units_settings" msgid="402325305096925886">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‎‎Units‎‏‎‎‏‎"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎Speed‎‏‎‎‏‎"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‏‎Distance‎‏‎‎‏‎"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎Show all apps‎‏‎‎‏‎"</string>
     <string name="default_applications" msgid="1558183275638697087">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎Default apps‎‏‎‎‏‎"</string>
     <string name="app_permissions" msgid="32799922508313948">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‎‎App permissions‎‏‎‎‏‎"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‎Apps using ‎‏‎‎‏‏‎<xliff:g id="APPS">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‎Control app access to your data‎‏‎‎‏‎"</string>
     <string name="applications_settings" msgid="794261395191035632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎App info‎‏‎‎‏‎"</string>
     <string name="force_stop" msgid="2153183697014720520">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎Force stop‎‏‎‎‏‎"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎Force stop?‎‏‎‎‏‎"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎Uninstall‎‏‎‎‏‎"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‎‎‏‎If you disable this app, Android and other apps may no longer function as intended.‎‏‎‎‏‎"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‎Disable app‎‏‎‎‏‎"</string>
-    <string name="not_installed" msgid="4218816013370552746">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎Not installed for this user‎‏‎‎‏‎"</string>
+    <string name="not_installed" msgid="4163454337822508007">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎Not installed for this profile‎‏‎‎‏‎"</string>
     <string name="permissions_label" msgid="2701446753515612685">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‎Permissions‎‏‎‎‏‎"</string>
     <string name="notifications_label" msgid="6586089149665170731">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎Notifications‎‏‎‎‏‎"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‎Storage &amp; cache‎‏‎‎‏‎"</string>
     <string name="application_version_label" msgid="8556889839783311649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎Version: %1$s‎‏‎‎‏‎"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎No permissions granted‎‏‎‎‏‎"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‎No permissions requested‎‏‎‎‏‎"</string>
+    <string name="unused_apps" msgid="648471933781010395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‏‎Unused apps‎‏‎‎‏‎"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%d</xliff:g>‎‏‎‎‏‏‏‎ unused apps‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%d</xliff:g>‎‏‎‎‏‏‏‎ unused app‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‎Remove permissions and free up space‎‏‎‎‏‎"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‎%s in internal storage‎‏‎‎‏‎"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‎Data usage‎‏‎‎‏‎"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎‎‎App data usage‎‏‎‎‏‎"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‏‎‎‎‎‎Ask every time‎‏‎‎‏‎"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‎Don’t open in this app‎‏‎‎‏‎"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎Supported links‎‏‎‎‏‎"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‎Apps‎‏‎‎‏‎"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‎‎‎Recently opened‎‏‎‎‏‎"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎View all %1$d apps‎‏‎‎‏‎"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‎Permission manager‎‏‎‎‏‎"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‎‎Control app access to your data‎‏‎‎‏‎"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎For Assistant and more‎‏‎‎‏‎"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‎‎‏‎‏‎‎‏‏‎To system and other settings‎‏‎‎‏‎"</string>
     <string name="special_access" msgid="5730278220917123811">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎Special app access‎‏‎‎‏‎"</string>
     <string name="show_system" msgid="4401355756969485287">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎Show system‎‏‎‎‏‎"</string>
     <string name="hide_system" msgid="8845453295584638040">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‎Hide system‎‏‎‎‏‎"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‎‏‎‎‎Hide system apps‎‏‎‎‏‎"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎Modify system settings‎‏‎‎‏‎"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎This permission allows an app to modify system settings.‎‏‎‎‏‎"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎Notification access‎‏‎‎‏‎"</string>
@@ -357,8 +382,12 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎No recent location requests‎‏‎‎‏‎"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎App-level permissions‎‏‎‎‏‎"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎Location Services‎‏‎‎‏‎"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎Use location‎‏‎‎‏‎"</string>
+    <string name="location_settings_footer" msgid="296892848338100051">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎Location may use sources like GPS, Wi‑Fi, mobile networks, and sensors to help estimate your device’s location.‎‏‎‎‏‎"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎System‎‏‎‎‏‎"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‎System updates‎‏‎‎‏‎"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎Advanced‎‏‎‎‏‎"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎About, legal info, reset, and more‎‏‎‎‏‎"</string>
     <string name="firmware_version" msgid="8491753744549309333">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‏‎Android version‎‏‎‎‏‎"</string>
     <string name="security_patch" msgid="4794276590178386903">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎Android security patch level‎‏‎‎‏‎"</string>
     <string name="hardware_info" msgid="3973165746261507658">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎Model &amp; hardware‎‏‎‎‏‎"</string>
@@ -420,16 +449,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎This will reset all preferences for:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Disabled apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Disabled app notifications‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Default applications for actions‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Background data restrictions for apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Any permission restrictions‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You will not lose any app data.‎‏‎‎‏‎"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎Reset apps‎‏‎‎‏‎"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‎App preferences have been reset‎‏‎‎‏‎"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‎Erase all data (factory reset)‎‏‎‎‏‎"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎This will erase all data from your vehicle’s head unit, including:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Your Google account‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎System and app data and settings‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Downloaded apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎You are currently signed into the following accounts:‎‏‎‎‏‎"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‏‎There are other users present on this vehicle.‎‏‎‎‏‎"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‎Reset vehicle‎‏‎‎‏‎"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎Reset?‎‏‎‎‏‎"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎Erase all your personal information and downloaded apps? You can’t undo this action!‎‏‎‎‏‎"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎Erase everything‎‏‎‎‏‎"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎Erasing‎‏‎‎‏‎"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎Please wait...‎‏‎‎‏‎"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎Erase all data (factory reset)‎‏‎‎‏‎"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎Erase all data and profiles from the infotainment system‎‏‎‎‏‎"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎This will erase all data from your vehicle’s infotainment system, including:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Your Google Account‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎System and app data and settings‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Downloaded apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‎‎‎‎‏‎You are currently signed into the following accounts:‎‏‎‎‏‎"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎There are other profiles present on this vehicle.‎‏‎‎‏‎"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎Erase all data‎‏‎‎‏‎"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎Erase all data?‎‏‎‎‏‎"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‏‏‏‎‎This will erase all your personal profile data, accounts, and downloaded apps on this infotainment system.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You can’t undo this action.‎‏‎‎‏‎"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎Erase everything‎‏‎‎‏‎"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‏‎Erasing‎‏‎‎‏‎"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎Please wait...‎‏‎‎‏‎"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎Date &amp; time‎‏‎‎‏‎"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎Set date, time, time zone, &amp; formats‎‏‎‎‏‎"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‎Automatic date &amp; time‎‏‎‎‏‎"</string>
@@ -452,33 +482,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‎Signed in as admin‎‏‎‎‏‎"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎All admin permissions‎‏‎‎‏‎"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎Make Admin‎‏‎‎‏‎"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎The user will be able to delete users, including other Admins, and factory reset the system.‎‏‎‎‏‎"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎The profile will be able to delete profiles, including other Admins, and factory reset the system.‎‏‎‎‏‎"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎This action is not reversible.‎‏‎‎‏‎"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‎‎Yes, make admin‎‏‎‎‏‎"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎Create new users‎‏‎‎‏‎"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‎Create new profiles‎‏‎‎‏‎"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‎Make phone calls‎‏‎‎‏‎"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‎Messaging via car\'s mobile data‎‏‎‎‏‎"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎Install new apps‎‏‎‎‏‎"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‎Uninstall apps‎‏‎‎‏‎"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎Add user‎‏‎‎‏‎"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎New user‎‏‎‎‏‎"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎Add new user?‎‏‎‎‏‎"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎When you add a new user, that person needs to set up their space.‎‏‎‎‏‎"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎Any user can update apps for all other users.‎‏‎‎‏‎"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‏‎‎User limit reached‎‏‎‎‏‎"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‎You can create up to ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ users.‎‏‎‎‏‎</item>
-      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‎Only one user can be created.‎‏‎‎‏‎</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‏‏‎Add profile‎‏‎‎‏‎"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎New profile‎‏‎‎‏‎"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎Add new profile?‎‏‎‎‏‎"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‏‎When you add a new profile, that person needs to set up their space.‎‏‎‎‏‎"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‎Any profile can update apps for all other profiles.‎‏‎‎‏‎"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎Profile limit reached‎‏‎‎‏‎"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‏‎You can create up to ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ profiles.‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‏‎Only one profile can be created.‎‏‎‎‏‎</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‎‎Failed to create a new user‎‏‎‎‏‎"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎Delete this user?‎‏‎‎‏‎"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎All apps and data will be deleted.‎‏‎‎‏‎"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎Failed to delete user.‎‏‎‎‏‎"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎Failed to create a new profile‎‏‎‎‏‎"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎‏‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎Delete this profile?‎‏‎‎‏‎"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎All apps and data for this profile will be deleted‎‏‎‎‏‎"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎Failed to delete profile.‎‏‎‎‏‎"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎‎‏‎This profile will be deleted when you switch profiles or restart the vehicle.‎‏‎‎‏‎"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‎‏‎Dismiss‎‏‎‎‏‎"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‏‎Retry‎‏‎‎‏‎"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎Delete last user?‎‏‎‎‏‎"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎After deleting the only remaining user for this car, a new admin user will be created.‎‏‎‎‏‎"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎All data, settings, and apps associated with this user will be deleted. You\'ll need to set up the system again.‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎Delete the last remaining profile?‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎‏‎‎‎If you delete the only remaining profile for this vehicle, all data, settings, and apps associated with this profile will be erased.‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎After reset, you can set up a new profile.‎‏‎‎‏‎"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎Choose new admin‎‏‎‎‏‎"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‎You need at least one admin. To delete this one, first choose a replacement.‎‏‎‎‏‎"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎Choose admin‎‏‎‎‏‎"</string>
@@ -488,10 +519,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎You (%1$s)‎‏‎‎‏‎"</string>
     <string name="user_name_label" msgid="3210832645046206845">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎Name‎‏‎‎‏‎"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‎Not set up‎‏‎‎‏‎"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‎‎Edit user name‎‏‎‎‏‎"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‏‎Edit profile name‎‏‎‎‏‎"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‎‏‏‎Field can’t be blank.‎‏‎‎‏‎"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎Username entered is invalid.‎‏‎‎‏‎"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‎‎Profile name entered is invalid.‎‏‎‎‏‎"</string>
     <string name="users_list_title" msgid="770764290290240909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎Users‎‏‎‎‏‎"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎Profiles‎‏‎‎‏‎"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎Permissions granted to %1$s‎‏‎‎‏‎"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎Storage‎‏‎‎‏‎"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‏‎‎‎‎Music &amp; audio‎‏‎‎‏‎"</string>
@@ -502,7 +534,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎Audio files‎‏‎‎‏‎"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‏‎Calculating…‎‏‎‎‏‎"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎App size‎‏‎‎‏‎"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‏‏‏‎User data‎‏‎‎‏‎"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎Profile data‎‏‎‎‏‎"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‎Cache‎‏‎‎‏‎"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎Total‎‏‎‎‏‎"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎Clear storage‎‏‎‎‏‎"</string>
@@ -544,6 +576,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎Cancel sync‎‏‎‎‏‎"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎Sync is currently experiencing problems. It will be back shortly.‎‏‎‎‏‎"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‏‎‎‎Privacy‎‏‎‎‏‎"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‎Vehicle data‎‏‎‎‏‎"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎Control app access to your location‎‏‎‎‏‎"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‏‎Microphone‎‏‎‎‏‎"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‎‎Control app access to microphone‎‏‎‎‏‎"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‏‎Vehicle data‎‏‎‎‏‎"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‏‏‎Manage activities and info saved on this vehicle‎‏‎‎‏‎"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‎‎Delete your profile‎‏‎‎‏‎"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎Erase your profile and accounts from the infotainment system‎‏‎‎‏‎"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‏‎This action is unavailable for your profile‎‏‎‎‏‎"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎Security‎‏‎‎‏‎"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎Screen lock‎‏‎‎‏‎"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎None‎‏‎‎‏‎"</string>
@@ -579,6 +620,8 @@
     <string name="okay" msgid="4589873324439764349">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‎OK‎‏‎‎‏‎"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎Remove screen lock?‎‏‎‎‏‎"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎This will allow anyone to access your account‎‏‎‎‏‎"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‎‏‏‎‎Profile lock‎‏‎‎‏‎"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎Set up automatic unlocking‎‏‎‎‏‎"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎Enter your PIN‎‏‎‎‏‎"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎Enter your password‎‏‎‎‏‎"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‏‎For security, set a PIN‎‏‎‎‏‎"</string>
@@ -602,7 +645,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‎Must be fewer than ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%d</xliff:g>‎‏‎‎‏‏‏‎ digits‎‏‎‎‏‎"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎Must contain only digits 0-9.‎‏‎‎‏‎"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎Device admin doesn\'t allow using a recent PIN‎‏‎‎‏‎"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎Common PINs are blocked by your IT admin. Try a different PIN.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎Common PINs are blocked by your IT admin. Try a different PIN.‎‏‎‎‏‎"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎This can\'t include an invalid character.‎‏‎‎‏‎"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎Password invalid, must be at least 4 characters.‎‏‎‎‏‎"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +674,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎Device admin doesn\'t allow using a recent password‎‏‎‎‏‎"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎Error saving password‎‏‎‎‏‎"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎Common passwords are blocked by your IT admin. Try a different password.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎Common passwords are blocked by your IT admin. Try a different password.‎‏‎‎‏‎"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎Ascending, descending, or repeated sequence of digits isn\'t allowed.‎‏‎‎‏‎"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‎‎Screen lock options‎‏‎‎‏‎"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="FINGERPRINT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="DATE">%2$s</xliff:g>‎‏‎‎‏‏‏‎ : ‎‏‎‎‏‏‎<xliff:g id="NUM_DAYS">%3$s</xliff:g>‎‏‎‎‏‏‏‎ days ago‎‏‎‎‏‎"</string>
@@ -652,10 +695,23 @@
     <string name="enter_key" msgid="2121394305541579468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‏‏‎‎‎Enter key‎‏‎‎‏‎"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎Exit Demo‎‏‎‎‏‎"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎Exit demo mode‎‏‎‎‏‎"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎This will delete the demo account and factory data reset the system. All user data will be lost.‎‏‎‎‏‎"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‎‏‎This will delete the demo account and factory data reset the system. All profile data will be lost.‎‏‎‎‏‎"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‎Exit Demo‎‏‎‎‏‎"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‎DISMISS‎‏‎‎‏‎"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‎Feature not available while driving‎‏‎‎‏‎"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎Can\'t add user while driving‎‏‎‎‏‎"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‎‎‎‎‏‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‎‎‎‎‎‎‎Can\'t add profile while driving‎‏‎‎‏‎"</string>
     <string name="default_search_query" msgid="3137420627428857068">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎Search‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‏‎Assistant &amp; voice‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎Assistant app‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎Use text from screen‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎Allow assistant to access screen contents‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‎Use screenshot‎‏‎‎‏‎"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‎Allow assistant to access screen image‎‏‎‎‏‎"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‏‏‏‎Recently sent‎‏‎‎‏‎"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎All apps‎‏‎‎‏‎"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‎‎Profiles &amp; accounts‎‏‎‎‏‎"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎Manage other profiles‎‏‎‎‏‎"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‎Add a profile‎‏‎‎‏‎"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‎‏‎Delete this profile‎‏‎‎‏‎"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‎‏‎‏‎‎‏‎Add profile‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 3255ea0..e822e9a 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Pantalla"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivel de brillo"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Brillo automático"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizar el nivel de brillo según la luz disponible"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adaptar el brillo de la pantalla al entorno"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Luz nocturna activada"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"pantalla, pantalla táctil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, noche, tono"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Internet y red"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Establecer advertencia de uso de datos"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Límite del uso de datos"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Establecer"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Red del OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB usados (%2$s - %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Unirse a otra red"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferencias de red"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Se produjo un error al establecer conexión con la red"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Agregar red"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Conectando…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Red fuera de alcance"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contraseña"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contraseña"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Ingresa un nombre de red"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Una app quiere que tu unidad central sea visible para otros dispositivos Bluetooth durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar la conexión Bluetooth y que tu unidad central sea visible para otros dispositivos durante <xliff:g id="TIMEOUT">%2$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Una app quiere activar la conexión Bluetooth y que tu unidad central sea visible para otros dispositivos durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible como %1$s en otros dispositivos"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mis dispositivos"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Conectados anteriormente"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Se conectó %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Se desconectó %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitud de vinculación mediante Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Vincular y conectar"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de vinculación mediante Bluetooth"</string>
@@ -225,9 +232,13 @@
     <string name="media_volume_summary" msgid="2961762827637127239">"Establecer volumen para la música y los videos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"Tono del teléfono"</string>
-    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sonido de notificación predeterminado"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sonido predeterminado"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sonido de alarma predeterm."</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Guardar"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sonidos de alertas"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Tono, notificaciones, alarma"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brillo"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adaptar la pantalla a entornos con poca luz"</string>
     <string name="units_settings" msgid="402325305096925886">"Unidades"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocidad"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distancia"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostrar todas las apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Apps predeterminadas"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permisos de apps"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps que usan <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controla el acceso de apps a tus datos"</string>
     <string name="applications_settings" msgid="794261395191035632">"Información de apps"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"¿Deseas forzar la detención?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si inhabilitas esta app, es posible que Android y otras apps ya no funcionen correctamente."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inhabilitar app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"No se instaló para este usuario"</string>
+    <string name="not_installed" msgid="4163454337822508007">"No instalada para este perfil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificaciones"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Almacenamiento y caché"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No se otorgaron permisos"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No se solicitaron permisos"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Apps en desuso"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apps en desuso</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> app en desuso</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Quita los permisos y libera espacio"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s de almacenamiento interno"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos de la app"</string>
@@ -334,10 +351,18 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Preguntar siempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"No abrir en esta app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Vínculos admitidos"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Abiertas recientemente"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ver todas las %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Administrador de permisos"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controla el acceso de apps a tus datos"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Para Asistente y más"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Para sistema y otras configuraciones"</string>
     <string name="special_access" msgid="5730278220917123811">"Acceso especial de apps"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostrar sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ocultar sistema"</string>
-    <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar config. del sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ocultar apps del sistema"</string>
+    <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar conf. sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Este permiso admite que una app modifique la configuración del sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acceso a notificaciones"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"¿Quieres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> tenga acceso a las notificaciones?"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hay solicitudes de ubicación recientes"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos en las apps"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Servicios de ubicación"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Usar ubicación"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Configuración avanzada"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Sobre información legal, restablecimiento y más"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Parche de seguridad de Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo y hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Se restablecerán todas las preferencias de lo siguiente:\n\n"<li>"Apps inhabilitadas"</li>\n<li>"Notificaciones de apps inhabilitadas"</li>\n<li>"Apps predeterminadas para realizar acciones"</li>\n<li>"Restricciones de datos en segundo plano para apps"</li>\n<li>"Restricciones de permisos"</li>\n\n"No perderás los datos de las apps."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Se restablecieron las preferencias de las apps"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Borrar todos los datos (restablecer)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Esta acción borrará todos los datos de la unidad principal del vehículo, entre lo que se incluye:\n\n"<li>"Tu Cuenta de Google"</li>\n<li>"La configuración y los datos de las apps y el sistema"</li>\n<li>"Las apps descargadas"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Accediste a las siguientes cuentas:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hay otros usuarios presentes en este vehículo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"¿Restablecer?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"¿Deseas borrar toda tu información personal y las apps descargadas? No podrás deshacer esta acción."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera un momento…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Borrar todos los datos"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Borrar todos los datos y los perfiles del sistema de infoentretenimiento"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Esta acción borrará todos los datos del sistema de infoentretenimiento del vehículo, entre lo que se incluyen:\n\n"<li>"Tu Cuenta de Google"</li>\n<li>"La configuración y los datos de las apps y el sistema"</li>\n<li>"Las apps descargadas"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Accediste a las siguientes cuentas:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Hay otros perfiles presentes en este vehículo."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Borrar todos los datos"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"¿Borrar todos los datos?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Se borrarán todos los datos del perfil personal, las cuentas y las apps descargadas de este sistema de infoentretenimiento.\n\nNo podrás deshacer la acción."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Borrar todo"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Borrando"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Espera…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Fecha y hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Establecer fecha, hora, zona horaria y formatos"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Fecha y hora automáticas"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Accediste como administrador"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos los permisos de administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Convertir en administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"El usuario podrá borrar usuarios, incluidos otros administradores, y restablecer el sistema a la configuración de fábrica."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"El perfil podrá borrar otros perfiles, incluidos los de otros administradores, así como restablecer de la configuración de fábrica del sistema."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción no se puede deshacer."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, convertir en administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear nuevos usuarios"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Crear perfiles nuevos"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hacer llamadas telefónicas"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensajes por datos móviles del auto"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar nuevas apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Agregar usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Usuario nuevo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"¿Agregar un usuario?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cuando agregues un nuevo usuario, esa persona deberá configurar su espacio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Alcanzaste el límite de usuarios"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> usuarios.</item>
-      <item quantity="one">Solo se puede crear un usuario.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Agregar perfil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Perfil nuevo"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"¿Agregar un perfil nuevo?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Cuando agregues un perfil nuevo, esa persona deberá configurar su espacio."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Cualquier perfil puede actualizar apps para todos los demás perfiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Se alcanzó el límite de perfiles"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> perfiles.</item>
+      <item quantity="one">Solo se puede crear un perfil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"No se pudo crear el usuario nuevo"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"¿Borrar este usuario?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se borrarán todas las apps y los datos."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"No se pudo borrar el usuario"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"No se pudo crear un perfil nuevo"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"¿Quieres borrar este perfil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Se borrarán todas las apps y los datos de este perfil"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"No se pudo borrar el perfil"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Este perfil se borrará si cambias de perfil o reinicias el vehículo"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Descartar"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Reintentar"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"¿Borrar último usuario?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Una vez que borres el último usuario del auto, se creará un nuevo usuario administrador."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Se borrarán todos los datos, las apps y la configuración que asociaste con este usuario. Deberás volver a configurar el sistema."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"¿Borrar el último perfil que queda?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Si borras el único perfil que queda para este vehículo, se borrarán todos los datos, las configuraciones y las apps asociados a él."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Una vez que se restablezca, podrás configurar un perfil nuevo."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Elige un nuevo administrador"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas al menos un administrador. Debes elegir un reemplazo para poder borrar el actual."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Elegir administrador"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Tú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nombre"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"No configurado"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editar el nombre de usuario"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Editar el nombre de perfil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Este campo no puede quedar vacío."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"El nombre de usuario ingresado no es válido."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"El nombre de perfil ingresado no es válido."</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Perfiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos otorgados a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Almacenamiento"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música y audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Archivos de audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculando…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Tamaño de la app"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Datos del usuario"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Datos de perfil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Caché"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Liberar espacio de almacenamiento"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"En este momento la sincronización experimenta problemas. Volverá en breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacidad"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Datos del vehículo"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controla el acceso de la app a tu ubicación"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Micrófono"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controlar el acceso de las apps al micrófono"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Datos del vehículo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Administrar las actividades y la información guardadas en este vehículo"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Borrar tu perfil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Borrar tu perfil y tus cuentas del sistema de infoentretenimiento"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Esta acción no está disponible para tu perfil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ninguno"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Aceptar"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"¿Quitar bloqueo de pantalla?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Si lo haces, cualquiera podrá acceder a tu cuenta"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Bloqueo del perfil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configurar desbloqueo automático"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Ingresa tu PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Ingresa tu contraseña"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Por seguridad, establece un PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Debe tener menos de <xliff:g id="NUMBER">%d</xliff:g> dígitos"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Debe tener solo dígitos entre el 0 y el 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"El administrador del dispositivo no permite el uso de PIN recientes"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Tu administrador de TI bloquea los PIN comunes. Prueba con otro."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Tu administrador de TI bloquea los PIN comunes. Prueba con otro."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"No puede incluir un carácter no válido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"La contraseña no es válida, ya que debe tener al menos 4 caracteres."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"El administrador del dispositivo no permite el uso de contraseñas recientes"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error al guardar la contraseña"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Tu administrador de TI bloquea las contraseñas comunes. Prueba con otra."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Tu administrador de TI bloquea las contraseñas comunes. Prueba con otra."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permiten secuencias de dígitos ascendentes, descendentes ni repetidas."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días)"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla Intro"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Salir de la demostración"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Salir del modo de demostración"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Esta acción borrará la cuenta de demostración y restablecerá el sistema a la configuración de fábrica. Se perderán todos los datos del usuario."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Esta acción borrará la cuenta de demostración y restablecerá el sistema a la configuración de fábrica. Se perderán todos los datos de perfil."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Salir de la demostración"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DESCARTAR"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Esta función no está disponible mientras conduces"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"No puedes agregar usuarios mientras conduces"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"No puedes agregar perfiles mientras conduces"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Buscar"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistente y voz"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"App de Asistente"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Usar el texto de la pantalla"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permitir que Asistente acceda al contenido en pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Usar captura de pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permitir que Asistente acceda a la imagen en pantalla"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Enviadas recientemente"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Todas las apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Perfiles y cuentas"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Administrar otros perfiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Agregar un perfil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Borrar este perfil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Agregar perfil"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f3488be..eb2867e 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Pantalla"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivel de brillo"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Brillo adaptativo"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizar el nivel de brillo según la luz disponible"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adaptar el brillo de la pantalla al entorno"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Luz nocturna activada"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"pantalla, pantalla táctil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, nocturno, tono"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Redes e Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
@@ -47,10 +43,10 @@
     <string name="sim_change_data_title" msgid="6677115745127365131">"¿Usar <xliff:g id="CARRIER">%1$s</xliff:g> para los datos móviles?"</string>
     <string name="sim_change_data_message" msgid="4669775284395549069">"Estás utilizando <xliff:g id="CARRIER2_0">%2$s</xliff:g> para los datos móviles. Si cambias a <xliff:g id="CARRIER1">%1$s</xliff:g>, no se utilizará más a <xliff:g id="CARRIER2_1">%2$s</xliff:g> para los datos móviles."</string>
     <string name="sim_change_data_ok" msgid="2348804996223271081">"Usar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
-    <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
-    <string name="roaming_summary" msgid="7476127740259728901">"Conectarse a servicios de datos en roaming"</string>
-    <string name="roaming_alert_title" msgid="4433901635766775763">"¿Quieres permitir el roaming de datos?"</string>
-    <string name="roaming_warning" msgid="4908184914868720704">"Es posible que se apliquen cargos por roaming."</string>
+    <string name="roaming_title" msgid="6218635014519017734">"Itinerancia"</string>
+    <string name="roaming_summary" msgid="7476127740259728901">"Conectarse a servicios de datos en itinerancia"</string>
+    <string name="roaming_alert_title" msgid="4433901635766775763">"¿Quieres permitir la itinerancia de datos?"</string>
+    <string name="roaming_warning" msgid="4908184914868720704">"Es posible que se apliquen cargos por itinerancia."</string>
     <string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"Datos principales"</string>
     <string name="data_used_formatted" msgid="6684557577780068339">"Datos usados: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -80,10 +76,14 @@
     <string name="set_data_limit" msgid="7136539812414500084">"Establecer límite de datos"</string>
     <string name="data_limit" msgid="227338836292511425">"Límite de datos"</string>
     <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitando uso de datos"</string>
-    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"La unidad principal de tu vehículo desactivará los datos móviles cuando se alcance el límite que configures.\n\nSe tiene en cuenta el uso de datos medido por la unidad principal, aunque tu operador podría registrarlo de forma diferente. Por tanto, debes ser prudente al establecer un límite."</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"La unidad principal de tu vehículo desactivará los datos móviles cuando se alcance el límite establecido.\n\nSe tiene en cuenta el uso de datos medido por la unidad principal, aunque tu operador podría registrarlo de forma diferente. Por tanto, debes ser prudente al establecer un límite."</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Establece la advertencia de uso de datos"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Limitar uso de datos"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Definir"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Red del fabricante"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB usados del %2$s al %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Conectarse a otra red"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferencias de red"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"No se ha podido conectar a la red"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Añadir red"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Conectando…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"La red está fuera de alcance"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contraseña"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contraseña"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Introduce el nombre de una red"</string>
@@ -150,10 +152,10 @@
     <string name="wifi_ap_prefer_5G" msgid="8252845223773871750">"Banda preferida: 5,0 GHz"</string>
     <string name="wifi_ap_2G" msgid="5364135697314262014">"2,4 GHz"</string>
     <string name="wifi_ap_5G" msgid="4945574428537860279">"5,0 GHz"</string>
-    <string name="wifi_ap_band_select_one" msgid="615578175244067396">"Elige al menos 1 banda para Compartir Internet:"</string>
-    <string name="tether_settings_title_all" msgid="4663704772599383169">"Compartir Internet"</string>
-    <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"Desactivar Compartir Internet automáticamente"</string>
-    <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"Compartir Internet se desactivará si no hay dispositivos conectados"</string>
+    <string name="wifi_ap_band_select_one" msgid="615578175244067396">"Elige mín. 1 banda para punto acceso Wi‑Fi:"</string>
+    <string name="tether_settings_title_all" msgid="4663704772599383169">"Punto de acceso/Conexión compartida"</string>
+    <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"Desactivar punto de acceso automáticamente"</string>
+    <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"El punto de acceso Wi‑Fi se desactivará si no hay dispositivos conectados"</string>
     <string name="wifi_ask_enable" msgid="4452418245680754578">"<xliff:g id="REQUESTER">%s</xliff:g> quiere activar la conexión Wi-Fi"</string>
     <string name="wifi_ask_disable" msgid="2949290055916181553">"<xliff:g id="REQUESTER">%s</xliff:g> quiere desactivar la conexión Wi-Fi"</string>
     <string name="wifi_error" msgid="3105105447117289410">"Error"</string>
@@ -167,8 +169,8 @@
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
     <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sin nombre"</string>
     <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos vinculados"</string>
-    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Emparejar nuevo dispositivo"</string>
-    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"El Bluetooth se activará para emparejar el dispositivo"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Vincular nuevo dispositivo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"El Bluetooth se activará para vincular el dispositivo"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"¿Desconectar dispositivo?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Tu vehículo se desconectará de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Dirección de Bluetooth del vehículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
@@ -190,19 +192,24 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Una aplicación quiere hacer visible la unidad principal para otros dispositivos Bluetooth durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> quiere activar el Bluetooth y hacer visible la unidad principal para otros dispositivos durante <xliff:g id="TIMEOUT">%2$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Una aplicación quiere activar el Bluetooth y hacer visible la unidad principal para otros dispositivos durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Se muestra como %1$s a otros dispositivos"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mis dispositivos"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Conectados anteriormente"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s conectado"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s desconectado"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitud de vinculación de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar y conectar"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de emparejamiento por Bluetooth"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de vinculación por Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"El PIN contiene letras o símbolos"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Escribe el código de vinculación y, a continuación, pulsa Intro"</string>
-    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"¿Emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"¿Vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Permitir que <xliff:g id="DEVICE_NAME">%1$s</xliff:g> acceda a tus contactos y al historial de llamadas"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"Es posible que tengas que introducir este PIN en el otro dispositivo."</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Es posible que tengas que introducir la clave de acceso en el otro dispositivo."</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Debe tener 16 dígitos"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalmente: 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitud de vinculación"</string>
-    <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toca para emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toca para vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_device_picker" msgid="673238198452345475">"Seleccionar dispositivo Bluetooth"</string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
     <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas e introducción de texto"</string>
@@ -210,7 +217,7 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Todos los idiomas"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Gestionar teclados"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"Salida de conversión de texto a voz"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Síntesis de voz"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidad de la voz"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Sonido de notificación predeterminado"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sonido de alarma predeterminado"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Guardar"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sonidos de alertas"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Tono de llamada, notificaciones, alarma"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brillo"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adaptar la pantalla a entornos con poca luz"</string>
     <string name="units_settings" msgid="402325305096925886">"Unidades"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocidad"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distancia"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostrar todas las aplicaciones"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplicaciones predeterminadas"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permisos de aplicaciones"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplicaciones que utilizan <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controla el acceso de las aplicaciones a tus datos"</string>
     <string name="applications_settings" msgid="794261395191035632">"Información de las aplicaciones"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"¿Quieres forzar la detención?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si inhabilitas esta aplicación, es posible que Android y otras aplicaciones no funcionen correctamente."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inhabilitar aplicación"</string>
-    <string name="not_installed" msgid="4218816013370552746">"No instalada para este usuario"</string>
+    <string name="not_installed" msgid="4163454337822508007">"No instalada en este perfil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificaciones"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Almacenamiento y caché"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No se han concedido permisos"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No se han solicitado permisos"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplicaciones no usadas"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplicaciones no usadas</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplicación no usada</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Quitar permisos y liberar espacio"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s en el almacenamiento interno"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos de la app"</string>
@@ -313,7 +330,7 @@
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Usar captura de pantalla"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permitir que la aplicación de asistencia acceda a una imagen de la pantalla"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Entrada de voz"</string>
-    <string name="autofill_settings_title" msgid="1188754272680049972">"Servicio de autocompletar"</string>
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Autocompletar"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Ninguna"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Seleccionada"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"El asistente podrá consultar información sobre las aplicaciones en uso del sistema, como la que aparezca en pantalla o a la que se pueda acceder a través de las aplicaciones."</string>
@@ -323,7 +340,7 @@
     <string name="domain_url_section_title" msgid="9070403140947787214">"Aplicaciones instaladas"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"No abrir enlaces compatibles"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"Abrir <xliff:g id="DOMAIN">%s</xliff:g>"</string>
-    <string name="domain_urls_summary_some" msgid="5523153458016701725">"Abrir <xliff:g id="DOMAIN">%s</xliff:g> y otras URLs"</string>
+    <string name="domain_urls_summary_some" msgid="5523153458016701725">"Abrir <xliff:g id="DOMAIN">%s</xliff:g> y otras URL"</string>
     <string name="app_launch_title" msgid="3442601467010363057">"Abrir de forma predeterminada"</string>
     <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"Otros valores predeterminados"</string>
     <string name="auto_launch_disable_text" msgid="3595315315092716391">"Valores predeterminados no definidos."</string>
@@ -334,15 +351,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Preguntar siempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"No abrir en esta aplicación"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Enlaces compatibles"</string>
-    <string name="special_access" msgid="5730278220917123811">"Aplicaciones con accesos especiales"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplicaciones"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Abiertas recientemente"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ver todas las aplicaciones (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gestor de permisos"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controla el acceso de las aplicaciones a tus datos"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Para el Asistente y más"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Al sistema y otros ajustes"</string>
+    <string name="special_access" msgid="5730278220917123811">"Acceso especial de aplicaciones"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostrar sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ocultar sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ocultar aplicaciones del sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar ajustes del sistema"</string>
-    <string name="modify_system_settings_description" msgid="5295023124419592452">"Este permiso permite que una aplicación modifique los ajustes del sistema."</string>
+    <string name="modify_system_settings_description" msgid="5295023124419592452">"Cuando se concede este permiso, la aplicación puede modificar los ajustes del sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acceso a las notificaciones"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"¿Permitir que <xliff:g id="SERVICE">%1$s</xliff:g> acceda a las notificaciones?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> podrá leer todas las notificaciones, incluidas aquellas relacionadas con información personal, como nombres de contactos y texto de mensajes que hayas recibido. También podrá cerrar las notificaciones o utilizar los botones de acción que incluyan.\n\nAdemás, concede a la aplicación la capacidad de activar o desactivar el modo No molestar y de cambiar las opciones de configuración relacionadas."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Si desactivas el acceso a las notificaciones de <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, es posible que también se desactive el modo No molestar."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Si desactivas el acceso a las notificaciones de <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, también puede desactivarse el acceso al modo No molestar."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Desactivar"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Cancelar"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Acceso a SMS premium"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ninguna solicitud de ubicación reciente"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos de las aplicaciones"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Servicios de ubicación"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Usar ubicación"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avanzado"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Información del sistema, información legal, restablecimiento del estado de fábrica, etc."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivel del parche de seguridad de Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo y hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Se restablecerán todas las preferencias de:\n\n"<li>"Aplicaciones desactivadas"</li>\n<li>"Notificaciones de aplicaciones desactivadas"</li>\n<li>"Aplicaciones para acciones predeterminadas"</li>\n<li>"Restricciones de datos en segundo plano de aplicaciones"</li>\n<li>"Restricciones de permisos"</li>\n\n"No se perderán los datos de las aplicaciones."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Se han restablecido las preferencias de las aplicaciones"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Volver al estado de fábrica (borrar todo)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Se borrarán todos los datos de la unidad principal de tu vehículo, como:\n\n"<li>"Tu cuenta de Google"</li>\n<li>"Los ajustes y datos de aplicaciones y del sistema"</li>\n<li>"Las aplicaciones descargadas"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Has iniciado sesión en estas cuentas:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hay otros usuarios presentes en este vehículo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"¿Restablecer?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"¿Quieres borrar toda tu información personal y todas las aplicaciones descargadas? Esta acción no se puede deshacer."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Volver al estado de fábrica (borrar todo)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Borrar todos los datos y perfiles del sistema de infoentretenimiento"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Se borrarán todos los datos del sistema de infoentretenimiento de tu vehículo, como:\n\n"<li>"Tu cuenta de Google"</li>\n<li>"Los ajustes y datos de aplicaciones y del sistema"</li>\n<li>"Las aplicaciones descargadas"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Has iniciado sesión en estas cuentas:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Hay otros perfiles en este vehículo."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Borrar todos los datos"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"¿Borrar todos los datos?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Se borrarán todos los datos de tu perfil personal, tus cuentas y las aplicaciones que hayas descargado en este sistema de infoentretenimiento.\n\nNo podrás deshacer esta acción."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Borrar todo"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Borrando"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Espera..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Fecha y hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Establecer fecha, hora, zona horaria y formatos"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Fecha y hora automáticas"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sesión iniciada como administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos los permisos de administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Convertir en administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"El usuario podrá eliminar usuarios, incluidos otros administradores, y restablecer el sistema al estado de fábrica."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"El perfil podrá eliminar otros perfiles, incluidos los de otros administradores, y restablecer el estado de fábrica del sistema."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción no se puede deshacer."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, convertir en administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear usuarios"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Crear perfiles nuevos"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hacer llamadas"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensajes por datos móviles de coche"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar aplicaciones nuevas"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicaciones"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Añadir usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuevo usuario"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"¿Añadir nuevo usuario?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Al añadir un nuevo usuario, este debe configurar su espacio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Has alcanzado el límite de usuarios"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> usuarios.</item>
-      <item quantity="one">Solo se puede crear un usuario.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Añadir perfil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Perfil nuevo"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"¿Añadir perfil nuevo?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Cuando añades un perfil nuevo, esa persona debe configurar su espacio."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Cualquier perfil puede actualizar las aplicaciones del resto de los perfiles."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Límite de perfiles alcanzado"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> perfiles.</item>
+      <item quantity="one">Solo se puede crear un perfil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"No se ha podido crear el usuario"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"¿Eliminar este usuario?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se eliminarán todos los datos y aplicaciones."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"No se ha podido eliminar al usuario."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"No se ha podido crear el perfil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"¿Eliminar este perfil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Se eliminarán todas las aplicaciones y los datos asociados a este perfil"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"No se ha podido eliminar el perfil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Este perfil se eliminará cuando cambies a otro o reinicies el vehículo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Cerrar"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Reintentar"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"¿Eliminar último usuario?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Después de eliminar el único usuario que queda de este coche, se creará un nuevo administrador."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Se eliminarán las aplicaciones, los datos y los ajustes asociados a este usuario, y tendrás que volver a configurar el sistema."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"¿Eliminar el único perfil que queda?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Si eliminas el único perfil que queda en este vehículo, se eliminarán todas las aplicaciones, los datos y los ajustes asociados a este perfil."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Una vez restablecido el estado de fábrica, podrás configurar otro perfil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Elegir nuevo administrador"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas al menos un administrador. Para eliminar este, primero debes elegir otro."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Elegir administrador"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Tú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nombre"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sin configurar"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Cambiar nombre de usuario"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Editar nombre de perfil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"El campo no puede estar vacío."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"El nombre de usuario introducido no es válido."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"El nombre de perfil introducido no es válido."</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Perfiles"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedidos a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Almacenamiento"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música y audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Archivos de audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculando…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Tamaño de la aplicación"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Datos de usuario"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Datos del perfil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Caché"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Borrar almacenamiento"</string>
@@ -530,7 +563,7 @@
     <string name="really_remove_account_title" msgid="3555164432587924900">"¿Quitar cuenta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Si quitas esta cuenta, se eliminarán todos sus mensajes, contactos y otros datos del dispositivo."</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"No se ha podido eliminar la cuenta."</string>
-    <string name="account_sync_title" msgid="6541844336300236915">"Sincronización de cuenta"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronización"</string>
     <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Elementos con la sincronización activada: <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronización activada para todos los elementos"</string>
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronización desactivada para todos los elementos"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"En este momento hay problemas con la sincronización. Se restablecerá en breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacidad"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Datos del vehículo"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controlar el acceso de la aplicación a la ubicación"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Micrófono"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controlar el acceso de la aplicación al micrófono"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Datos del vehículo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gestiona la actividad y la información guardadas en este vehículo"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Eliminar tu perfil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Borrar el perfil y las cuentas del sistema de infoentretenimiento"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Esta acción no está disponible en tu perfil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ninguno"</string>
@@ -569,7 +611,7 @@
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Tu nuevo patrón de desbloqueo"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Dibuja un patrón de desbloqueo"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Levanta el dedo cuando termines"</string>
-    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Patrón registrado"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Patrón guardado"</string>
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Dibuja el patrón de nuevo para confirmarlo"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"Une mín. 4 puntos. Vuelve a intentarlo."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"Patrón incorrecto"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Aceptar"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"¿Quitar bloqueo de pantalla?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Cualquier usuario podrá acceder a tu cuenta"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Bloqueo de perfil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configurar bloqueo automático"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Introduce tu PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Introduce tu contraseña"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Por seguridad, establece un PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Debe tener menos de <xliff:g id="NUMBER">%d</xliff:g> dígitos"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Solo debe tener dígitos comprendidos entre el 0 y el 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"El administrador de dispositivos no permite utilizar un PIN reciente"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"El administrador de TI bloquea los PIN comunes. Prueba a utilizar otro PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"El administrador de TI bloquea los PIN comunes. Prueba a utilizar otro PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"No puede incluir un carácter que no sea válido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"La contraseña no es válida porque debe tener al menos 4 caracteres."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"El administrador de dispositivos no permite utilizar una contraseña reciente"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"No se ha podido guardar la contraseña"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"El administrador de TI bloquea las contraseñas comunes. Prueba a utilizar otra contraseña."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"El administrador de TI bloquea las contraseñas comunes. Prueba a utilizar otra contraseña."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permite utilizar una secuencia ascendente, descendente ni repetida de dígitos."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla Intro"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Salir de demostración"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Salir del modo demostración"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Se eliminará la cuenta de demostración y se recuperarán los ajustes de fábrica del sistema. Se perderán todos los datos de usuario."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Se eliminará la cuenta de demostración y se restablecerá el estado de fábrica del sistema. Se perderán todos los datos del perfil."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Salir de demostración"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"CERRAR"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Esta función no está disponible mientras se conduce"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"No se puede añadir un usuario mientras se conduce"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"No se puede añadir un perfil mientras se conduce"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Buscar"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistente y voz"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplicación del Asistente"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Usar texto de la pantalla"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permitir al Asistente acceder al contenido de la pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Usar captura de pantalla"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permitir al Asistente acceder a la imagen de la pantalla"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Enviadas recientemente"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Todas las aplicaciones"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Perfiles y cuentas"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gestionar otros perfiles"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Añadir un perfil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Eliminar este perfil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Añadir perfil"</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 95c4f93..89529b6 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekraan"</string>
     <string name="brightness" msgid="2919605130898772866">"Ereduse tase"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Kohanduv eredus"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Ereduse optimeerimine valgustingimuste järgi"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Kohandage ekraanikuva eredust keskkonna järgi"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Öövalgus on sees"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekraan, puuteekraan"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ekraani hämardamine, puuteekraan, aku"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ekraani hämardamine, puuteekraan, aku"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ekraani hämardamine, öö, toon"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Öörežiim"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Võrk ja internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiilsidevõrk"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Andmekasutuse hoiatuse määramine"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Andmekasutuse piirangu määramine"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Määra"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-i võrk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB kasutatud vahemikus %2$s kuni %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Muu võrguga liitumine"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Võrgueelistused"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WiFi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WiFi sisselülitamine …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi väljalülitamine …"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Võrguühenduse loomine ebaõnnestus"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lisa võrk"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ühenda"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Ühendamine …"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Te ei ole võrgu levialas"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parool"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Kuva parool"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Sisestage võrgu nimi"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Rakendus soovib teie autoraadio <xliff:g id="TIMEOUT">%1$d</xliff:g> sekundiks teistele Bluetoothi seadmetele nähtavaks muuta."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> soovib Bluetoothi sisse lülitada ja teie autoraadio <xliff:g id="TIMEOUT">%2$d</xliff:g> sekundiks teistele seadmetele nähtavaks muuta."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Rakendus soovib Bluetoothi sisse lülitada ja teie autoraadio <xliff:g id="TIMEOUT">%1$d</xliff:g> sekundiks teistele seadmetele nähtavaks muuta."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Muudele seadmetele nähtav kui %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Minu seadmed"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Eelnevalt ühendatud"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s on ühendatud"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s pole ühendatud"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetoothi sidumistaotlus"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Seo ja ühenda"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetoothi sidumiskood"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Märguande vaikeheli"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alarmi vaikeheli"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Salvesta"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Hoiatushelid"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Helin, märguanded, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Eredus"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ekraanikuva kohandamine vähese valguse jaoks"</string>
     <string name="units_settings" msgid="402325305096925886">"Ühikud"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Kiirus"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Vahemaa"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Kuva kõik rakendused"</string>
     <string name="default_applications" msgid="1558183275638697087">"Vaikerakendused"</string>
     <string name="app_permissions" msgid="32799922508313948">"Rakenduste load"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Rakendused, mis kasutavad üksusi <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Rakenduste puhul andmetele juurdepääsu haldamine"</string>
     <string name="applications_settings" msgid="794261395191035632">"Rakenduste teave"</string>
     <string name="force_stop" msgid="2153183697014720520">"Sundpeata"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Kas sundpeatada?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalli"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Selle rakenduse keelamisel ei pruugi Android ja muud rakendused enam ootuspäraselt töötada."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Keela rakendus"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Pole selle kasutaja jaoks installitud"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Pole selle profiili jaoks installitud"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Load"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Märguanded"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Salvestusruum ja vahemälu"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versioon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Lube pole antud"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Lube pole taotletud"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Kasutamata rakendused"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kasutamata rakendust</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> kasutamata rakendus</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Eemalda load ja vabasta ruumi"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s sisemist salvestusruumi"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Andmekasutus"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Rakenduste andmekasutus"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Küsi iga kord"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ära ava selles rakenduses"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Toetatud lingid"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Rakendused"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Hiljuti avatud"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Kuva kõik %1$d rakendust"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Lubade haldur"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Rakenduste puhul andmetele juurdepääsu haldamine"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistendi ja muu jaoks"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Süsteemile ja muudele seadetele"</string>
     <string name="special_access" msgid="5730278220917123811">"Rakenduse erijuurdepääs"</string>
     <string name="show_system" msgid="4401355756969485287">"Kuva süsteem"</string>
     <string name="hide_system" msgid="8845453295584638040">"Peida süsteem"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Peida süsteemirakendused"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Süsteemiseadete muutmine"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"See luba võimaldab rakendusel muuta süsteemiseadeid."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Juurdepääs märguannetele"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ühtegi hiljutist asukohapäringut pole"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Rakendusetasemel load"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Asukohateenused"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Asukoha kasutamine"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Süsteem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Süsteemivärskendused"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Täpsemad"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Teave, juriidiline teave, lähtestamine ja muu"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Androidi versioon"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidi turvapaiga tase"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Mudel ja riistvara"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"See lähtestab kõik järgmised eelistused.\n\n"<li>"Keelatud rakendused"</li>\n<li>"Keelatud rakenduste märguanded"</li>\n<li>"Toimingute vaikerakendused"</li>\n<li>"Rakenduste taustaandmete piirangud"</li>\n<li>"Mis tahes lubade piirangud"</li>\n\n"Rakenduste andmed säilivad."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Lähtesta rakendused"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Rakenduse eelistused on lähtestatud"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Kõigi andmete kustutamine (tehaseseaded)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"See kustutab teie sõiduki keskseadmest kõik andmed, sh:\n\n"<li>"teie Google\'i konto;"</li>\n<li>"süsteemi ja rakenduste andmed ning seaded;"</li>\n<li>"allalaaditud rakendused."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Olete praegu sisse logitud järgmistele kontodele:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Selles sõidukis on teisi kasutajaid."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Lähtesta seade"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Kas soovite lähtestada?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Kas kustutada kõik teie isiklikud andmed ja allalaaditud rakendused? Seda toimingut ei saa tagasi võtta."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Kustuta kõik"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Kustutamine"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Oodake …"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Kõigi andmete kustutamine (tehaseseaded)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Kustuta teabe ja meelelahutuse süsteemist kõik andmed ja profiilid"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"See kustutab teie sõiduki teabe ja meelelahutuse süsteemist kõik andmed, sh:\n\n"<li>"teie Google\'i konto;"</li>\n<li>"süsteemi ja rakenduste andmed ning seaded;"</li>\n<li>"allalaaditud rakendused."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Olete praegu sisse logitud järgmistele kontodele:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Selles sõidukis on teisi profiile."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Kustuta kõik andmed"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Kas kustutada kõik andmed?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"See kustutab sellest teabe ja meelelahutuse süsteemist kõik teie isikliku profiili andmed, kontod ning allalaaditud rakendused.\n\nSeda toimingut ei saa tagasi võtta."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Kustuta kõik"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Kustutamine"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Oodake …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Kuupäev ja kellaaeg"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Määra kuupäev, kellaaeg, ajavöönd ja vormingud"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automaatne kuupäev ja kellaaeg"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sisse logitud administraatorina"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Kõik administraatoriload"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Määra administraatoriks"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Kasutaja saab kustutada teisi kasutajaid, sh administraatoreid, ja lähtestada süsteemi tehaseseadetele."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Selle profiiliga saab kustutada teisi profiile, sh administraatoreid, ja lähtestada süsteemi tehaseseadetele."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Seda toimingut ei saa tagasi võtta."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Jah, määra administraatoriks"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Uute kasutajate loomine"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Uute profiilide loomine"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonikõnede tegemine"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sõnumside auto mob. andmeside kaudu"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Uute rakenduste installimine"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Rakenduste desinstallimine"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Kasutaja lisamine"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Uus kasutaja"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Kas lisada uus kasutaja?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Iga kasutaja saab rakendusi värskendada kõigi teiste kasutajate jaoks."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kasutajate limiit on täis"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Luua saab kuni <xliff:g id="COUNT">%d</xliff:g> kasutajat.</item>
-      <item quantity="one">Luua saab ainult ühe kasutaja.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profiili lisamine"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Uus profiil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Kas lisada uus profiil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kui lisate uue profiili, siis peab ta seadistama oma ruumi."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Iga profiil saab rakendusi värskendada kõigi muude profiilide jaoks."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profiilide maksimaalne arv on täis"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Saate luua kuni <xliff:g id="COUNT">%d</xliff:g> profiili.</item>
+      <item quantity="one">Luua saab ainult ühe profiili.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Uue kasutaja loomine ebaõnnestus"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Kas kustutada kasutaja?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Kõik rakendused ja andmed kustutatakse."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Kasutaja kustutamine ebaõnnestus."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Uue profiili loomine ebaõnnestus"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Kas kustutada see profiil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Kõik selle profiili rakendused ja andmed kustutatakse"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profiili kustutamine ebaõnnestus."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profiili vahetamisel või sõiduki taaskäivitamisel see profiil kustutatakse"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Loobu"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Proovi uuesti"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Kas kustutada viimane kasutaja?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pärast selle auto viimase allesjäänud kasutaja kustutamist luuakse uus administratiivkasutaja."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Kõik selle kasutajaga seotud andmed, seaded ja rakendused kustutatakse. Peate süsteemi uuesti seadistama."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Kas kustutada viimane profiil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Kui kustutate selle sõiduki puhul ainsa alles jäänud profiili, kustutatakse kõik selle profiiliga seotud andmed, seaded ja rakendused."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Pärast lähtestamist saate seadistada uue profiili."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Valige uus administraator"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Vajate vähemalt ühte administraatorit. Selle kustutamiseks valige mõni teine administraator."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Valige administraator"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Teie (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nimi"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Pole seadistatud"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Kasutajanime muutmine"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profiili nime muutmine"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Väli ei tohi olla tühi."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Sisestatud kasutajanimi on sobimatu."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Sisestatud profiilinimi on sobimatu."</string>
     <string name="users_list_title" msgid="770764290290240909">"Kasutajad"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiilid"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Kasutajale %1$s antud load"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Salvestusruum"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muusika ja heli"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Helifailid"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Arvutamine …"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Rakenduse suurus"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Kasutajaandmed"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profiiliandmed"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Vahemälu"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Kokku"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Tühjenda salvestusruum"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Tühista sünkroonimine"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sünkroonimisega on praegu probleeme. See on varsti tagasi."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privaatsus"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Sõiduki andmed"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Rakenduse puhul asukohale juurdepääsu haldamine"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Rakenduse puhul mikrofonile juurdepääsu haldamine"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Sõiduki andmed"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Hallake sellesse sõidukisse salvestatud tegevusi ja teavet"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Kustuta minu profiil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Kustutage oma profiil ning kontod teabe ja meelelahutuse süsteemist"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"See toiming pole teie profiili puhul saadaval"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Turvalisus"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekraanilukk"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Puudub"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Kas eemaldada ekraanilukk?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"See lubab igaühel teie kontole juurde pääseda"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profiililukk"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Automaatse avamise seadistamine"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Sisestage PIN-kood"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Sisestage parool"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Turvalisuse huvides määrake PIN-kood"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Peab olema lühem kui <xliff:g id="NUMBER">%d</xliff:g> numbrit"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Tohib sisaldada ainult numbreid 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Seadme administraator ei luba kasutada viimast PIN-koodi"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT-administraator on levinud PIN-koodid blokeerinud. Proovige muud PIN-koodi."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT-administraator on levinud PIN-koodid blokeerinud. Proovige muud PIN-koodi."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"See ei tohi sisaldada sobimatut tähemärki."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Parool on sobimatu, peab olema vähemalt neli tähemärki."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Seadme administraator ei luba kasutada hiljutist parooli"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Viga parooli salvestamisel"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-administraator on levinud paroolid blokeerinud. Proovige muud parooli."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT-administraator on levinud paroolid blokeerinud. Proovige muud parooli."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Kasvavad, kahanevad või korduvad numbrijadad on keelatud."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekraaniluku valikud"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> päeva tagasi"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Sisestusklahv"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Välju demorežimist"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demorežiimist väljumine"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"See kustutab demokonto ja lähtestab süsteemi tehaseandmetele. Kõik kasutajaandmed lähevad kaotsi."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"See kustutab demokonto ja lähtestab süsteemi tehaseseadetele. Kõik profiili andmed lähevad kaotsi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Välju demorežimist"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"LOOBU"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funktsioon pole sõidu ajal saadaval"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Sõidu ajal ei saa kasutajat lisada"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Sõidu ajal ei saa profiili lisada"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Otsi"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent ja hääl"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistendi rakendus"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Ekraanil oleva teksti kasutamine"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Lubage assistendile juurdepääs ekraani sisule"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Ekraanipildi kasutamine"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Lubage assistendile juurdepääs ekraanipildile"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Hiljuti saadetud"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Kõik rakendused"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiilid ja kontod"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Muude profiilide haldamine"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Lisa profiil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Kustuta see profiil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profiili lisamine"</string>
 </resources>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
index 3518809..0df0a60 100644
--- a/res/values-eu/arrays.xml
+++ b/res/values-eu/arrays.xml
@@ -20,6 +20,6 @@
   <string-array name="premium_sms_access_values">
     <item msgid="1035030245423608806">"Galdetu"</item>
     <item msgid="933409503308401889">"Ukatu beti"</item>
-    <item msgid="1154273129608299386">"Eman baimena beti"</item>
+    <item msgid="1154273129608299386">"Baimendu beti"</item>
   </string-array>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 50180de..a408566 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -21,13 +21,9 @@
     <string name="more_settings_label" msgid="3867559443480110616">"Gehiago"</string>
     <string name="display_settings" msgid="5325515247739279185">"Pantaila"</string>
     <string name="brightness" msgid="2919605130898772866">"Distira"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"Distira egokitua"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizatu pantailaren distira inguruko argitasunaren arabera"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"Distira doigarria"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Doitu pantailaren distira ingurunearen arabera"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Aktibatuta dago Gaueko argia"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ukipen-pantaila, pantaila"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ilundu pantaila, ukipen-pantaila, bateria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ilundu pantaila, ukipen-pantaila, bateria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"pantaila iluna, gaua, tonalitatea"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gau modua"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Sareak eta Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Sare mugikorra"</string>
@@ -37,8 +33,8 @@
     </plurals>
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktibo / SIM txartela"</string>
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktibo / SIM txartela"</string>
-    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktibo / Deskargatutako SIMa"</string>
-    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktibo / Deskargatutako SIMa"</string>
+    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktibo / Deskargatutako SIM txartela"</string>
+    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktibo / Deskargatutako SIM txartela"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Gehitu beste batzuk"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datu-konexioa"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Atzitu datuak datu-konexioaren bidez"</string>
@@ -80,10 +76,14 @@
     <string name="set_data_limit" msgid="7136539812414500084">"Ezarri datuen muga"</string>
     <string name="data_limit" msgid="227338836292511425">"Datuen muga"</string>
     <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datuen erabilera mugatzea"</string>
-    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Ibilgailua ezarri duzun datuen mugara heltzen denean, ibilgailuaren unitate nagusiak datu-konexioa desaktibatuko du.\n\nIbilgailuaren unitate nagusiak datuen erabilera neurtzen du, baina baliteke operadoreak erabilera hori beste era batera neurtzea. Horregatik, muga zuhurra ezartzea gomendatzen dugu."</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Ibilgailua ezarri duzun datuen mugara heltzen denean, ibilgailuaren gailu nagusiak datu-konexioa desaktibatuko du.\n\nIbilgailuaren gailu nagusiak datuen erabilera neurtzen du, baina baliteke operadoreak erabilera hori beste era batera neurtzea. Horregatik, muga zuhurra ezartzea gomendatzen dugu."</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Ezarri datuen erabileraren abisua"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Ezarri datuen erabilera-muga"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Ezarri"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM sarea"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB erabilita (%2$s - %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Konektatu beste sare batera"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Sarearen hobespenak"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wifia"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wifi-konexioa aktibatzen…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wifi-konexioa desaktibatzen…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ezin izan da konektatu sarera"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Gehitu sarea"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Konektatu"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Konektatzen…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Sarea urrunegi dago"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Pasahitza"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Erakutsi pasahitza"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Idatzi sarearen izena"</string>
@@ -138,7 +140,7 @@
     <string name="wifi_hotspot_name_title" msgid="8844779338692535356">"Wifi-gunearen izena"</string>
     <string name="wifi_hotspot_name_summary_connecting" msgid="5262510450498600038">"<xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> aktibatzen…"</string>
     <string name="wifi_hotspot_name_summary_connected" msgid="7421325340822195506">"Beste gailu batzuk konektatu egin daitezke <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> sare publikora"</string>
-    <string name="wifi_hotspot_password_title" msgid="4103948315849351988">"Wifi-guneko pasahitza"</string>
+    <string name="wifi_hotspot_password_title" msgid="4103948315849351988">"Wifi-gunearen pasahitza"</string>
     <string name="wifi_hotspot_security_title" msgid="2299925790743587725">"Segurtasuna"</string>
     <string name="wifi_hotspot_wpa2_personal" msgid="7135181212837798318">"WPA2 pertsonala"</string>
     <string name="wifi_hotspot_security_none" msgid="2514844105085054386">"Bat ere ez"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikazio batek gailu nagusia <xliff:g id="TIMEOUT">%1$d</xliff:g> segundoz ikusgai ezarri nahi du Bluetooth bidezko beste gailu batzuen aurrean."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak Bluetooth-a aktibatu, eta gailu nagusia <xliff:g id="TIMEOUT">%2$d</xliff:g> segundoz ikusgai ezarri nahi du beste gailu batzuen aurrean."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikazio batek Bluetooth-a aktibatu, eta gailu nagusia <xliff:g id="TIMEOUT">%1$d</xliff:g> segundoz ikusgai ezarri nahi du beste gailu batzuen aurrean."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"%1$s gisa dago ikusgai beste gailuetan"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Nire gailuak"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Aurretik konektatutakoak"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Konektatu da %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Deskonektatu da %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth bidez parekatzeko eskaera"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parekatu eta konektatu"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth bidez parekatzeko kodea"</string>
@@ -212,7 +219,7 @@
     <string name="manage_keyboard" msgid="4045394766282200132">"Kudeatu teklatuak"</string>
     <string name="text_to_speech_settings" msgid="811985746199507343">"Testua ahots bihurtzeko eginbidearen emaitza"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor hobetsia"</string>
-    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Oraingo motorra"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Uneko motorra"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Hizketaren abiadura"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"Tonua"</string>
     <string name="tts_reset" msgid="6289481549801844709">"Berrezarri"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Jakinarazpenen soinu lehenetsia"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alarmen soinu lehenetsia"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Gorde"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alerta-soinuak"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Tonua, jakinarazpenak, alarma"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Distira"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Doitu pantaila argi gutxi dagoenean"</string>
     <string name="units_settings" msgid="402325305096925886">"Unitateak"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Abiadura"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distantzia"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Erakutsi aplikazio guztiak"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplikazio lehenetsiak"</string>
     <string name="app_permissions" msgid="32799922508313948">"Aplikazio-baimenak"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Hauek atzi ditzaketen aplikazioak: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrolatu aplikazioek datuak atzitzeko duten baimena"</string>
     <string name="applications_settings" msgid="794261395191035632">"Aplikazioaren informazioa"</string>
     <string name="force_stop" msgid="2153183697014720520">"Behartu gelditzera"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Gelditzera behartu nahi duzu?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalatu"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Aplikazioa desgaitzen baduzu, baliteke Android-ek eta beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desgaitu aplikazioa"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ez dago instalatuta erabiltzaile honentzat"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ez dago instalatuta profil honetan"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Baimenak"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Jakinarazpenak"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Memoria eta cachea"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Bertsioa: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ez du baimenik"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ez da baimenik eskatu"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Erabiltzen ez diren aplikazioak"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">Erabiltzen ez diren <xliff:g id="COUNT_1">%d</xliff:g> aplikazio</item>
+      <item quantity="one">Erabiltzen ez den <xliff:g id="COUNT_0">%d</xliff:g> aplikazio</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Kendu baimenak eta egin tokia"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s barneko memorian"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datuen erabilera"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Aplik. datuen erabilera"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Galdetu beti"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ez ireki aplikazio honetan"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Esteka bateragarriak"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikazioak"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Irekitako azkenak"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ikusi %1$d aplikazioak"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Baimenen kudeatzailea"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrolatu aplikazioek datuak atzitzeko duten baimena"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Laguntzailea eta beste"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Sistema eta beste ezarpen batzuk"</string>
     <string name="special_access" msgid="5730278220917123811">"Aplikazio-baimen bereziak"</string>
     <string name="show_system" msgid="4401355756969485287">"Erakutsi sistemaren prozesuak"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ezkutatu sistemaren prozesuak"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ezkutatu sistemaren aplikazioak"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Aldatu sistemaren ezarpenak"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Baimen honekin, sistemaren ezarpenak alda ditzakete aplikazioek."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Jakinarazpenetarako sarbidea"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ez da egin kokapen-eskaerarik azkenaldian"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Aplikazio-mailako baimenak"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Kokapen-zerbitzuak"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Erabili kokapena"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Sistemaren eguneratzeak"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Aurreratuak"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Sistemari buruz, legezko informazioa, berrezartzea eta beste"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-en bertsioa"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-en segurtasun-adabakiaren maila"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modeloa eta hardwarea"</string>
@@ -417,22 +447,23 @@
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Berrezarri ezarpenak"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Berrezarri dira sareko ezarpenak"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"Berrezarri aplikazioen hobespenak"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hauen hobespen guztiak berrezarriko dira:\n\n"<li>"desgaitutako aplikazioak"</li>\n<li>"desgaitutako aplikazio-jakinarazpenak"</li>\n<li>"ekintza jakinetarako aplikazio lehenetsiak"</li>\n<li>"aplikazioen atzeko planoko datuen murriztapenak"</li>\n<li>"baimen-murriztapenak"</li>\n\n"Ez dituzu galduko aplikazioetako datuak."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hauen hobespen guztiak berrezarriko dira:\n\n"<li>"desgaitutako aplikazioak,"</li>\n<li>"desgaitutako aplikazio-jakinarazpenak,"</li>\n<li>"ekintza jakinetarako aplikazio lehenetsiak,"</li>\n<li>"aplikazioen atzeko planoko datuen murriztapenak eta"</li>\n<li>"baimen-murriztapenak."</li>\n\n"Ez dituzu galduko aplikazioetako datuak."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Berrezarri aplikazioak"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Berrezarri dira aplikazioen hobespenak"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Ezabatu datu guztiak (berrezarri jatorrizkoak)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Ibilgailuaren unitate nagusiko datu guztiak ezabatuko dira, honako hauek barne:\n\n"<li>"Google-ko kontua"</li>\n<li>"sistemako eta aplikazioetako datuak eta ezarpenak"</li>\n<li>"deskargatutako aplikazioak"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Kontu hauetan hasi duzu saioa:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Beste erabiltzaile batzuk daude ibilgailu honetan."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Berrezarri ibilgailua"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Berrezarri egin nahi dituzu?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Informazio pertsonal guztia eta deskargatutako aplikazioak ezabatu nahi dituzu? Ekintza hori ezin da desegin."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ezabatu eduki guztia"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Eduki guztia ezabatzen"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Itxaron, mesedez…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Ezabatu datu guztiak (berrezarri jatorrizkoak)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ezabatu informazio- eta aisia-sistemako datu eta profil guztiak"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Ibilgailuaren informazio- eta aisia-sistemako datu guztiak ezabatuko dira, honako hauek barne:\n\n"<li>"Google-ko kontua,"</li>\n<li>"sistemako eta aplikazioetako datuak eta ezarpenak,"</li>\n<li>"deskargatutako aplikazioak."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Kontu hauetan hasi duzu saioa:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Beste profil batzuk daude ibilgailu honetan."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Ezabatu datu guztiak"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Datu guztiak ezabatu nahi dituzu?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Informazio- eta aisia-sistema honetako profil pertsonaleko datu, kontu eta deskargatutako aplikazio guztiak ezabatuko dira.\n\nEzin da desegin ekintza."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Ezabatu eduki guztia"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Eduki guztia ezabatzen"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Itxaron, mesedez…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data eta ordua"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ezarri data, ordua, ordu-zona eta formatuak"</string>
-    <string name="date_time_auto" msgid="3570339569471779767">"Data eta ordu automatikoak"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"Data eta ordu automatikoa"</string>
     <string name="date_time_auto_summary" msgid="3311706425095342759">"Erabili sareak emandako ordua"</string>
     <string name="zone_auto" msgid="3701878581920206160">"Ordu-zona automatikoa"</string>
     <string name="zone_auto_summary" msgid="4345856882906981864">"Erabili sareak emandako ordu-zona"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Administratzaile gisa hasi da saioa"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Administratzaile-baimen guztiak"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Egin administratzaile"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Erabiltzaile horrek beste erabiltzaileak ezabatu ahal izango ditu (beste administratzaileak barne), eta sistemaren jatorrizko datuak berrezarri."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil horrek beste profilak ezabatu ahal izango ditu (beste administratzaileak barne), eta sistemaren jatorrizko datuak berrezarri."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ekintza hau ezingo da desegin."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Bai, egin administratzaile"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Erabiltzaile berriak sortu"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Sortu beste profil batzuk"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefono-deiak egin"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Autoko datu-konexioa mezuetarako"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Aplikazio berriak instalatu"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Aplikazioak desinstalatu"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Gehitu erabiltzaile bat"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Erabiltzaile berria"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Beste erabiltzaile bat gehitu?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Erabiltzaile bat gehitzen duzunean, bere eremua konfiguratu beharko du."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Edozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Erabiltzaile-mugara iritsi zara"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Gehienez, <xliff:g id="COUNT">%d</xliff:g> erabiltzaile sor ditzakezu.</item>
-      <item quantity="one">Erabiltzaile bakarra sor dezakezu.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Gehitu profila"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Profil berria"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Profil bat gehitu nahi duzu?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Profil bat gehitzen duzunean, pertsona horrek bere eremua konfiguratu beharko du."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Edozein profilek egunera ditzake beste profil guztien aplikazioak."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profilen mugara iritsi zara"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> profil sor ditzakezu gehienez.</item>
+      <item quantity="one">Profil bakarra sor daiteke.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Ezin izan da sortu erabiltzailea"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Erabiltzaile hau ezabatu?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Aplikazio eta datu guztiak ezabatuko dira."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Ezin izan da ezabatu erabiltzailea."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Ezin izan da sortu profil berria"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Profila ezabatu nahi duzu?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Profileko aplikazio eta datu guztiak ezabatuko dira"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Ezin izan da ezabatu profila."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profila aldatzen duzunean edo ibilgailua berriro abiarazten duzunean ezabatuko da profila."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Baztertu"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Saiatu berriro"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Azken erabiltzailea ezabatu?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Auto honetako azken erabiltzailea ezabatu ondoren, beste administratzaile bat sortuko da."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Erabiltzaile honekin erlazionatutako datu, ezarpen eta aplikazio guztiak ezabatu egingo dira. Berriro konfiguratu beharko duzu sistema."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Azken profila ezabatu nahi duzu?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ibilgailu honetako azken profila ezabatzen baduzu, profilarekin erlazionatutako datu, ezarpen eta aplikazio guztiak ezabatuko dira."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Berrezarri ondoren, profil berria konfiguratu ahalko duzu."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Aukeratu beste administratzaile bat"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Gutxienez administratzaile bat behar duzu. Honako hau ezabatzeko, aukeratu ordezko bat."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Aukeratu administratzailea"</string>
@@ -488,28 +520,29 @@
     <string name="current_user_name" msgid="3813671533249316823">"Zu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Izena"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Konfiguratu gabe"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editatu erabiltzaile-izena"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Editatu profileko izena"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Eremuak ezin du hutsik egon."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Idatzitako erabiltzaile-izenak ez du balio."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Idatzitako profileko izenak ez du balio."</string>
     <string name="users_list_title" msgid="770764290290240909">"Erabiltzaileak"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profilak"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s erabiltzailearen baimenak"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Memoria"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musika eta audioa"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"Beste aplikazio batzuk"</string>
     <string name="storage_files" msgid="6382081694781340364">"Fitxategiak"</string>
     <string name="storage_system" msgid="1271345630248014010">"Sistema"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Android-en <xliff:g id="VERSION">%s</xliff:g> bertsioa exekutatzeko balio duten fitxategiak daude sisteman"</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Android-en <xliff:g id="VERSION">%s</xliff:g>. bertsioa exekutatzeko balio duten fitxategiak daude sisteman"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio-fitxategiak"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Kalkulatzen…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Aplikazioaren tamaina"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Erabiltzaile-datuak"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profileko datuak"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cachea"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Guztira"</string>
-    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Garbitu memoria"</string>
+    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Garbitu biltegia"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Garbitu cachea"</string>
     <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Aplikazioaren datuak ezabatu nahi dituzu?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Aplikazio honetako datu guztiak betiko ezabatuko dira; besteak beste, fitxategi, ezarpen, kontu eta datu-base guztiak."</string>
-    <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Ezin izan da garbitu memoria aplikazio honi dagokionez."</string>
+    <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Ezin izan da garbitu aplikazioaren biltegia."</string>
     <string name="storage_unmount_success" msgid="1553591517580407021">"Atera da segurtasunez <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="storage_unmount_failure" msgid="4591934911541762883">"Ezin izan da atera segurtasunez <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Kontuak"</string>
@@ -544,11 +577,20 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Utzi sinkronizazioa"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizazioak arazoak ditu. Laster egongo da berriro erabilgarri."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Pribatutasuna"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Ibilgailuaren datuak"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrolatu aplikazioek kokapena atzitzeko duten baimena"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofonoa"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontrolatu aplikazioek mikrofonoa erabiltzeko duten baimena"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Ibilgailuaren datuak"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Kudeatu ibilgailuan gordetako jarduerak eta informazioa"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Ezabatu profila"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ezabatu profila eta kontuak informazio- eta aisia-sistematik"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Profil honek ezin du egin hori"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurtasuna"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Pantailaren blokeoa"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Bat ere ez"</string>
     <string name="security_lock_pattern" msgid="1174352995619563104">"Eredua"</string>
-    <string name="security_lock_pin" msgid="4891899974369503200">"PINa"</string>
+    <string name="security_lock_pin" msgid="4891899974369503200">"PIN kodea"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Pasahitza"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Aukeratu blokeo mota"</string>
     <string name="screen_lock_options" msgid="8531177937577168185">"Blokeatzeko aukerak"</string>
@@ -559,7 +601,7 @@
     <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"Saiatu berriro"</string>
     <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"Saltatu"</string>
     <string name="set_screen_lock" msgid="5239317292691332780">"Ezarri pantailaren blokeo bat"</string>
-    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Aukeratu PIN bat"</string>
+    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Aukeratu PIN kode bat"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Aukeratu eredu bat"</string>
     <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Aukeratu pasahitz bat"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Ezarrita dagoen pantailaren blokeoa"</string>
@@ -579,15 +621,17 @@
     <string name="okay" msgid="4589873324439764349">"Ados"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Pantailaren blokeoa kendu?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Edonork atzitu ahalko du zure kontua"</string>
-    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Idatzi PINa"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profilaren blokeoa"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Konfiguratu desblokeo automatikoa"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Idatzi PIN kodea"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Idatzi pasahitza"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Babestuta egoteko, ezarri PIN bat"</string>
-    <string name="confirm_your_pin_header" msgid="9096581288537156102">"Idatzi berriro PINa"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"Idatzi berriro PIN kodea"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PINak lau digitu izan behar ditu gutxienez"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"PIN kodeak ez du balio: gutxienez lau digitu izan behar ditu."</string>
-    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PINak ez datoz bat"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN kodeak ez datoz bat"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"Errore bat gertatu da PINa gordetzean"</string>
-    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"PINa ez da zuzena"</string>
+    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"PIN kodea ez da zuzena"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"Pasahitza ez da zuzena"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"Babestuta egoteko, ezarri pasahitz bat"</string>
     <string name="confirm_your_password_header" msgid="7052891840366724938">"Idatzi berriro pasahitza"</string>
@@ -597,12 +641,12 @@
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Berretsi"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"Lau karaktere izan behar ditu gutxienez"</string>
     <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Gutxienez <xliff:g id="COUNT">%d</xliff:g> karaktere izan behar ditu"</string>
-    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PINak <xliff:g id="COUNT">%d</xliff:g> digitu izan behar ditu gutxienez"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN kodeak <xliff:g id="COUNT">%d</xliff:g> digitu izan behar ditu gutxienez"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"Gehienez <xliff:g id="NUMBER">%d</xliff:g> karaktere izan behar ditu"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Gehienez <xliff:g id="NUMBER">%d</xliff:g> digitu izan behar ditu"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"0 eta 9 arteko zenbakiak soilik izan ditzake."</string>
-    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Gailuaren administratzaileak ez du eman beste PIN bat erabiltzeko baimenik"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IKT saileko administratzaileak blokeatu egiten ditu asmatzen errazak diren PIN kodeak. Erabili beste PIN bat."</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Gailuaren administratzaileak ez du eman beste PIN kode bat erabiltzeko baimenik"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IKT saileko administratzaileak blokeatu egiten ditu asmatzen errazak diren PIN kodeak. Erabili beste PIN bat."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Ezin da erabili onartzen ez den karaktererik."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Pasahitzak ez du balio; lau karaktere izan behar ditu gutxienez."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Gailuaren administratzaileak ez du eman beste pasahitz bat erabiltzeko baimenik"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Errore bat gertatu da pasahitza gordetzean"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IKT saileko administratzaileak blokeatu egiten ditu asmatzen errazak diren pasahitzak. Erabili beste pasahitz bat."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IKT saileko administratzaileak blokeatu egiten ditu asmatzen errazak diren pasahitzak. Erabili beste pasahitz bat."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ezin da erabili goranzko, beheranzko edo errepikatutako digitu-sekuentziarik."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pantaila blokeatzeko aukerak"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: duela <xliff:g id="NUM_DAYS">%3$s</xliff:g> egun"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Sartu tekla"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Irten demo modutik"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Irten demo modutik"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Demo kontua ezabatuko da eta sistemaren jatorrizko datuak berrezarriko dira. Erabiltzaile-datu guztiak galdu egingo dira."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Demo kontua ezabatuko da eta sistemaren jatorrizko datuak berrezarriko dira. Profileko datu guztiak galdu egingo dira."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Irten demo modutik"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"BAZTERTU"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Eginbide hau ezin da erabili gidatu bitartean"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Gidatu bitartean ezin da gehitu erabiltzailerik"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Gidatu bitartean ezin da gehitu profilik"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Bilatu"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Laguntzailea eta ahotsa"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Laguntzailearen aplikazioa"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Erabili pantailako testua"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Eman pantailako edukiak atzitzeko baimena laguntzaileari"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Erabili pantaila-argazkia"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Eman pantailako irudia atzitzeko baimena laguntzaileari"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Bidalitako azkenak"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Aplikazio guztiak"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profilak eta kontuak"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Kudeatu beste profilak"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Gehitu profil bat"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Ezabatu profila"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Gehitu profila"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 7c2c6e2..cce4d88 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"نمایشگر"</string>
     <string name="brightness" msgid="2919605130898772866">"میزان روشنایی"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"روشنایی تطبیقی"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"بهینه‌سازی سطح روشنایی برای نور در دسترس"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"تنظیم روشنایی صفحه‌نمایش متناسب با محیط"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"«نور شب» روشن است"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"صفحه، صفحه لمسی"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"صفحه کم‌نور، صفحه لمسی، باتری"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"صفحه کم‌نور، صفحه لمسی، باتری"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"صفحه کم‌نور، شب، سایه‌رنگ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"حالت شب"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"شبکه و اینترنت"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"شبکه تلفن همراه"</string>
@@ -70,7 +66,7 @@
     <string name="launch_manage_plan_text" msgid="906657488611815787">"مشاهده طرح"</string>
     <string name="app_data_usage" msgid="3878609885080232877">"مصرف داده برنامه"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"محدود شده"</string>
-    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"تاریخ بازنشانی چرخه مصرف داده"</string>
+    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"تاریخ بازنشانی چرخه استفاده"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"تاریخ هر ماه:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"تنظیم"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"محدودیت و هشدار داده"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"تنظیم هشدار مصرف داده"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"تنظیم حد مصرف داده"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"تنظیم کردن"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"شبکه OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d مگابایت استفاده شده است %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"پیوستن به شبکه‌ای دیگر"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"اولویت‌های شبکه"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"روشن کردن Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"خاموش کردن Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"اتصال به شبکه برقرار نشد"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"افزودن شبکه"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"اتصال"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"درحال اتصال…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"شبکه در محدوده نیست"</string>
     <string name="wifi_password" msgid="5565632142720292397">"گذرواژه"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"نمایش گذرواژه"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"لطفاً نام شبکه وارد کنید"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"برنامه‌ای می‌خواهد سیستم صوتی شما را برای سایر دستگاه‌های بلوتوث به‌مدت <xliff:g id="TIMEOUT">%1$d</xliff:g> ثانیه قابل‌مشاهده کند."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> می‌خواهد بلوتوث را روشن کند و سیستم صوتی شما را برای سایر دستگاه‌ها به‌مدت <xliff:g id="TIMEOUT">%2$d</xliff:g> ثانیه قابل‌مشاهده کند."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"برنامه‌ای می‌خواهد بلوتوث را روشن کند و سیستم صوتی شما را برای سایر دستگاه‌ها به مدت <xliff:g id="TIMEOUT">%1$d</xliff:g> ثانیه قابل‌مشاهده کند."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"برای دستگاه‌های دیگر به‌صورت %1$s قابل مشاهده است"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"دستگاه‌های من"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"قبلاً متصل‌شده"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s متصل شد"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"اتصال %1$s قطع شد"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"درخواست مرتبط‌سازی بلوتوث"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"مرتبط‌ کردن و اتصال"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"کد مرتبط‌سازی بلوتوث"</string>
@@ -226,8 +233,12 @@
     <string name="alarm_volume_title" msgid="840384014895796587">"زنگ"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"آهنگ زنگ تلفن"</string>
     <string name="notification_ringtone_title" msgid="8661716239594010288">"صدای اعلان پیش‌فرض"</string>
-    <string name="alarm_ringtone_title" msgid="3257364170646440908">"صدای زنگ ساعت پیش‌فرض"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"صدای زنگ پیش‌فرض"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ذخیره"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"صداهای هشدار"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"آهنگ زنگ، اعلان‌ها، هشدار"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"روشنایی"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"تنظیم صفحه‌نمایش برای نور کم"</string>
     <string name="units_settings" msgid="402325305096925886">"واحدها"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"سرعت"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"فاصله"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"نمایش همه برنامه‌ها"</string>
     <string name="default_applications" msgid="1558183275638697087">"برنامه‌های پیش‌فرض"</string>
     <string name="app_permissions" msgid="32799922508313948">"اجازه‌های برنامه"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"برنامه‌هایی که از <xliff:g id="APPS">%1$s</xliff:g> استفاده می‌کنند"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"کنترل دسترسی برنامه به داده‌های شما"</string>
     <string name="applications_settings" msgid="794261395191035632">"اطلاعات برنامه"</string>
     <string name="force_stop" msgid="2153183697014720520">"توقف اجباری"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"توقف اجباری؟"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"حذف نصب"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"اگر این برنامه را غیرفعال کنید، ممکن است Android و سایر برنامه‌ها دیگر عملکرد موردانتظار را نداشته باشند."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"غیرفعال کردن برنامه"</string>
-    <string name="not_installed" msgid="4218816013370552746">"برای این کاربر نصب نشده است"</string>
+    <string name="not_installed" msgid="4163454337822508007">"در این نمایه نصب نشده است"</string>
     <string name="permissions_label" msgid="2701446753515612685">"مجوزها"</string>
     <string name="notifications_label" msgid="6586089149665170731">"اعلان‌ها"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"فضای ذخیره‌سازی و حافظه پنهان"</string>
     <string name="application_version_label" msgid="8556889839783311649">"نسخه: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"اجازه‌ای داده نشده"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"اجازه‌ای درخواست نشده"</string>
+    <string name="unused_apps" msgid="648471933781010395">"برنامه‌های استفاده‌نشده"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> برنامه استفاده‌نشده</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> برنامه استفاده‌نشده</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"برداشتن اجازه‌ها و آزاد کردن فضا"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s در حافظه داخلی"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"مصرف داده"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"مصرف داده برنامه"</string>
@@ -317,7 +334,7 @@
     <string name="app_list_preference_none" msgid="7753357799926715901">"هیچ‌کدام"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"انتخاب‌شده"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"دستیار می‌تواند اطلاعات مربوط به برنامه‌های در حال استفاده در سیستم شما را بخواند، ازجمله اطلاعاتی که در صفحه‌نمایش شما قابل مشاهده است یا در برنامه‌ها قابل دسترسی است."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"افزودن سرویس"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"باز کردن پیوندها"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"برنامه‌های نصب‌شده"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"هربار پرسیده شود"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"در این برنامه باز نشود"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"پیوندهای پشتیبانی‌شده"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"برنامه‌ها"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"اخیراً بازشده"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"دیدن کل %1$d برنامه"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"مدیر اجازه‌ها"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"کنترل دسترسی برنامه به داده‌های شما"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"برای «دستیار» وغیره"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"برای سیستم و سایر تنظیمات"</string>
     <string name="special_access" msgid="5730278220917123811">"دسترسی ویژه به برنامه"</string>
     <string name="show_system" msgid="4401355756969485287">"نمایش سیستم"</string>
     <string name="hide_system" msgid="8845453295584638040">"پنهان کردن سیستم"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"پنهان کردن برنامه‌های سیستم"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"تغییر تنظیمات سیستم"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"این مجوز به برنامه امکان می‌دهد تنظیمات سیستم را تغییر دهد."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"دسترسی به اعلان"</string>
@@ -347,8 +372,8 @@
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"لغو"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"دسترسی پیامک ممتاز"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"ممکن است استفاده از «پیامک ممتاز» برای شما هزینه داشته باشد و مبلغ صورت‌حساب‌های شرکت مخابراتی‌تان را افزایش دهد. اگر مجوز را برای برنامه‌ای فعال کنید، می‌توانید با استفاده از آن برنامه پیامک ممتاز ارسال کنید."</string>
-    <string name="usage_access_title" msgid="7153427122072303254">"دسترسی به داده‌های مصرف"</string>
-    <string name="usage_access_description" msgid="2413168719257435422">"دسترسی به داده‌های مصرف، امکان ردیابی اینکه از چه برنامه‌های دیگری و چند وقت یک‌بار استفاده می‌کنید و همچنین شرکت مخابراتی‌تان، تنظیمات زبان و سایر جزئیات را به برنامه می‌دهد."</string>
+    <string name="usage_access_title" msgid="7153427122072303254">"دسترسی به استفاده"</string>
+    <string name="usage_access_description" msgid="2413168719257435422">"دسترسی به میزان استفاده، امکان ردیابی اینکه از چه برنامه‌های دیگری و چند وقت یک‌بار استفاده می‌کنید و همچنین شرکت مخابراتی‌تان، تنظیمات زبان و سایر جزئیات را به برنامه می‌دهد."</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"کنترل Wi-Fi"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"کنترل Wi-Fi به برنامه‌ اجازه می‌دهد Wi-Fi را روشن یا خاموش کند، شبکه‌های Wi-Fi را اسکن کند و به آن‌ها متصل شود، شبکه‌ها را اضافه یا حذف کند یا نقطه اتصالی فقط محلی راه‌اندازی کند."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"بیشتر"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"درخواست مکان جدیدی وجود ندارد"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"اجازه‌های سطح برنامه"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"خدمات مکان"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"استفاده از مکان"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"سیستم"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"به‌روزرسانی‌های سیستم"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"پیشرفته"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"درباره، اطلاعات حقوقی، بازنشانی، و غیره"</string>
     <string name="firmware_version" msgid="8491753744549309333">"نسخه Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"سطح وصله امنیتی Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"مدل و سخت‌افزار"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"با این کار همه اولویت‌های مربوط به موارد زیر بازنشانی می‌شود:\n\n"<li>"برنامه‌های غیرفعال‌شده"</li>\n<li>"اعلان‌های برنامه غیرفعال‌شده"</li>\n<li>"برنامه‌های پیش‌فرض برای عملکردها"</li>\n<li>"محدودیت‌های داده پس‌زمینه برای برنامه‌ها"</li>\n<li>"هرگونه محدودیت مجوز"</li>\n\n"هیچ داده برنامه‌ای را از دست نخواهید داد."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"بازنشانی برنامه‌ها"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"تنظیمات برگزیده برنامه بازنشانی شده است"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"پاک کردن همه داده‌ها (بازنشانی کارخانه‌ای)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"با این کار، همه داده‌های سیستم صوتی خودرو، ازجمله موارد زیر پاک می‌شود:\n\n"<li>"حساب Google شما"</li>\n<li>"تنظیمات و داده‌های برنامه و سیستم"</li>\n<li>"برنامه‌های بارگیری‌شده"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"شما درحال‌حاضر به حساب های زیر وارد شده‌اید:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"کاربرانی دیگری هم در این خودرو حضور دارند."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"بازنشانی خودرو"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"بازنشانی شود؟"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"همه اطلاعات شخصی و برنامه‌های بارگیری‌شده پاک شود؟ این کار قابل‌واگرد نیست!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"پاک کردن همه موارد"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"درحال پاک‌سازی"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"لطفاً صبر کنید..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"پاک‌سازی داده‌ها (بازنشانی کارخانه‌ای)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"پاک کردن همه داده‌ها و نمایه‌های سیستم اطلاعات-سرگرمی"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"با این کار، همه داده‌های سیستم اطلاعات-سرگرمی خودرو پاک می‌شود، ازجمله:\n\n"<li>"حساب Google شما"</li>\n<li>"تنظیمات و داده‌های برنامه و سیستم"</li>\n<li>"برنامه‌های بارگیری‌شده"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"درحال‌حاضر به سیستم حساب های زیر وارد شده‌اید:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"نمایه‌های دیگری هم در این خودرو وجود دارند."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"پاک کردن تمام داده‌ها"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"همه داده‌ها پاک شود؟"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"با این کار همه داده‌های نمایه شخصی، حساب‌ها، و برنامه‌های بارگیری‌شده در این سیستم اطلاعات-سرگرمی پاک خواهد شد.\n\nاین کنش واگردشدنی نیست."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"پاک کردن همه چیز"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"درحال پاک‌سازی"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"لطفاً صبر کنید…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"تاریخ و زمان"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تنظیم تاریخ، ساعت، منطقه زمانی و قالب‌ها"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"زمان و تاریخ خودکار"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"به‌عنوان سرپرست به سیستم وارد شدید"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"همه مجوزهای سرپرست"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"انتخاب به‌عنوان سرپرست"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"این کاربر می‌تواند کاربران (ازجمله سرپرستان دیگر) را حذف کند و سیستم را بازنشانی کارخانه‌ای کند."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"این نمایه می‌تواند نمایه‌ها (ازجمله سرپرستان دیگر) را حذف کند و سیستم را بازنشانی کارخانه‌ای کند."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"این اقدام برگشت‌پذیر نیست."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"بله، سرپرست شود"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ایجاد کاربران جدید"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ایجاد نمایه‌های جدید"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"برقراری تماس‌های تلفنی"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"پیام‌رسانی با داده تلفن همراه خودرو"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"نصب برنامه‌های جدید"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"حذف نصب برنامه‌ها"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"افزودن کاربر"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"کاربر جدید"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"کاربر جدیدی اضافه می‌کنید؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"وقتی کاربر جدیدی اضافه می‌کنید آن فرد باید فضای خودش را تنظیم کند."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"هر کاربری می‌تواند برنامه‌ها را برای همه کاربران دیگر به‌روزرسانی کند."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"به حداکثر کاربر مجاز رسیده است"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">می‌توانید تا <xliff:g id="COUNT">%d</xliff:g> کاربر ایجاد کنید.</item>
-      <item quantity="other">می‌توانید تا <xliff:g id="COUNT">%d</xliff:g> کاربر ایجاد کنید.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"افزودن نمایه"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"نمایه جدید"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"نمایه جدید اضافه شود؟"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"وقتی نمایه جدید اضافه می‌کنید، آن فرد باید فضای خود را تنظیم کند."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"هر نمایه‌ای می‌تواند برنامه‌ها را برای همه نمایه‌های دیگر به‌روزرسانی کند."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"تعداد نمایه به حد مجاز رسیده است"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">حداکثر <xliff:g id="COUNT">%d</xliff:g> نمایه می‌توانید ایجاد کنید.</item>
+      <item quantity="other">حداکثر <xliff:g id="COUNT">%d</xliff:g> نمایه می‌توانید ایجاد کنید.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"کاربر جدید ایجاد نشد"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"این کاربر حذف شود؟"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"همه برنامه‌ها و داده‌ها حذف خواهد شد."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"کاربر حذف نشد."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"نمایه جدید ایجاد نشد"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"این نمایه حذف شود؟"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"همه برنامه‌ها و داده‌های این نمایه حذف خواهند شد"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"نمایه حذف نشد."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"وقتی به نمایه دیگری بروید یا خودرو را بازراه‌اندازی کنید، این نمایه حذف خواهد شد."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"نپذیرفتن"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"امتحان مجدد"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"آخرین کاربر حذف شود؟"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"بعد از حذف تنها کاربر باقی‌ماندهٔ این خودرو، کاربرِ سرپرست جدیدی ایجاد خواهد شد."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"همه داده‌ها، تنظیمات، و برنامه‌های مرتبط با این کاربر حذف می‌شود. باید سیستم را دوباره راه‌‌اندازی کنید."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"آخرین نمایه باقی‌مانده حذف شود؟"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"اگر تنها نمایه باقی‌مانده را برای این خودرو حذف کنید، همه داده‌ها، تنظیمات، و برنامه‌های مرتبط با این نمایه پاک خواهند شد."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"بعداز بازنشانی، می‌توانید نمایه جدیدی راه‌اندازی کنید."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"انتخاب سرپرست جدید"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"حداقل یک سرپرست لازم دارید. برای حذف این سرپرست، ابتدا جایگزینی انتخاب کنید."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"انتخاب سرپرست"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"شما (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"نام"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"تنظیم نشده"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ویرایش نام کاربر"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ویرایش محل نمایه"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"این فیلد نمی‌تواند خالی باشد."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"نام کاربری واردشده نامعتبر است."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"نام نمایه واردشده نامعتبر است."</string>
     <string name="users_list_title" msgid="770764290290240909">"کاربران"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"نمایه‌ها"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"مجوزها به %1$s داده شد"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"فضای ذخیره‌سازی"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"موسیقی و صوت"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"فایل‌های صوتی"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"در حال محاسبه…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"حجم برنامه"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"داده‌های کاربر"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"داده‌های نمایه"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"حافظهٔ پنهان"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"جمع"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"پاک کردن فضای ذخیره‌سازی"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"لغو همگام‌سازی"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"همگام‌سازی درحال حاضر با مشکلی روبرو است. به‌زودی درست خواهد شد."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"حریم‌خصوصی"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"داده‌های خودرو"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"کنترل دسترسی برنامه به مکانتان"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"میکروفون"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"کنترل دسترسی برنامه به میکروفون"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"داده‌های خودرو"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"مدیریت فعالیت‌ها و اطلاعات ذخیره‌شده در این خودرو"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"حذف کردن نمایه"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"پاک کردن نمایه و حساب‌ها از سیستم اطلاعات-سرگرمی"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"این کنش برای نمایه‌تان دردسترس نیست"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"امنیت"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"قفل صفحه"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"هیچ‌کدام"</string>
@@ -566,7 +608,7 @@
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"برای حفظ امنیت، الگو تنظیم کنید"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"پاک کردن"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"لغو"</string>
-    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"الگوی جدید بازگشایی قفل"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"الگوی جدید بازگشایی قفلتان"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"الگوی بازگشایی قفل را بکشید"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"وقتی الگو را کشیدید، انگشتتان را بردارید"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"الگو ضبط شد"</string>
@@ -579,10 +621,12 @@
     <string name="okay" msgid="4589873324439764349">"تأیید"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"قفل صفحه برداشته شود؟"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"این کار به همه افراد اجازه می‌دهد به حسابتان دسترسی پیدا کنند"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"قفل نمایه"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"راه‌اندازی باز کردن خودکار قفل"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"پین را وارد کنید"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"گذرواژه‌تان را وارد کنید"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"برای حفظ امنیت، پین تنظیم کنید"</string>
-    <string name="confirm_your_pin_header" msgid="9096581288537156102">"پین را دوباره وارد کنید"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"پین خود را دوباره وارد کنید"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"پین باید حداقل ۴ رقمی باشد"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"پین نامعتبر است، پین باید حداقل ۴ رقم داشته باشد."</string>
     <string name="confirm_pins_dont_match" msgid="4607110139373520720">"پین‌ها با یکدیگر مطابقت ندارند"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"باید کمتر از <xliff:g id="NUMBER">%d</xliff:g> رقم باشد"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"فقط می‌تواند اعداد ۰ تا ۹ داشته باشد."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"سرپرست دستگاه اجازه استفاده از پین اخیر را نمی‌دهد"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"پین‌های رایج توسط سرپرست فناوری اطلاعات شما مسدود شده‌اند. پین متفاوتی را امتحان کنید."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"پین‌های رایج توسط سرپرست فناوری اطلاعات شما مسدود شده‌اند. پین متفاوتی را امتحان کنید."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"نمی‌تواند نویسه نامعتبر داشته باشد."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"گذرواژه نامعتبر است، گذرواژه باید حداقل ۴ نویسه داشته باشد."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"سرپرست دستگاه اجازه استفاده از گذرواژه اخیر را نمی‌دهد"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"خطای ذخیره گذرواژه"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"گذرواژه‌های رایج توسط سرپرست فناوری اطلاعات شما مسدود شده‌اند. گذرواژه متفاوتی را امتحان کنید."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"گذرواژه‌های رایج توسط سرپرست فناوری اطلاعات شما مسدود شده‌اند. گذرواژه متفاوتی را امتحان کنید."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ترتیب صعودی، نزولی یا تکراری ارقام مجاز نیست."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"گزینه‌های قفل صفحه"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> روز پیش"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"کلید را وارد کنید"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"خروج از حالت نمایشی"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"خروج از حالت نمایشی"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"با این کار حساب نمایشی حذف و سیستم به داده‌های کارخانه بازنشانی می‌شود. همه داده‌های کاربر از بین می‌روند."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"با این کار حساب نمایشی حذف و سیستم به داده‌های کارخانه بازنشانی می‌شود. همه داده‌های نمایه از بین می‌روند."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"خروج از حالت نمایشی"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"رد کردن"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"این ویژگی هنگام رانندگی در دسترس نیست"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"نمی‌توان هنگام رانندگی کاربر اضافه کرد"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"نمی‌توان هنگام رانندگی نمایه اضافه کرد"</string>
     <string name="default_search_query" msgid="3137420627428857068">"جستجو"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"«دستیار» و صدا"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"برنامه «دستیار»"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"استفاده از نوشتار صفحه"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"مجاز کردن «دستیار» برای دسترسی به محتوای صفحه‌نمایش"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"استفاده از نماگرفت"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"مجاز کردن «دستیار» برای دسترسی به تصویر صفحه‌نمایش"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"اخیراً ارسال‌شده"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"همه برنامه‌ها"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"نمایه‌ها و حساب‌ها"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"مدیریت نمایه‌های دیگر"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"افزودن یک نمایه"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"حذف کردن این نمایه"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"افزودن نمایه"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 1e8d265..4db1341 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Näyttö"</string>
     <string name="brightness" msgid="2919605130898772866">"Kirkkaustaso"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Kirkkauden säätö"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Näytön kirkkaus määräytyy valoisuuden mukaan."</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Mukauta näytön kirkkaus ympäristöön"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Yövalo on päällä"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"näyttö, kosketusnäyttö"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"näytön himmennys, kosketusnäyttö, akku"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"näytön himmennys, kosketusnäyttö, akku"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"näytön himmennys, yö, sävytys"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Yötila"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Verkko ja internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiiliverkko"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Aseta datankäyttövaroitus"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Aseta datankäyttöraja"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Aseta"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-verkko"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d Mt käytetty (%2$s – %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Liity toiseen verkkoon"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Verkkoasetukset"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi-yhteyttä otetaan käyttöön…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Poistetaan Wi-Fi-yhteyttä käytöstä…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Verkkoyhteyden muodostaminen epäonnistui."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lisää verkko"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Yhdistä"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Yhdistetään…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Verkko ei ole kantoalueella"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Salasana"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Näytä salasana"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Syötä verkon nimi"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Sovellus haluaa tuoda pääyksikkösi näkyviin muille Bluetooth-laitteille <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunniksi."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> haluaa ottaa Bluetoothin käyttöön ja tuoda pääyksikkösi näkyviin muille laitteille <xliff:g id="TIMEOUT">%2$d</xliff:g> sekunniksi."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Sovellus haluaa ottaa Bluetoothin käyttöön ja tuoda pääyksikkösi näkyviin muille laitteille <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunniksi."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Muille laitteille näkyvä nimi on %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Omat laitteet"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Aiemmin yhdistetyt"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s yhdistetty"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Yhteys katkaistu: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-laiteparipyyntö"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Muodosta laitepari ja yhdistä"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-laiteparikoodi"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Ilmoituksen oletusääni"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Herätyksen oletusääni"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Tallenna"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Hälytysäänet"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Soittoääni, ilmoitukset, hälytykset"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Kirkkaus"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Valitse näytölle himmeää valaistus"</string>
     <string name="units_settings" msgid="402325305096925886">"Yksiköt"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Nopeus"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Etäisyys"</string>
@@ -279,8 +290,8 @@
     <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Sovellukset ja ilmoitukset"</string>
     <string name="all_applications" msgid="7798210477486822168">"Näytä kaikki sovellukset"</string>
     <string name="default_applications" msgid="1558183275638697087">"Oletussovellukset"</string>
-    <string name="app_permissions" msgid="32799922508313948">"Sovellusluvat"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Sovellukset, joilla on lupa käyttää seuraavia: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions" msgid="32799922508313948">"Sovellusten käyttöoikeudet"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Päätä sovelluksen pääsystä dataasi"</string>
     <string name="applications_settings" msgid="794261395191035632">"Sovellustiedot"</string>
     <string name="force_stop" msgid="2153183697014720520">"Pakota sulkeutumaan"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Pakotetaanko sulkeutumaan?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Poista"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jos poistat sovelluksen käytöstä, Android ja muut sovellukset eivät välttämättä enää toimi oikein."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Poista sovellus käytöstä"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ei asennettu tälle käyttäjälle"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ei asennettu tälle profiilille"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Luvat"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Ilmoitukset"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Tallennustila ja välimuisti"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versio: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Käyttöoikeuksia ei ole myönnetty."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Käyttöoikeuksia ei ole pyydetty."</string>
+    <string name="unused_apps" msgid="648471933781010395">"Käyttämättömät sovellukset"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> käyttämätöntä sovellusta</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> käyttämätön sovellus</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Poista lupia ja vapauta tilaa"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s sisäisessä tallennustilassa"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datan käyttö"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Sovelluksen datan käyttö"</string>
@@ -334,17 +351,25 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Kysy aina"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Älä avaa tässä sovelluksessa"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Tuetut linkit"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Sovellukset"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Viimeksi avatut"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Katso kaikki %1$d sovellusta"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Käyttöoikeuksien ylläpitäjä"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Päätä sovelluksen pääsystä dataasi"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant ja muita"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Järjestelmäasetukset ja muut"</string>
     <string name="special_access" msgid="5730278220917123811">"Sovellusten erikoiskäyttö"</string>
     <string name="show_system" msgid="4401355756969485287">"Näytä järjestelmä"</string>
     <string name="hide_system" msgid="8845453295584638040">"Piilota järjestelmä"</string>
-    <string name="modify_system_settings_title" msgid="4596320571562433972">"Järjestelmäasetusten muokkaus"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Piilota järjestelmäsovellukset"</string>
+    <string name="modify_system_settings_title" msgid="4596320571562433972">"Muokkaa järjestelmäasetuksia"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Tämä käyttöoikeus sallii sovelluksen muokata järjestelmäasetuksia."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Pääsy ilmoituksiin"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Saako <xliff:g id="SERVICE">%1$s</xliff:g> ilmoitusten käyttöoikeuden?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> voi lukea kaikki ilmoitukset ja niiden sisältämät henkilökohtaiset tiedot, kuten yhteystietojen nimet ja saamiesi viestien sisällön. Se voi myös ohittaa ilmoitukset tai käyttää niiden toimintopainikkeita.\n\nTämä antaa sovellukselle myös oikeuden ottaa Älä häiritse ‑tilan käyttöön, poistaa sen käytöstä ja muuttaa sen asetuksia."</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Jos <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ei enää pääse ilmoituksiin, myös Älä häiritse ‑tilaan pääsy voidaan estää."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Estä pääsy"</string>
-    <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Peru"</string>
+    <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Peruuta"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Premium-tekstiviestien käyttö"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"Premium-tekstiviestien käyttö saattaa olla maksullista, ja kulut lisätään operaattorisi laskuun. Jos annat sovellukselle käyttöoikeuden, voit lähettää premium-tekstiviestejä kyseisellä sovelluksella."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"Käyttöoikeus"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ei viimeaikaisia sijaintipyyntöjä"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Sovellustason käyttöoikeudet"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Sijaintipalvelut"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Käytä sijaintia"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Järjestelmä"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Järjestelmäpäivitykset"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Lisäasetukset"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Tietoja, oikeudelliset tiedot, nollaus ja muuta"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versio"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidin tietoturvakorjauksen taso"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Malli ja laitteisto"</string>
@@ -408,7 +438,7 @@
     <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiilidata"</li></string>
     <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
     <string name="reset_esim_title" msgid="8132107637911831211">"Tyhjennä kaikki ajoneuvon eSIMit"</string>
-    <string name="reset_esim_desc" msgid="1437276625485586740">"Tämä ei peru palvelupakettiasi."</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Tämä ei peruuta palvelupakettiasi."</string>
     <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMien nollaus epäonnistui"</string>
     <string name="reset_network_select" msgid="2433825874868038739">"Valitse verkko"</string>
     <string name="reset_network_button_text" msgid="8374174455632765033">"Nollaa asetukset"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Kaikki seuraavien asetukset nollataan:\n\n"<li>"Käytöstä poistetut sovellukset"</li>\n<li>"Käytöstä poistetut sovellusilmoitukset"</li>\n<li>"Toimintojen oletussovellukset"</li>\n<li>"Sovellusten taustadatan käyttörajoitukset"</li>\n<li>"Käyttöoikeusrajoitukset"</li>\n\n"Et menetä mitään sovellusten dataa."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Nollaa sovellukset"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Sovellusasetukset on nollattu"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Poista data (tehdasasetusten palautus)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tämä poistaa ajoneuvon pääyksiköstä kaiken datan, esimerkiksi\n\n"<li>"Google-tilisi"</li>\n<li>"järjestelmän ja sovellusten datan ja asetukset"</li>\n<li>"ladatut sovellukset"</li>"."</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Olet kirjautuneena sisään seuraaville tileille:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Tällä ajoneuvolla on muita paikalla olevia käyttäjiä."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Nollaa ajoneuvo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Nollataanko?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Haluatko poistaa kaikki henkilötiedot ja ladatut sovellukset? Tätä ei voi peruuttaa."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Poista kaikki"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Poistetaan"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Odota…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Poista data (tehdasasetusten palautus)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Poista kaikki data ja profiilit infotainment-järjestelmästä"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Tämä poistaa ajoneuvon infotainment-järjestelmästä kaiken datan, esimerkiksi\n\n"<li>"Google-tilisi"</li>\n<li>"järjestelmän ja sovellusten datan ja asetukset"</li>\n<li>"ladatut sovellukset"</li>"."</string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Olet kirjautunut sisään seuraaville tileille:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Tällä ajoneuvolla on muita paikalla olevia profiileja."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Poista kaikki data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Poistetaanko kaikki data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Kaikki tämän infotainment-järjestelmän henkilökohtainen profiilidata, tilit ja ladatut sovellukset poistetaan.\n\nToimintoa ei voi kumota."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Poista kaikki"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Poistetaan"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Odota…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Päivämäärä ja aika"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Aseta päivämäärä, aika, aikavyöhyke ja formaatit"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automaattinen päivä ja aika"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Kirjautunut järjestelmänvalvojana"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Kaikki järjestelmänvalvojan käyttöoikeudet"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Muuta järjestelmänvalvojaksi"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Käyttäjä voi poistaa käyttäjiä, mukaan lukien muita järjestelmänvalvojia, ja palauttaa järjestelmän tehdasasetukset."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profiili voi poistaa profiileja, myös muita järjestelmänvalvojia, ja palauttaa järjestelmän tehdasasetukset."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Tätä toimintoa ei voi kumota."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Kyllä, muuta järjestelmänvalvojaksi"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Uusien käyttäjien luominen"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Luo uusia profiileja"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Puheluiden soittaminen"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Viestit auton mobiilidatalla"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Uusien sovellusten asennus"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Sovellusten poistaminen"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lisää käyttäjä"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Uusi käyttäjä"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Lisätäänkö uusi käyttäjä?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Kaikki käyttäjät voivat päivittää sovelluksia muille käyttäjille."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Käyttäjäraja saavutettu"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Voit lisätä korkeintaan <xliff:g id="COUNT">%d</xliff:g> käyttäjää.</item>
-      <item quantity="one">Käyttäjiä voi olla vain yksi.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Lisää profiili"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Uusi profiili"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Lisätäänkö uusi profiili?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kun lisäät uuden profiilin, kyseisen henkilön on valittava oman tilansa asetukset."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Kaikki profiilien käyttäjät voivat päivittää sovelluksia muille profiileille."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profiiliraja saavutettu"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Voit luoda enintään <xliff:g id="COUNT">%d</xliff:g> profiilia.</item>
+      <item quantity="one">Voit luoda vain yhden profiilin.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Uuden käyttäjän luominen epäonnistui"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Poistetaanko käyttäjä?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Kaikki sovellukset ja data poistetaan."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Käyttäjän poistaminen epäonnistui."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Uuden profiilin luominen ei onnistunut"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Poistetaanko tämä profiili?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Kaikki tämän profiilin sovellukset ja data poistetaan"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profiilin poistaminen ei onnistunut."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Tämä profiili poistetaan, kun vaihdat profiilia tai käynnistät ajoneuvon uudelleen."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ohita"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Yritä uudelleen"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Poistetaanko käyttäjä?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Uusi ylläpitäjä luodaan, jos poistat auton ainoan käyttäjän."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Kaikki käyttäjään liittyvä data, asetukset ja sovellukset poistetaan. Järjestelmä on määritettävä uudelleen."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Poistetaanko viimeinen profiili?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Jos poistat ainoan jäljellä olevan profiilin ajoneuvolta, kaikki tähän profiiliin liittyvät asetukset, data ja sovellukset poistetaan."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Voit luoda uuden profiilin palautuksen jälkeen."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Valitse uusi ylläpitäjä"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Ylläpitäjiä on oltava vähintään yksi. Valitse uusi ylläpitäjä, jotta voit poistaa aiemman."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Valitse ylläpitäjä"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Sinä (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nimi"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ei määritetty"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Käyttäjätunnuksen muokkaus"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Muokkaa profiilin nimeä"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Kenttä ei voi olla tyhjä."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Syötetty käyttäjänimi on virheellinen."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Lisätty profiilin nimi on virheellinen."</string>
     <string name="users_list_title" msgid="770764290290240909">"Käyttäjät"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiilit"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Luvat myönnetty: %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Tallennustila"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musiikki ja audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Äänitiedostot"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Lasketaan…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Sovelluksen koko"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Käyttäjätiedot"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profiilidata"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Välimuisti"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Yhteensä"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Tyhjennä tallennustila"</string>
@@ -541,9 +574,18 @@
     <string name="sync_one_time_sync" msgid="491707183321353107">"Synkronoi nyt napauttamalla – <xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkronoi nyt"</string>
-    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Peru synkronointi"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Peruuta synkronointi"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Synkronoinnissa on tällä hetkellä ongelmia. Palvelu palaa pian takaisin käyttöön."</string>
-    <string name="privacy_settings_title" msgid="3150145262029229572">"Yksityisyys"</string>
+    <string name="privacy_settings_title" msgid="3150145262029229572">"Tietosuoja"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Ajoneuvon data"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Päätä sovelluksen pääsystä sijaintiisi"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofoni"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Päätä sovelluksen oikeudesta käyttää mikrofonia"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Ajoneuvon data"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Ylläpidä tähän ajoneuvoon tallennettuja tapahtumia ja tietoja"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Poista profiili"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Poista profiilisi ja tilisi infotainment-järjestelmästä"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Tämä toiminto ei ole mahdollinen profiilillasi"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Tietoturva"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Näytön lukitus"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ei mitään"</string>
@@ -565,7 +607,7 @@
     <string name="current_screen_lock" msgid="637651611145979587">"Nykyinen näytön lukitus"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Aseta kuvio tietoturvasyistä"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Tyhjennä"</string>
-    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Peru"</string>
+    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Peruuta"</string>
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Uusi lukituksenpoistokuvio"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Piirrä lukituksen avaava kuvio"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Nosta sormi, kun olet valmis"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Poistetaanko näytön lukitus?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Kuka tahansa voi päästä tilillesi"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profiilin lukitus"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Ota automaattinen lukituksen avaus käyttöön"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Syötä PIN-koodi"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Syötä salasana"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Aseta PIN-koodi tietoturvasyistä"</string>
@@ -593,7 +637,7 @@
     <string name="confirm_your_password_header" msgid="7052891840366724938">"Syötä salasana uudelleen"</string>
     <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Salasanat eivät täsmää"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"Tyhjennä"</string>
-    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Peru"</string>
+    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Peruuta"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Vahvista"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"Vähimmäispituus on 4 merkkiä."</string>
     <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Salasanan vähimmäispituus on <xliff:g id="COUNT">%d</xliff:g> merkkiä."</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"PIN-koodissa saa olla enintään <xliff:g id="NUMBER">%d</xliff:g> numeroa."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"PIN-koodi saa sisältää vain numeroita 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Järjestelmänvalvoja esti PIN-koodin, koska sitä on käytetty viime aikoina."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT-järjestelmänvalvoja on estänyt yleiset PIN-koodit. Kokeile eri PIN-koodia."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT-järjestelmänvalvoja on estänyt yleiset PIN-koodit. Kokeile eri PIN-koodia."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Salasanassa ei saa olla virheellisiä merkkejä."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Virheellinen salasana. Vähimmäispituus on 4 merkkiä."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Järjestelmänvalvoja esti salasanan, koska sitä on käytetty viime aikoina."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Virhe tallennettaessa salasanaa"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-järjestelmänvalvoja on estänyt yleiset salasanat. Kokeile eri salasanaa."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT-järjestelmänvalvoja on estänyt yleiset salasanat. Kokeile eri salasanaa."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nousevat, laskevat tai toistuvat numerosarjat on kielletty."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Näytön lukitusvaihtoehdot"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> päivää sitten"</string>
@@ -645,17 +689,30 @@
     <string name="disconnect" msgid="6140789953324820336">"Katkaise yhteys"</string>
     <string name="delete_button" msgid="5840500432614610850">"Poista"</string>
     <string name="remove_button" msgid="6664656962868194178">"Poista"</string>
-    <string name="cancel" msgid="750286395700355455">"Peru"</string>
+    <string name="cancel" msgid="750286395700355455">"Peruuta"</string>
     <string name="allow" msgid="7519431342750394402">"Salli"</string>
     <string name="deny" msgid="340512788979930804">"Estä"</string>
     <string name="backspace_key" msgid="1545590866688979099">"Askelpalautin"</string>
     <string name="enter_key" msgid="2121394305541579468">"Lisää avain"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Sulje esittely"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Poistu esittelytilasta"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tämä poistaa esittelytilin ja palauttaa järjestelmän tehdasasetukset. Kaikki käyttäjätiedot poistetaan."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Tämä poistaa esittelytilin ja palauttaa järjestelmän tehdasasetukset. Kaikki profiilidata poistetaan."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sulje esittely"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"OHITA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Ominaisuus ei ole käytettävissä ajon aikana"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Käyttäjää ei voi lisätä ajon aikana"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Profiilia ei voi lisätä ajon aikana"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Haku"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant ja ääni"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant-sovellus"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Käytä näytön tekstiä"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Salli Assistantille pääsy näytön sisältöön"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Käytä kuvakaappauksia"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Salli Assistantille kuvakaappausten käyttöoikeus"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Äskettäin lähetetyt"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Kaikki sovellukset"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiilit ja tilit"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Ylläpidä muita profiileja"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Lisää profiili"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Poista tämä profiili"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Lisää profiili"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index acd320e..a50f5ab 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"Écran"</string>
     <string name="brightness" msgid="2919605130898772866">"Niveau de luminosité"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Luminosité adaptative"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiser le niveau de luminosité en fonction de l\'éclairage ambiant"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"Éclairage nocturne activé"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"écran, écran tactile"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"assombrir l\'écran, écran tactile, pile"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"assombrir l\'écran, écran tactile, pile"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"assombrir l\'écran, nuit, teinte"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Réseau cellulaire"</string>
@@ -37,8 +34,8 @@
     </plurals>
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"Services actifs/Carte SIM"</string>
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Services inactifs/Carte SIM"</string>
-    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Services actifs/Carte SIM téléchargée"</string>
-    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ser. inactifs/Carte SIM téléchargée"</string>
+    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Services actifs/Cartes SIM téléchargées"</string>
+    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ser. inactifs/Cartes SIM téléchargées"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Ajouter"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Données mobiles"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accéder aux données sur réseau cellulaire"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Définir avertissement d\'utilisation des données"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Définir la limite de consommation des données"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Définir"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activation du Wi-Fi en cours…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Désactivation du Wi-Fi en cours…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Échec de la connexion au réseau"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ajouter un réseau"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Associer"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connexion en cours…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Réseau hors de portée"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mot de passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afficher le mot de passe"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Veuillez entrer un nom de réseau"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Une application souhaite rendre votre unité centrale visible par d\'autres appareils Bluetooth pendant <xliff:g id="TIMEOUT">%1$d</xliff:g> secondes."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> souhaite activer le Bluetooth et rendre votre unité centrale visible par d\'autres appareils pendant <xliff:g id="TIMEOUT">%2$d</xliff:g> secondes."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Une application souhaite activer le Bluetooth et rendre votre unité centrale visible par d\'autres appareils pendant <xliff:g id="TIMEOUT">%1$d</xliff:g> secondes."</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Demande d\'association Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Associer et connecter"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code d\'association Bluetooth"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notification par défaut"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son d\'alarme par défaut"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Enregistrer"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"Unités"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Vitesse"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"Afficher toutes les applications"</string>
     <string name="default_applications" msgid="1558183275638697087">"Applications par défaut"</string>
     <string name="app_permissions" msgid="32799922508313948">"Autorisations de l\'application"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Applications qui utilisent <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"Détails de l\'application"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Voulez-vous forcer l\'arrêt?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Désinstaller"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si vous désactivez cette application, Android et d\'autres applications risquent de ne plus fonctionner correctement."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Désactiver l\'application"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Non installée pour cet utilisateur"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"Autorisations"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Stockage et mise en cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version : %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Aucune autorisation accordée"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Aucune autorisation demandée"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Applications non utilisées"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> application non utilisée</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applications non utilisées</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Retirer autorisations et libérer espace"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s de mémoire de stockage interne"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilisation des données"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Util. données applications"</string>
@@ -334,9 +367,24 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Toujours demander"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne pas ouvrir dans cette application"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Liens compatibles"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"Accès spécial pour applications"</string>
     <string name="show_system" msgid="4401355756969485287">"Afficher le système"</string>
     <string name="hide_system" msgid="8845453295584638040">"Masquer les processus système"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Masquer les applications systèmes"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modifier paramètres système"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Cette autorisation permet à une application de modifier les paramètres du système."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Accès aux notifications"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorisations à l\'échelle des applis"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Services de localisation"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour du système"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Niveau du correctif de sécurité Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modèle et matériel"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Cette opération réinitialise toutes les préférences relatives aux éléments suivants :\n\n"<li>"Applications désactivées"</li>\n<li>"Notifications associées aux applications désactivées"</li>\n<li>"Applications par défaut pour les actions"</li>\n<li>"Restrictions de données en arrière-plan pour les applications"</li>\n<li>"Toutes les restrictions d\'autorisations"</li>\n\n"Vous ne perdrez aucune donnée liée aux applications."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Réinitialiser les applications"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Les préférences des applications ont été réinitialisées"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Effacer toutes les données (réinitial.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Cette action effacera toutes les données de l\'unité principale de votre véhicule, y compris :\n\n"<li>"Votre compte Google"</li>\n<li>"Les données et les paramètres du système et de l\'application"</li>\n<li>"Les applications téléchargées"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Vous êtes actuellement connecté aux comptes suivants :"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"D\'autres personnes utilisent ce véhicule."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Réinitialiser le véhicule"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Réinitialiser?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Voulez-vous effacer toutes vos données personnelles et les applications que vous avez téléchargées? Cette action est irréversible!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Tout effacer"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Suppression en cours…"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Veuillez patienter…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Effacer toutes les données"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Vous êtes actuellement connecté aux comptes suivants :"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Tout effacer"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Effacement en cours…"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Veuillez patienter…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date et heure"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Configurer la date, l\'heure, le fuseau horaire et les formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Date et heure automatiques"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Connecté comme administrateur"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Toutes les autorisations d\'administrateur"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Rendre administrateur"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utilisateur pourra supprimer des utilisateurs, y compris d\'autres administrateurs, et réinitialiser le système."</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"Cette action ne peut pas être annulée."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Oui, rendre administrateur"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Créer des utilisateurs"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Faire des appels téléphoniques"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mess. avec connex. donn. de voiture"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer des applications"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Désinstaller des applications"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Tout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite d\'utilisateurs atteinte"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> utilisateur.</item>
-      <item quantity="other">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> utilisateurs.</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Impossible de créer un utilisateur"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Supprimer cet utilisateur?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"L\'ensemble des applications et des données seront supprimées."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Impossible de supprimer l\'utilisateur."</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ce profil sera supprimé lorsque vous changerez de profil ou que vous redémarrerez le véhicule."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Fermer"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Réessayer"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suppr. dernier utilisateur?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Après avoir supprimé le seul utilisateur restant pour cette voiture, un nouvel utilisateur administrateur sera créé."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tous les paramètres, les données et les applications associés à cet utilisateur seront supprimés. Vous devrez configurer le système à nouveau."</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Choisissez un nouvel administrateur"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Vous avez besoin d\'au moins un administrateur. Pour supprimer celui-ci, choisissez d\'abord un remplacement."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Choisir un administrateur"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vous (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configuré"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Modifier le nom d\'utilisateur"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"Champ obligatoire."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Le nom d\'utilisateur entré n\'est pas valide."</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"Utilisateurs"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"Autorisations accordées à %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Stockage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musique et audio"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Fichiers audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calcul en cours…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Taille de l\'application"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Données de l\'utilisateur"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Effacer l\'espace de stockage"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuler la synchronisation"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"La synchronisation rencontre actuellement des problèmes. Elle sera rétablie sous peu."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Confidentialité"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Données relatives au véhicule"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Données relatives au véhicule"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gérer les activités et les renseignements enregistrés à propos de ce véhicule"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"Sécurité"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Verrouill. de l\'écran"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Aucun"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Suppr. le verrouill. de l\'écran?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Cela permettra à quiconque d\'accéder à votre compte"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Entrez votre NIP"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Entrez votre mot de passe"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Pour plus de sécurité, définissez un NIP"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Doit contenir moins de <xliff:g id="NUMBER">%d</xliff:g> chiffres."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Doit contenir uniquement des chiffres contenus entre 0 et 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"L\'administrateur de l\'appareil ne permet pas l\'utilisation d\'un NIP récent"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Les NIP communs sont bloqués par l\'administrateur de votre service informatique. Essayez un NIP différent."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Les NIP communs sont bloqués par l\'administrateur de votre service informatique. Essayez un NIP différent."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Vous ne pouvez pas inclure de caractère non valide."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Le mot de passe doit comprendre au moins quatre caractères"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"L\'administrateur de l\'appareil ne permet pas l\'utilisation d\'un mot de passe récent"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Erreur lors de l\'enreg. du mot de passe"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Les mots de passe communs sont bloqués par l\'administrateur de votre service informatique. Essayez un mot de passe différent."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Les mots de passe communs sont bloqués par l\'administrateur de votre service informatique. Essayez un mot de passe différent."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites croissantes, décroissantes ou répétitives de chiffres ne sont pas autorisées."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Touche Entrée"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Quitter le mode démo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Quitter le mode démo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Cette action supprimera le compte de démonstration et réinitialisera le système. Toutes les données de l\'utilisateur seront perdues."</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Quitter le mode démo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORER"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Cette fonctionnalité n\'est pas accessible durant la conduite"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Impossible d\'ajouter un utilisateur durant la conduite"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Recherche"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant et voix"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0e7c627..e88afdb 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Écran"</string>
     <string name="brightness" msgid="2919605130898772866">"Niveau de luminosité"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Luminosité adaptative"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiser le niveau de luminosité en fonction de l\'éclairage ambiant"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Adapter la luminosité de l\'écran en fonction de l\'environnement"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Éclairage nocturne activé"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"écran, écran tactile"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"assombrir l\'écran, écran tactile, batterie"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"assombrir l\'écran, écran tactile, batterie"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"assombrir l\'écran, nuit, coloration"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Réseau mobile"</string>
@@ -75,7 +71,7 @@
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Définir"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Avertissement et limite pour les données"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"Cycle de consommation des données"</string>
-    <string name="set_data_warning" msgid="6628236612886588097">"Activer l\'avertissement"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Définir une alerte données"</string>
     <string name="data_warning" msgid="116776633806885370">"Avertissement de conso données"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"Définir la limite des données"</string>
     <string name="data_limit" msgid="227338836292511425">"Limite de données"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Définir l\'avertissement sur la conso des données"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Définir la limite de consommation des données"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Définir"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Réseau OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d Mo utilisé(s) du %2$s au %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Rejoindre un autre réseau"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Préférences réseau"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activation du Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Désactivation du Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Échec de la connexion au réseau"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ajouter un réseau"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connexion"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connexion…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Réseau hors de portée"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mot de passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afficher le mot de passe"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Veuillez saisir un nom de réseau"</string>
@@ -126,8 +128,8 @@
     <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresses IPv6"</string>
     <string name="wifi_gateway" msgid="4975799192860431013">"Passerelle"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Préférences Wi-Fi"</string>
-    <string name="wifi_wakeup" msgid="7451825226044542000">"Activer automatiquement le Wi‑Fi"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Le Wi‑Fi se réactive à proximité des réseaux haute qualité enregistrés, comme votre réseau domestique"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activation automatique du Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Réactiver Wi‑Fi près réseaux haute qualité déjà enregistrés, comme réseau domestique"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisponible, car "<annotation id="link">"localisation"</annotation>" désactivée. Activez-la."</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Activer la recherche de réseaux Wi-Fi ?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activer"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Une application nécessite que d\'autres appareils Bluetooth puissent détecter votre casque pendant <xliff:g id="TIMEOUT">%1$d</xliff:g> secondes."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> requiert l\'activation du Bluetooth et nécessite que d\'autres appareils puissent détecter votre casque pendant <xliff:g id="TIMEOUT">%2$d</xliff:g> secondes."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Une application requiert l\'activation du Bluetooth et nécessite que d\'autres appareils puissent détecter votre casque pendant <xliff:g id="TIMEOUT">%1$d</xliff:g> secondes."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visible en tant que \"%1$s\" par les autres appareils"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mes appareils"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Connectés précédemment"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s connecté"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s déconnecté"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Demande d\'association Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Associer et connecter"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code d\'association Bluetooth"</string>
@@ -226,8 +233,12 @@
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarme"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"Sonnerie du téléphone"</string>
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notification par défaut"</string>
-    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sonnerie par défaut du réveil"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son de l\'alarme par défaut"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Enregistrer"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Alertes sonores"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Sonnerie, notifications, alarme"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Luminosité"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Adapter l\'affichage en cas de faible luminosité"</string>
     <string name="units_settings" msgid="402325305096925886">"Unités"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Vitesse"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distance"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Afficher toutes les applications"</string>
     <string name="default_applications" msgid="1558183275638697087">"Applications par défaut"</string>
     <string name="app_permissions" msgid="32799922508313948">"Autorisations des applis"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Applications utilisant <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Contrôler l\'accès des applis à vos données"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informations sur les applications"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Forcer l\'arrêt ?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Désinstaller"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si vous désactivez cette application, il est possible qu\'Android et d\'autres applications ne fonctionnent plus comme prévu."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Désactiver l\'application"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Non installée pour cet utilisateur"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Non installée pour ce profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorisations"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifications"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Espace de stockage et cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Aucune autorisation accordée"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Aucune autorisation demandée"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Applis inutilisées"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> appli inutilisée</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> applis inutilisées</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Supprimer autorisations et libérer espace"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s de mémoire de stockage interne"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Consommation des données"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Conso des données applis"</string>
@@ -308,16 +325,16 @@
     <string name="direct_boot_unaware_dialog_message_car" msgid="2857599310518724080">"Remarque : Après un redémarrage, vous ne pouvez pas lancer cette application tant que vous n\'avez pas déverrouillé votre véhicule."</string>
     <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistance et saisie vocale"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"Application d\'assistance"</string>
-    <string name="assist_access_context_title" msgid="8034851731390785301">"Utiliser le texte de l\'écran"</string>
-    <string name="assist_access_context_summary" msgid="2374281280599443774">"Autoriser l\'appli d\'assistance à accéder au contenu textuel de l\'écran"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utiliser le texte affiché à l\'écran"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme de texte"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utiliser une capture d\'écran"</string>
-    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Autoriser l\'appli d\'assistance à accéder à une image de l\'écran"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme d\'image"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Saisie vocale"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Service de saisie automatique"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Aucune"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Sélectionnée"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"L\'Assistant pourra accéder aux informations relatives aux applications en cours d\'utilisation sur votre système, y compris aux informations visibles à l\'écran ou accessibles dans les applications."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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 Autofill&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 la saisie automatique."</string>
     <string name="autofill_add_service" msgid="6413893366443609951">"Ajouter un service"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Ouverture des liens"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Applications installées"</string>
@@ -334,14 +351,22 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Toujours demander"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne pas ouvrir dans cette application"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Liens compatibles"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Applis"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Ouvertes récemment"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Voir les %1$d applis"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gestionnaire d\'autorisations"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Contrôler l\'accès des applis à vos données"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant et plus"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Système et autres paramètres"</string>
     <string name="special_access" msgid="5730278220917123811">"Droits d\'accès spécifiques accordés aux applications"</string>
     <string name="show_system" msgid="4401355756969485287">"Afficher process. système"</string>
     <string name="hide_system" msgid="8845453295584638040">"Masquer les processus système"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Masquer les applications système"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Changer les paramètres système"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Cette autorisation permet à une application de modifier les paramètres système."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Accès aux notifications"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Autoriser <xliff:g id="SERVICE">%1$s</xliff:g> à accéder aux notifications ?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"L\'appli <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> pourra lire toutes les notifications, y compris des infos personnelles telles que le nom des contacts et le texte des messages que vous recevez. Elle pourra aussi fermer des notifications ou agir sur les boutons y figurant. \n\nL\'appli pourra aussi activer ou désactiver le mode Ne pas déranger, et modifier les paramètres associés."</string>
+    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> pourra lire toutes les notifications, y compris des informations personnelles, telles que le nom des contacts et le texte des messages que vous recevez. Il pourra également fermer des notifications ou déclencher les boutons d\'action que celles-ci contiennent. \n\nL\'application pourra aussi activer ou désactiver le mode Ne pas déranger, et modifier les paramètres associés."</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Si vous désactivez l\'accès aux notifications pour <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, l\'accès au mode Ne pas déranger peut également être désactivé."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Désactiver"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Annuler"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorisations des applis"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Services de localisation"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Utiliser ma position"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour du système"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Paramètres avancés"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"À propos, informations légales, réinitialisation et plus encore"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Mise à jour du correctif de sécurité Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modèle et matériel"</string>
@@ -379,11 +409,11 @@
     <string name="contributors_title" msgid="7698463793409916113">"Contributeurs"</string>
     <string name="manual" msgid="4819839169843240804">"Manuel"</string>
     <string name="regulatory_labels" msgid="3165587388499646779">"Libellés réglementaires"</string>
-    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Manuel de sécurité et réglementation"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Manuel de sécurité et de réglementation"</string>
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Conditions d\'utilisation"</string>
-    <string name="webview_license_title" msgid="6442372337052056463">"Licences System WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licences système WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fonds d\'écran"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Fournisseurs d\'images satellite :\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"Modèle"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Toutes les préférences liées à ces éléments seront réinitialisées :\n\n"<li>"Applications désactivées"</li>\n<li>"Notifications associées aux applications désactivées"</li>\n<li>"Applis par défaut pour les actions"</li>\n<li>"Restrictions de données en arrière-plan pour les applis"</li>\n<li>"Toutes les restrictions d\'autorisations"</li>\n\n"Vous ne perdrez aucune donnée liée aux applications."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Réinitialiser les applis"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Les préférences relatives aux applications ont été réinitialisées"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Effacer données (rétablir config. d\'usine)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Cette action effacera toutes les données de l\'unité principale du véhicule, y compris :\n\n"<li>"Votre compte Google"</li>\n<li>"Les données et paramètres du système et des applications"</li>\n<li>"Les applications téléchargées"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Vous êtes actuellement connecté aux comptes suivants :"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"D\'autres personnes utilisent ce véhicule."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Réinitialiser le véhicule"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Réinitialiser ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Effacer toutes vos informations personnelles et les applications téléchargées ? Cette action est irréversible."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Tout effacer"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Suppression en cours"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Veuillez patienter..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Effacer données (rétablir config. d\'usine)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Effacer tous les profils et données du système d\'infoloisirs"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Cela effacera toutes les données du système d\'infoloisirs du véhicule, y compris :\n\n"<li>"Votre compte Google"</li>\n<li>"Les données et paramètres du système et des applis"</li>\n<li>"Les applis téléchargées"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Vous êtes actuellement connecté aux comptes suivants :"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"D\'autres profils utilisent ce véhicule."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Effacer toutes les données"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Effacer toutes les données ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Tous vos comptes, données de profil personnelles et applis téléchargées sur ce système d\'infoloisirs seront supprimés.\n\nCette action est irréversible."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Tout effacer"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Suppression en cours"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Veuillez patienter…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date et heure"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Configurer la date, l\'heure, le fuseau horaire et les formats"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Date et heure automatiques"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Connecté en tant qu\'administrateur"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tous les droits d\'administrateur"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Changer en administrateur"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utilisateur pourra supprimer des profils utilisateur, y compris ceux d\'autres administrateurs, et rétablir la configuration d\'usine du système."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Ce profil pourra supprimer des profils, y compris ceux d\'autres administrateurs, et rétablir la configuration d\'usine du système."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Cette action est irréversible."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Oui, changer en administrateur"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Créer des utilisateurs"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Créer des profils"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Passer des appels"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Envoyer des SMS via les données mobiles du véhicule"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer des applications"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Désinstaller des applications"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"N\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite nombre utilisateurs atteinte"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profil utilisateur.</item>
-      <item quantity="other">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profils utilisateur.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Ajouter un profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nouveau profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Ajouter un profil ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Lorsque vous ajoutez un profil, l\'utilisateur concerné doit configurer son espace."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"N\'importe quel profil peut mettre à jour les applis pour tous les autres profils."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Nombre maximal de profils atteint"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="other">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profils.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Échec de création profil utilisateur"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Supprimer l\'utilisateur ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Toutes les applications et les données seront supprimées."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Échec de la suppression de l\'utilisateur."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Échec de la création d\'un profil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Supprimer ce profil ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Toutes les applis et données associées à ce profil seront supprimées"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Échec de la suppression du profil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ce profil sera supprimé lorsque vous changerez de profil ou que vous redémarrerez le véhicule."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorer"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Réessayer"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suppr. dernier utilis. ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Après la suppression du seul utilisateur restant pour cette voiture, un nouveau profil d\'administrateur sera créé."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tous les paramètres, données et applications associés à cet utilisateur seront supprimés. Vous devrez configurer à nouveau le système."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Supprimer le dernier profil restant ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Si vous supprimez le seul profil restant pour ce véhicule, tous les paramètres, données et applis associés à ce profil seront effacés."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Vous pourrez configurer un nouveau profil après la réinitialisation."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Sélectionner un nouvel administrateur"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Vous devez disposer d\'au moins un administrateur. Pour supprimer ce profil, choisissez d\'abord un autre administrateur."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Sélect. administrateur"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vous (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configuré"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Modifier le nom d\'utilisateur"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Modifier le nom du profil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Ce champ est obligatoire."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Le nom d\'utilisateur saisi n\'est pas valide."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Le nom du profil saisi n\'est pas valide."</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilisateurs"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profils"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Autorisations accordées à %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Stockage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musique et audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Fichiers audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calcul…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Taille d\'application"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Données utilisateur"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Données de profil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Effacer les données"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuler la synchronisation"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"La synchronisation rencontre des problèmes et sera bientôt rétablie."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Confidentialité"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Données du véhicule"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Contrôler l\'accès des applis à votre position"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Micro"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Contrôler l\'accès des applis au micro"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Données du véhicule"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gérer les activités et les infos enregistrées sur ce véhicule"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Supprimer votre profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Effacer votre profil et vos comptes du système d\'infoloisirs"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Cette action n\'est pas disponible pour votre profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sécurité"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Verrouillage d\'écran"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Aucun"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Annuler le verrouillage écran ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Si vous continuez, n\'importe qui pourra accéder à votre compte"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Verrouillage du profil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configurer le déverrouillage automatique"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Saisir votre code"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Saisissez votre mot de passe"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Pour la sécurité, définissez un code"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Le code doit contenir moins de <xliff:g id="NUMBER">%d</xliff:g> chiffres"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Le code ne doit comporter que des chiffres compris entre 0 et 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"L\'administrateur de l\'appareil n\'autorise pas l\'utilisation d\'un code récent"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Les codes courants sont bloqués par votre administrateur informatique. Choisissez un autre code."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Les codes courants sont bloqués par votre administrateur informatique. Choisissez un autre code."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Vous ne pouvez pas inclure de caractère non valide."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Mot de passe non valide : il doit comporter au moins 4 caractères."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"L\'administrateur de l\'appareil n\'autorise pas l\'utilisation d\'un mot de passe récent"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Erreur d\'enregistrement du mot de passe"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Les mots de passe courants sont bloqués par votre administrateur informatique. Choisissez un autre mot de passe."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Les mots de passe courants sont bloqués par votre administrateur informatique. Choisissez un autre mot de passe."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites de chiffres croissantes, décroissantes ou répétitives ne sont pas autorisées."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Touche \"Entrée\""</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Quitter la démo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Quitter le mode de démo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Le compte de démonstration sera supprimé et la configuration d\'usine du système sera rétablie. Toutes les données utilisateur seront perdues."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Le compte de démonstration sera supprimé et la configuration d\'usine du système sera rétablie. Toutes les données de profil seront perdues."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Quitter la démo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORER"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Fonctionnalité non disponible lorsque vous conduisez"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Impossible d\'ajouter un utilisateur pendant la conduite"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Impossible d\'ajouter un profil en conduisant"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Rechercher"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant et voix"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Appli Assistant"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Utiliser le texte affiché à l\'écran"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Autoriser l\'Assistant à accéder au contenu affiché à l\'écran"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Utiliser une capture d\'écran"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Autoriser l\'Assistant à accéder aux captures d\'écran"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Envoyées récemment"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Toutes les applis"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profils et comptes"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gérer d\'autres profils"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Ajouter un profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Supprimer ce profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Ajouter un profil"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index eecd035..37c4427 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"Pantalla"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivel de brillo"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Brillo intelixente"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiza o nivel de brillo en función da luz dispoñible"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"Luz nocturna activada"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"pantalla, pantalla táctil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, noite, ton"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rede de telefonía móbil"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Definir advertencia de uso de datos"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Definir límite de uso de datos"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Definir"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"Wifi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando a wifi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando a wifi…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Produciuse un erro ao conectar coa rede"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Engadir rede"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Conectando…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Estás fóra da zona de cobertura da rede"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contrasinal"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contrasinal"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Introduce un nome de rede"</string>
@@ -101,7 +108,7 @@
     <string name="wifi_security" msgid="158358046038876532">"Seguranza"</string>
     <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensidade do sinal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estado"</string>
-    <string name="wifi_speed" msgid="1650692446731850781">"Velocidade de ligazón"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"Velocidade de vinculación"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frecuencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Enderezo IP"</string>
     <string name="show_password" msgid="2074628020371139240">"Mostrar contrasinal"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Unha aplicación quere que a túa unidade principal estea visible para outros dispositivos Bluetooth durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> quere activar o Bluetooth e que a túa unidade principal estea visible para outros dispositivos durante <xliff:g id="TIMEOUT">%2$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Unha aplicación quere activar o Bluetooth e que a túa unidade principal estea visible para outros dispositivos durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitude de sincronización por Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar e conectar"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de sincronización por Bluetooth"</string>
@@ -198,7 +215,7 @@
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Queres sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Permitir que <xliff:g id="DEVICE_NAME">%1$s</xliff:g> acceda aos teus contactos e ao historial de chamadas"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"É posible que tamén teñas que escribir este PIN no outro dispositivo."</string>
-    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"É posible que tamén teñas que escribir esta clave de acceso no outro dispositivo."</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"É posible que tamén teñas que escribir este contrasinal no outro dispositivo."</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Debe ter 16 díxitos"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalmente 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitude de sincronización"</string>
@@ -210,7 +227,7 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Todos os idiomas"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Xestionar teclados"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"Saída da conversión de texto a voz"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Saída da síntese de voz"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidade da fala"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notificación predeterminado"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son de alarma predeterminado"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Gardar"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"Unidades"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocidade"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distancia"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostrar todas as aplicacións"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplicacións predeterminadas"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permisos de aplicacións"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplicacións que usan \"<xliff:g id="APPS">%1$s</xliff:g>\""</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"Información da aplicación"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forzar parada"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Queres forzar a parada?"</string>
@@ -290,14 +316,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se desactivas esta aplicación, é posible que Android e outras aplicacións deixen de funcionar segundo o previsto."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desactivar aplicación"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Sen instalar para este usuario"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificacións"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Almacenamento e memoria caché"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Non se outorgou ningún permiso"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Non se solicitou ningún permiso"</string>
-    <string name="storage_type_internal" msgid="8918688427078709570">"%s do almacenamento interno"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplicacións que non se usan"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplicacións que non se usan</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplicación que non se usa</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Quitar permisos e liberar espazo"</string>
+    <string name="storage_type_internal" msgid="8918688427078709570">"%s de almacenamento interno"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos da aplicación"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calculando…"</string>
@@ -334,21 +367,36 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pregunta sempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Non abre nesta aplicación"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Ligazóns compatibles"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"Acceso especial das aplicacións"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostrar sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ocultar sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ocultar aplicacións do sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar axustes do sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Con este permiso as aplicacións poden modificar a configuración do sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acceso a notificacións"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Queres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> teña acceso ás notificacións?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> poderá ler todas as notificacións, incluída a información persoal, coma os nomes dos contactos e o texto das mensaxes que recibas. Tamén poderá ignorar notificacións ou activar os botóns de acción que estas conteñan.\n\nAdemais, poderá activar ou desactivar o modo Non molestar e cambiar a configuración asociada."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Se desactivas o acceso de <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ás notificacións, tamén se pode desactivar o acceso a Non molestar."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Se desactivas o acceso de <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ás notificacións, tamén se pode desactivar o acceso no modo Non molestar."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Desactivar"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Cancelar"</string>
-    <string name="premium_sms_access_title" msgid="1409118461646148686">"Acceso ás SMS de tarificación adicional"</string>
-    <string name="premium_sms_access_description" msgid="7119026067677052169">"As SMS de tarificación adicional poden implicar cargos engadidos nas facturas do teu operador. Se activas o permiso para unha aplicación, poderás enviar este tipo de mensaxes a través desa aplicación."</string>
-    <string name="usage_access_title" msgid="7153427122072303254">"Acceso a datos de uso"</string>
-    <string name="usage_access_description" msgid="2413168719257435422">"Co acceso aos datos de uso unha aplicación pode realizar un seguimento das demais aplicacións que usas e de con que frecuencia as utilizas, así como do teu operador, da configuración do idioma e doutros detalles."</string>
+    <string name="premium_sms_access_title" msgid="1409118461646148686">"Acceso ás SMS premium"</string>
+    <string name="premium_sms_access_description" msgid="7119026067677052169">"Podes ter que pagar polas mensaxes premium, cuxos custos se engadirán ás facturas do teu operador. Se activas o permiso para unha aplicación, poderás enviar SMS premium a través desa aplicación."</string>
+    <string name="usage_access_title" msgid="7153427122072303254">"Acceso ao uso"</string>
+    <string name="usage_access_description" msgid="2413168719257435422">"Co acceso ao uso unha aplicación poden realizar un seguimento das demais aplicacións que usas e de con que frecuencia as utilizas, así como do teu operador, da configuración do idioma e doutros detalles."</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"Control da wifi"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Co control da wifi, as aplicacións poden activar ou desactivar a wifi, buscar redes wifi, conectarse a elas, engadir ou eliminar redes e iniciar unha zona wifi local."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"Máis"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Non hai solicitudes de localización recentes"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos para as aplicacións"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Servizos de localización"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizacións do sistema"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivel de parche de seguranza de Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo e hardware"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Con esta acción, restableceranse todas as preferencias de:\n\n"<li>"Aplicacións desactivadas"</li>\n<li>"Notificacións de aplicacións desactivadas"</li>\n" "<li>"Aplicacións predeterminadas para accións"</li>\n<li>"Restricións de datos en segundo plano para aplicacións"</li>\n<li>"Calquera restrición de permisos"</li>\n\n" Non perderás datos de ningunha aplicación."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer aplicacións"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Restablecéronse as preferencias das aplicacións"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Borrar todos os datos"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Ao realizar esta acción, borraranse todos os datos da unidade principal do teu vehículo, entre os que se inclúen os seguintes:\n\n"<li>"A túa Conta de Google"</li>\n<li>"Os datos e a configuración do sistema e das aplicacións"</li>\n<li>"As aplicacións descargadas"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Actualmente tes a sesión iniciada nas seguintes contas:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hai outros usuarios neste vehículo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Queres restablecer?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Queres borrar toda a túa información persoal e as aplicacións descargadas? Esta acción non se pode desfacer."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Agarda..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Borrar datos (restabl. conf. de fábrica)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Actualmente tes a sesión iniciada nas seguintes contas:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Borrar todo"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Borrando"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Agarda..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Define a data, a hora, o fuso horario e os formatos"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data e hora automáticas"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Iniciouse sesión como administrador"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos os permisos de administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Converter en administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O usuario poderá eliminar usuarios, incluídos outros administradores, e facer un restablecemento de fábrica do sistema."</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción non se pode desfacer."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Si, converter en administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear novos usuarios"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Facer chamadas"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS por datos móbiles do coche"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novas aplicacións"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicacións"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Engadir usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuario"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Engadir un usuario novo?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cando engades un usuario novo, este deberá configurar o seu espazo."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Calquera usuario pode actualizar as aplicacións para o resto dos usuarios."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Alcanzouse o límite de usuarios"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Pódense crear <xliff:g id="COUNT">%d</xliff:g> usuarios como máximo.</item>
-      <item quantity="one">Só se pode crear un usuario.</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Non se puido crear un novo usuario"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminar este usuario?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Eliminaranse todas as aplicacións e os datos."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Houbo un erro ao eliminar o usuario."</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Este perfil eliminarase cando cambies de perfil ou reinicies o vehículo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorar"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar de novo"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eliminar último usuario?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Despois de eliminar o único usuario restante deste coche, crearase un novo administrador."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Eliminaranse todos os datos, a configuración e as aplicacións asociados con este usuario. Ademais, terás que configurar de novo o sistema."</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolle un novo administrador"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas polo menos un administrador. Para eliminar este, primeiro escolle outro."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Escoller administrador"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ti (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sen configurar"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editar nome de usuario"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"O campo non pode estar en branco."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"O nome de usuario que introduciches non é válido."</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedidos a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Almacenamento"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música e audio"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Ficheiros de audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculando…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Tamaño da aplicación"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Datos do usuario"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Memoria caché"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Borrar almacenamento"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Neste momentos hai problemas coa sincronizacións, pero restablecerase en breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacidade"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Datos do vehículo"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Datos do vehículo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Xestiona as actividades e a información gardadas neste vehículo"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"Seguranza"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ningún"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"Aceptar"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Eliminar bloqueo de pantalla?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Desta forma calquera poderá acceder á túa conta"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Introduce o teu PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Introduce o teu contrasinal"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Por cuestións de seguranza, define un PIN"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Debe conter menos de <xliff:g id="NUMBER">%d</xliff:g> díxitos"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Só pode conter díxitos comprendidos entre o 0 e o 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"O administrador de dispositivos non permite o uso dun PIN recente"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"O teu administrador de TI bloqueou os PIN comúns. Proba cun PIN diferente."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"O teu administrador de TI bloqueou os PIN comúns. Proba cun PIN diferente."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Non pode conter un carácter que non é válido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"O contrasinal non é válido. Debe ter como mínimo 4 caracteres."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"O administrador de dispositivos non permite o uso dun contrasinal recente"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Erro ao gardar o contrasinal"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"O teu administrador de TI bloqueou os contrasinais comúns. Proba cun contrasinal diferente."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"O teu administrador de TI bloqueou os contrasinais comúns. Proba cun contrasinal diferente."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non se permite unha secuencia de díxitos ascendente, descendente nin repetida."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcións de bloqueo de pantalla"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: hai <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla Intro"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Saír da demostración"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sae do modo de demostración"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Con esta acción eliminarase a conta de demostración e restableceranse os datos de fábrica do sistema. Perderanse todos os datos do usuario."</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Saír da demostración"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORAR"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Esta función non está dispoñible mentres conduces"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Non se poden engadir usuarios mentres se conduce"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Busca opcións de configuración"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistente e voz"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 6b59cf9..5bd62d8 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"ડિસ્પ્લે"</string>
     <string name="brightness" msgid="2919605130898772866">"બ્રાઇટનેસ લેવલ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"અનુકૂલનશીલ બ્રાઇટનેસ"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ઉપલબ્ધ પ્રકાશ માટેનાં બ્રાઇટનેસ લેવલને ઑપ્ટિમાઇઝ કરો"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"રાત્રિ પ્રકાશ ચાલુ છે"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"સ્ક્રીન, ટચસ્ક્રીન"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ઝાંખી સ્ક્રીન, ટચસ્ક્રીન, બૅટરી"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ઝાંખી સ્ક્રીન, ટચસ્ક્રીન, બૅટરી"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ઝાંખી સ્ક્રીન, રાત્રિ, રંગછટા"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"રાત્રિ મોડ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"નેટવર્ક અને ઇન્ટરનેટ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"મોબાઇલ નેટવર્ક"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ડેટા વપરાશની ચેતવણી સેટ કરો"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ડેટા વપરાશની મર્યાદા સેટ કરો"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"સેટ કરો"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"વાઇ-ફાઇ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"વાઇ-ફાઇ ચાલુ કરી રહ્યાં છીએ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"વાઇ-ફાઇ બંધ કરી રહ્યાં છીએ…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"નેટવર્ક સાથે કનેક્ટ કરવામાં નિષ્ફળ થયાં"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"નેટવર્ક ઉમેરો"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"કનેક્ટ કરો"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"કનેક્ટ થઈ રહી છે…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"નેટવર્ક રેન્જમાં નથી"</string>
     <string name="wifi_password" msgid="5565632142720292397">"પાસવર્ડ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"પાસવર્ડ બતાવો"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"કૃપા કરીને નેટવર્કનું નામ દાખલ કરો"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ઍપ, તમારા હેડયૂનિટને અન્ય બ્લૂટૂથ ડિવાઇસ પર <xliff:g id="TIMEOUT">%1$d</xliff:g> સેકન્ડ સુધી દૃશ્યક્ષમ બનાવવા માગે છે."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>, બ્લૂટૂથ ચાલુ કરવા અને તમારા હેડયૂનિટને અન્ય ડિવાઇસ પર <xliff:g id="TIMEOUT">%2$d</xliff:g> સેકન્ડ સુધી દૃશ્યક્ષમ બનાવવા માગે છે."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ઍપ, બ્લૂટૂથ ચાલુ કરવા અને તમારા હેડયૂનિટને અન્ય ડિવાઇસ પર <xliff:g id="TIMEOUT">%1$d</xliff:g> સેકન્ડ સુધી દૃશ્યક્ષમ બનાવવા માગે છે."</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"બ્લૂટૂથ જોડાણ બનાવવાની વિનંતી"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"જોડાણ બનાવો અને કનેક્ટ કરો"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"બ્લૂટૂથનો જોડાણ કરવાનો કોડ"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ડિફૉલ્ટ અલાર્મ સાઉન્ડ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"સાચવો"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"યુનિટ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ઝડપ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"અંતર"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"બધી ઍપ બતાવો"</string>
     <string name="default_applications" msgid="1558183275638697087">"ડિફૉલ્ટ ઍપ"</string>
     <string name="app_permissions" msgid="32799922508313948">"ઍપની પરવાનગીઓ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>નો ઉપયોગ કરતી ઍપ"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"ઍપની માહિતી"</string>
     <string name="force_stop" msgid="2153183697014720520">"ફરજિયાત બંધ કરો"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ફરજિયાત બંધ કરીએ?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"અનઇન્સ્ટૉલ કરો"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"જો તમે આ ઍપ બંધ કરો છો, તો Android અને અન્ય ઍપ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ઍપ બંધ કરો"</string>
-    <string name="not_installed" msgid="4218816013370552746">"આ વપરાશકર્તા માટે ઇન્સ્ટૉલ કરી નથી"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"પરવાનગીઓ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"નોટિફિકેશન"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"સ્ટોરેજ અને કૅશ મેમરી"</string>
     <string name="application_version_label" msgid="8556889839783311649">"વર્ઝન: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"કોઈ પરવાનગીઓ આપેલ નથી"</string>
-    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"કોઈ પરવાનગીઓની વિનંતી કરી નથી"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"કોઈ પરવાનગીઓની વિનંતી કરેલ નથી"</string>
+    <string name="unused_apps" msgid="648471933781010395">"બિનવપરાયેલી ઍપ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">બિનવપરાયેલી <xliff:g id="COUNT_1">%d</xliff:g> ઍપ</item>
+      <item quantity="other">બિનવપરાયેલી <xliff:g id="COUNT_1">%d</xliff:g> ઍપ</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"પરવાનગીઓ કાઢી નાખો અને જગ્યા ખાલી કરો"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s આંતરિક સ્ટોરેજમાં"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ડેટા વપરાશ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ઍપ ડેટા વપરાશ"</string>
@@ -334,9 +367,24 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"દર વખતે પૂછો"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ક્યારેય આ ઍપમાં ખોલશો નહીં"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"સમર્થિત લિંક"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"ઍપ માટે વિશેષ ઍક્સેસ"</string>
     <string name="show_system" msgid="4401355756969485287">"સિસ્ટમ બતાવો"</string>
     <string name="hide_system" msgid="8845453295584638040">"સિસ્ટમ છુપાવો"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"સિસ્ટમ ઍપ છુપાવો"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"સિસ્ટમ સેટિંગમાં ફેરફાર કરો"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"આ પરવાનગી ઍપને સિસ્ટમ સેટિંગમાં ફેરફાર કરવાની મંજૂરી આપે છે."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"નોટિફિકેશનનો ઍક્સેસ"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"સ્થાન માટે તાજેતરમાં કોઈ વિનંતી નથી"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ઍપ લેવલની પરવાનગીઓ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"જગ્યાની સેવાઓ"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"સિસ્ટમ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"સિસ્ટમ અપડેટ"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android વર્ઝન"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android સુરક્ષા પૅચ લેવલ"</string>
     <string name="hardware_info" msgid="3973165746261507658">"મૉડલ અને હાર્ડવેર"</string>
@@ -378,7 +434,7 @@
     <string name="legal_information" msgid="1838443759229784762">"કાનૂની માહિતી"</string>
     <string name="contributors_title" msgid="7698463793409916113">"સહયોગકર્તાઓ"</string>
     <string name="manual" msgid="4819839169843240804">"મૅન્યુઅલ"</string>
-    <string name="regulatory_labels" msgid="3165587388499646779">"નિયમનકારી લેબલ"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"નિયમનકારી લેબલો"</string>
     <string name="safety_and_regulatory_info" msgid="1204127697132067734">"સુરક્ષા અને નિયમન મૅન્યુઅલ"</string>
     <string name="copyright_title" msgid="4220237202917417876">"કૉપિરાઇટ"</string>
     <string name="license_title" msgid="936705938435249965">"લાઇસન્સ"</string>
@@ -390,7 +446,7 @@
     <string name="status_serial_number" msgid="9158889113131907656">"અનુક્રમ નંબર"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"હાર્ડવેરનું વર્ઝન"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
-    <string name="settings_license_activity_title" msgid="8499293744313077709">"ત્રીજા પક્ષના લાઇસન્સ"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"તૃતીય-પક્ષ લાઇસન્સ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"લાઇસન્સ લોડ કરવામાં સમસ્યા છે."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"લોડ કરી રહ્યાં છીએ…"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"આમ કરવાથી આ બધી પસંદગીઓ રીસેટ થઈ જશે:\n\n"<li>"બંધ કરેલી ઍપ"</li>\n<li>"ઍપના બંધ કરેલા નોટિફિકેશન"</li>\n<li>"ક્રિયાઓ માટેની ડિફૉલ્ટ ઍપ્લિકેશનો"</li>\n<li>"ઍપ માટે બૅકગ્રાઉન્ડ ડેટાના પ્રતિબંધો"</li>\n<li>"કોઈપણ પરવાનગીના પ્રતિબંધો"</li>\n\n"તમે કોઈપણ ઍપનો ડેટા ગુમાવશો નહીં."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ઍપને રીસેટ કરો"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ઍપ પસંદગીઓ રીસેટ કરવામાં આવી છે"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"બધો ડેટા કાઢી નાખો (ફેક્ટરી રીસેટ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"આ ક્રિયા તમારા વાહનના હેડ યુનિટમાંથી બધો ડેટા કાઢી નાખશે, જેમાં આનો સમાવેશ થાય છે:\n\n"<li>"તમારું Google એકાઉન્ટ"</li>\n<li>"સિસ્ટમ અને ઍપ ડેટા અને સેટિંગ"</li>\n<li>"ડાઉનલોડ કરેલ ઍપ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"હાલમાં તમે નીચે જણાવેલા બધા એકાઉન્ટમાં સાઇન ઇન થયા છો:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"આ વાહન પર અન્ય વપરાશકર્તા હાજર છે."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"વાહન રીસેટ કરો"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"રીસેટ કરીએ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"તમારી બધી વ્યક્તિગત માહિતી અને ડાઉનલોડ કરેલી ઍપ કાઢી નાખીએ? તમે આ ક્રિયા માટે કરેલો છેલ્લો ફેરફાર રદ કરી શકશો નહીં!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"દરેક વસ્તુ કાઢી નાખો"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"કાઢી નાંખી રહ્યું છે"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"કૃપા કરીને રાહ જુઓ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"બધો ડેટા કાઢી નાખો (ફેક્ટરી રીસેટ)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"હાલમાં તમે નીચે જણાવેલા બધા એકાઉન્ટમાં સાઇન ઇન થયા છો:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"તમામ બાબત કાઢી નાખો"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"કાઢી નાખી રહ્યાં છીએ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"કૃપા કરીને રાહ જુઓ…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"તારીખ અને સમય"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"તારીખ, સમય, સમય ઝોન અને ફૉર્મેટ સેટ કરો"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ઑટોમૅટિક રીતે તારીખ અને સમય"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"વ્યવસ્થાપક તરીકે સાઇન ઇન થયા"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"વ્યવસ્થાપક માટેની બધી પરવાનગીઓ"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"વ્યવસ્થાપક બનાવો"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"આ વપરાશકર્તા, અન્ય વ્યવસ્થાપકો સહિત અન્ય વપરાશકર્તાઓને ડિલીટ કરી શકશે અને સિસ્ટમને ફેક્ટરી રીસેટ પણ કરી શકશે."</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"આ ક્રિયા ઉલટાવી શકવા યોગ્ય નથી."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"હા, આમને વ્યવસ્થાપક બનાવો"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"નવા વપરાશકર્તાઓ બનાવો"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ફોન કૉલ કરો"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"કારના મોબાઇલ ડેટા મારફતે મેસેજિંગ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"નવી ઍપ ઇન્સ્ટૉલ કરો"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ઍપ અનઇન્સ્ટૉલ કરો"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"વપરાશકર્તા ઉમેરો"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"નવા વપરાશકર્તા"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"નવા વપરાશકર્તાને ઉમેરીએ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમની સ્પેસ સેટ કરવાની જરૂર પડે છે."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"કોઈપણ વપરાશકર્તા બધા અન્ય વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"વપરાશકર્તાની મર્યાદા સુધી પહોંચ્યાં"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">તમે <xliff:g id="COUNT">%d</xliff:g> વપરાશકર્તા સુધી મંજૂરી આપી શકશો.</item>
-      <item quantity="other">તમે <xliff:g id="COUNT">%d</xliff:g> વપરાશકર્તા સુધી મંજૂરી આપી શકશો.</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"નવો વપરાશકર્તા બનાવવામાં નિષ્ફળ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"આ વપરાશકર્તાને ડિલીટ કરીએ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"બધી ઍપ અને ડેટા ડિલીટ કરવામાં આવશે."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"વપરાશકર્તાને ડિલીટ કરવામાં નિષ્ફળ થયાં."</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"જ્યારે તમે પ્રોફાઇલ સ્વિચ કરો કે વાહન ફરી ચાલુ કરો ત્યારે આ પ્રોફાઇલ ડિલીટ કરવામાં આવશે."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"છોડી દો"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ફરી પ્રયાસ કરો"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"છેલ્લા યુઝરને ડિલીટ કરીએ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"આ કાર માટેના બચેલા એકમાત્ર વપરાશકર્તાને ડિલીટ કર્યા પછી, નવા વ્યવસ્થાપકની રચના થશે."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"આ વપરાશકર્તા સાથે સંબંધિત બધો ડેટા, સેટિંગ અને ઍપ ડિલીટ થશે. તમારે સિસ્ટમને ફરીથી સેટ કરવી જરૂરી થશે."</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"નવા વ્યવસ્થાપકની પસંદગી કરો"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"તમારી પાસે એક વ્યવસ્થાપકનું હોવું જરૂરી છે. આને ડિલીટ કરવા માટે, પહેલા નવાની પસંદગી કરો."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"વ્યવસ્થાપક પસંદ કરો"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"તમે (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"નામ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"સેટ કરેલ નથી"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"વપરાશકર્તાના નામમાં ફેરફાર કરો"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"ફીલ્ડ ખાલી રાખી શકાય નહીં."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"દાખલ કરેલું વપરાશકર્તાનું નામ અમાન્ય છે."</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"વપરાશકર્તાઓ"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sને આપેલી પરવાનગીઓ"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"સ્ટોરેજ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"મ્યુઝિક અને ઑડિયો"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ઑડિયોની ફાઇલો"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ગણતરી કરી રહ્યાં છીએ…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ઍપનું કદ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"વપરાશકર્તા ડેટા"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"કૅશ મેમરી"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"કુલ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"સ્ટોરેજ સાફ કરો"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"સિંક કરવાનું રદ કરો"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"સિંકમાં હાલ સમસ્યા આવી રહી છે. ટૂંક સમયમાં તે ફરીથી કાર્યરત થઈ જશે."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"પ્રાઇવસી"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"વાહનનો ડેટા"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"વાહનનો ડેટા"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"આ વાહનમાં સાચવવામાં આવેલી પ્રવૃત્તિઓ અને માહિતી મેનેજ કરો"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"સુરક્ષા"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"સ્ક્રીન લૉક"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"કોઈ લૉક નથી"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"ઓકે"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"સ્ક્રીન લૉક કાઢી નાખીએ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"આ ક્રિયા તમારા એકાઉન્ટને ઍક્સેસ કરવાની મંજૂરી કોઈને પણ આપશે"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"તમારો પિન દાખલ કરો"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"તમારો પાસવર્ડ દાખલ કરો"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"સુરક્ષા માટે, પિન સેટ કરો"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>થી ઓછા અંક હોવા આવશ્યક છે"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"માત્ર 0-9 અંક શામેલ હોવા આવશ્યક છે."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ઉપકરણ વ્યવસ્થાપક તાજેતરના પિનનો ઉપયોગ કરવાની મંજૂરી આપતા નથી"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"સામાન્ય પિન તમારા IT વ્યવસ્થાપક દ્વારા બ્લૉક કરવામાં આવેલા છે. એક અલગ પિન અજમાવી જુઓ."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"સામાન્ય પિન તમારા IT વ્યવસ્થાપક દ્વારા બ્લૉક કરવામાં આવેલા છે. એક અલગ પિન અજમાવી જુઓ."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"આમાં અમાન્ય અક્ષરોનો સમાવેશ થઈ શકતો નથી."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"પાસવર્ડ અમાન્ય છે, ઓછામાં ઓછા 4 અક્ષર હોવા આવશ્યક છે."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ઉપકરણ વ્યવસ્થાપક તાજેતરના પાસવર્ડનો ઉપયોગ કરવાની મંજૂરી આપતા નથી"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"પાસવર્ડ સાચવવામાં ભૂલ"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"સામાન્ય પાસવર્ડ તમારા IT વ્યવસ્થાપક દ્વારા બ્લૉક કરવામાં આવે છે. એક અલગ પાસવર્ડ અજમાવી જુઓ."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"સામાન્ય પાસવર્ડ તમારા IT વ્યવસ્થાપક દ્વારા બ્લૉક કરવામાં આવે છે. એક અલગ પાસવર્ડ અજમાવી જુઓ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"અંકોના ચઢતા ક્રમની, ઉતરતા ક્રમની અથવા પુનરાવર્તિત અનુક્રમની મંજૂરી નથી."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"સ્ક્રીન લૉકના વિકલ્પો"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> દિવસ પહેલાં"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter કી"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ડેમોમાંથી બહાર નીકળો"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ડેમો મોડમાંથી બહાર નીકળો"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"આ ક્રિયા ડેમો એકાઉન્ટ ડિલીટ કરશે અને સિસ્ટમને ફેક્ટરી ડેટા પર રીસેટ કરશે. વપરાશકર્તાનો બધો ડેટા ગુમ થશે."</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ડેમોમાંથી બહાર નીકળો"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"છોડી દો"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ડ્રાઇવિંગ કરતી વખતે આ સુવિધા ઉપલબ્ધ નથી"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ડ્રાઇવ કરતી વખતે વપરાશકર્તાને ઉમેરી શકાતા નથી"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant અને વૉઇસ"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index be478f3..2f9bb3b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -21,13 +21,9 @@
     <string name="more_settings_label" msgid="3867559443480110616">"ज़्यादा"</string>
     <string name="display_settings" msgid="5325515247739279185">"डिसप्ले"</string>
     <string name="brightness" msgid="2919605130898772866">"स्क्रीन की रोशनी का लेवल"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"आस-पास की रोशनी के हिसाब से स्क्रीन की चमक"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"आस-पास मौजूद रोशनी के हिसाब से स्क्रीन की चमक कम या ज़्यादा करें"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"रोशनी के अनुसार सेट होने वाली चमक"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"आस-पास की रोशनी के हिसाब से स्क्रीन की चमक में बदलाव करें"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"नाइट लाइट चालू है"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"स्क्रीन, टचस्क्रीन"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"हल्की रोशनी वाली स्क्रीन, टचस्‍क्रीन, बैटरी"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"हल्की रोशनी वाली स्क्रीन, टचस्‍क्रीन, बैटरी"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"हल्की रोशनी वाली स्क्रीन, नाइट, टिंट"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"रात वाला मोड"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क और इंटरनेट"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
@@ -49,7 +45,7 @@
     <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> का इस्तेमाल करें"</string>
     <string name="roaming_title" msgid="6218635014519017734">"रोमिंग"</string>
     <string name="roaming_summary" msgid="7476127740259728901">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
-    <string name="roaming_alert_title" msgid="4433901635766775763">"डेटा रोमिंग की अनुमति देना चाहते हैं?"</string>
+    <string name="roaming_alert_title" msgid="4433901635766775763">"डेटा रोमिंग की अनुमति दें?"</string>
     <string name="roaming_warning" msgid="4908184914868720704">"रोमिंग शुल्क लागू हो सकते हैं."</string>
     <string name="data_usage_settings" msgid="7877132994777987848">"डेटा खर्च"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"प्राइमरी डेटा"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"डेटा खर्च की चेतावनी सेट करें"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"डेटा खर्च की सीमा सेट करें"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"सेट करें"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM नेटवर्क"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s से %3$s के बीच %1$d एमबी डेटा इस्तेमाल किया गया"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"अन्य नेटवर्क से जुड़ें"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"नेटवर्क की सेटिंग"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"वाई-फ़ाई"</string>
     <string name="wifi_starting" msgid="473253087503153167">"वाई-फ़ाई चालू हो रहा है…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"वाई-फ़ाई बंद हो रहा है…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्क से कनेक्ट नहीं हो पाया"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क जोड़ें"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"जोड़ें"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"कनेक्ट हो रहा है…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"नेटवर्क पहुंच से बाहर है"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड दिखाएं"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"कृपया किसी नेटवर्क का नाम डालें"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"एक ऐप्लिकेशन <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंड के लिए आपका हेड यूनिट दूसरे ब्लूटूथ डिवाइस को दिखाना चाहता है."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ को चालू करके <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंड के लिए आपका हेड यूनिट दूसरे डिवाइस को दिखाना चाहता है."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"एक ऐप्लिकेशन ब्लूटूथ को चालू करके <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंड के लिए आपका हेड यूनिट दूसरे डिवाइस को दिखाना चाहता है."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"अन्य डिवाइसों को %1$s के तौर पर दिखता है"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"मेरे डिवाइस"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"पहले कनेक्ट किए गए डिवाइस"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s कनेक्ट किया गया"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s डिसकनेक्ट किया गया"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लूटूथ के ज़रिए जोड़ने का अनुरोध किया गया"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"दूसरे डिवाइस से जोड़ें और कनेक्‍ट करें"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्‍लूटूथ के ज़रिए जोड़ने वाला कोड"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचना की डिफ़ॉल्ट आवाज़"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्म की डिफ़ॉल्ट आवाज़"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"सेव करें"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"चेतावनी की आवाज़ें"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"रिंगटोन, सूचनाएं, अलार्म"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"चमक"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"कम रोशनी के हिसाब से स्क्रीन की चमक में बदलाव करें"</string>
     <string name="units_settings" msgid="402325305096925886">"इकाइयां"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"रफ़्तार"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"दूरी"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"सभी ऐप्लिकेशन दिखाएं"</string>
     <string name="default_applications" msgid="1558183275638697087">"डिफ़ॉल्ट ऐप्लिकेशन"</string>
     <string name="app_permissions" msgid="32799922508313948">"ऐप्लिकेशन की अनुमतियां"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> इस्तेमाल करने वाले ऐप्लिकेशन"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"तय करें कि कौनसा ऐप्लिकेशन आपका डेटा ऐक्सेस कर सकता है"</string>
     <string name="applications_settings" msgid="794261395191035632">"ऐप्लिकेशन की जानकारी"</string>
     <string name="force_stop" msgid="2153183697014720520">"ज़बरदस्ती रोकें"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ज़बरदस्ती रोकें?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"अनइंस्टॉल करें"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"अगर आप इस ऐप्लिकेशन को बंद कर देते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन ठीक से काम न करें."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ऐप्लिकेशन बंद करें"</string>
-    <string name="not_installed" msgid="4218816013370552746">"इस उपयोगकर्ता के लिए इंस्टॉल नहीं किया गया"</string>
+    <string name="not_installed" msgid="4163454337822508007">"इस प्रोफ़ाइल के लिए इंस्टॉल नहीं किया गया"</string>
     <string name="permissions_label" msgid="2701446753515612685">"अनुमतियां"</string>
     <string name="notifications_label" msgid="6586089149665170731">"सूचनाएं"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"मेमोरी और कैश"</string>
     <string name="application_version_label" msgid="8556889839783311649">"वर्शन: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कोई अनुमति नहीं दी गई"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"किसी अनुमति का अनुरोध नहीं किया गया"</string>
+    <string name="unused_apps" msgid="648471933781010395">"इस्तेमाल न किए जाने वाले ऐप्लिकेशन"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">इस्तेमाल न किया जाने वाला <xliff:g id="COUNT_1">%d</xliff:g> ऐप्लिकेशन</item>
+      <item quantity="other">इस्तेमाल न किए जाने वाले <xliff:g id="COUNT_1">%d</xliff:g> ऐप्लिकेशन</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"अनुमतियां हटाएं और जगह खाली करें"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"डिवाइस की मेमोरी में %s है"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटा खर्च"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ऐप्लिकेशन का डेटा खर्च"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"हर बार पूछें"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"इस ऐप्लिकेशन में नहीं खोलें"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"सहायता करने वाले लिंक"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ऐप्लिकेशन"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"हाल ही में खोले गए"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"सभी %1$d ऐप्लिकेशन देखें"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"परमिशन मैनेजर"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"तय करें कि कौनसा ऐप्लिकेशन आपका डेटा ऐक्सेस कर सकता है"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant वगैरह के लिए"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"सिस्टम और अन्य सेटिंग के लिए"</string>
     <string name="special_access" msgid="5730278220917123811">"ऐप्लिकेशन के लिए खास ऐक्सेस"</string>
     <string name="show_system" msgid="4401355756969485287">"सिस्टम के ऐप्लिकेशन दिखाएं"</string>
     <string name="hide_system" msgid="8845453295584638040">"सिस्टम के ऐप्लिकेशन छिपाएं"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"सिस्टम के ऐप्लिकेशन छिपाएं"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"सिस्टम की सेटिंग बदलें"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"यह अनुमति किसी ऐप्लिकेशन को सिस्टम की सेटिंग बदलने देती है."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"सूचना का ऐक्सेस"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हाल ही में जगह का कोई अनुरोध नहीं है"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ऐप्लिकेशन-लेवल की अनुमतियां"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"जगह की जानकारी की सेवाएं"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"जगह की जानकारी का इस्तेमाल करें"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"बेहतर"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"इसके बारे में, कानूनी जानकारी, रीसेट करें वगैरह"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android का वर्शन"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा पैच लेवल"</string>
     <string name="hardware_info" msgid="3973165746261507658">"मॉडल और हार्डवेयर"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"इससे इन सबके लिए प्राथमिकताएं रीसेट हो जाएंगी:\n\n"<li>"बंद किए गए ऐप्लिकेशन"</li>\n<li>"बंद की गई ऐप्लिकेशन सूचनाएं"</li>\n<li>"कार्रवाइयों के लिए डिफ़ॉल्ट ऐप्लिकेशन"</li>\n<li>"ऐप्लिकेशन के लिए बैकग्राउंड डेटा पाबंदियां"</li>\n<li>"अनुमति से जुड़ी सभी पाबंदियां"</li>\n\n"आपका सारा ऐप्लिकेशन डेटा बना रहेगा."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ऐप्लिकेशन को रीसेट करें"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ऐप्लिकेशन की सेटिंग रीसेट कर दी गई हैं"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"पूरा डेटा हमेशा के लिए मिटाएं (फ़ैक्ट्री रीसेट)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"इससे आपकी गाड़ी की हेड यूनिट से सारा डेटा हमेशा के लिए मिटा दिया जाएगा, जिसमें शामिल हैं:\n\n"<li>"आपका Google खाता"</li>\n<li>"सिस्टम, ऐप्लिकेशन का डेटा और सेटिंग"</li>\n<li>"डाउनलोड किए गए ऐप्लिकेशन"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"आपने इस समय नीचे दिए गए खातों में साइन इन कर रखा है:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"इस वाहन पर दूसरे उपयोगकर्ता मौजूद हैं."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"गाड़ी को रीसेट करें"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रीसेट करें?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"अपनी सारी निजी जानकारी और डाउनलोड किए गए ऐप्लिकेशन हमेशा के लिए मिटाना चाहते हैं? आप इस कार्रवाई को पहले जैसा नहीं कर सकते!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"सब कुछ हमेशा के लिए मिटाएं"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"हमेशा के लिए मिटाया जा रहा है"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया इंतज़ार करें..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"हमेशा के लिए डेटा मिटाएं (फ़ैक्ट्री रीसेट करें)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"सूचना और मनोरंजन की सुविधा देने वाले डिवाइस से पूरा डेटा और प्रोफ़ाइलें हमेशा के लिए मिटाएं"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ऐसा करने पर, आपके वाहन के सूचना और मनोरंजन की सुविधा देने वाले डिवाइस का सारा डेटा हमेशा के लिए मिट जाएगा, जिसमें ये शामिल हैं:\n\n"<li>"आपका Google खाता"</li>\n<li>"सिस्टम और ऐप्लिकेशन का डेटा और सेटिंग"</li>\n<li>"डाउनलोड किए गए ऐप्लिकेशन"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"फ़िलहाल, आपने नीचे दिए गए खातों में साइन इन कर रखा है:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"इस वाहन पर दूसरी प्रोफ़ाइलें मौजूद हैं."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"पूरा डेटा हमेशा के लिए मिटाएं"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"पूरा डेटा हमेशा के लिए मिटाना है?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ऐसा करने पर, आपकी निजी प्रोफ़ाइल के पूरे डेटा और खाते के साथ-साथ सूचना और मनोरंजन की सुविधा देने वाले इस डिवाइस पर डाउनलोड किए गए सभी ऐप्लिकेशन हमेशा के लिए मिट जाएंगे.\n\nआप मिटाई गई चीज़ें वापस नहीं पा सकते."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"सब कुछ हमेशा के लिए मिटाएं"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"हमेशा के लिए मिटाया जा रहा है"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"कृपया इंतज़ार करें..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"तारीख और समय"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"तारीख, समय, समय क्षेत्र और फ़ॉर्मैट सेट करें"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"तारीख और समय अपने-आप सेट होना"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"एडमिन के तौर पर साइन-इन किया है"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"एडमिन के सभी अधिकार"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"एडमिन बनाएं"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"एडमिन बनने वाला उपयोगकर्ता, दूसरे उपयोगकर्ताओं और एडमिन के नाम मिटा सकता है और सिस्टम को फ़ैक्ट्री रीसेट कर सकता है."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"यह प्रोफ़ाइल, अन्य प्रोफ़ाइलें मिटा सकेगी, जिनमें एडमिन की प्रोफ़ाइल और सिस्टम को फ़ैक्ट्री रीसेट करना शामिल है."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"दूसरे उपयोगकर्ता को एडमिन के अधिकार देने के बाद वापस नहीं लिए जा सकते."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"हां, एडमिन बना दें"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"नए उपयोगकर्ता बनाएं"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"नई प्रोफ़ाइलें बना सकती है"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फ़ोन कॉल करें"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कार के मोबाइल डेटा से मैसेज भेजना"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"नए ऐप्लिकेशन इंस्टॉल करें"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ऐप्लिकेशन अनइंस्टॉल करें"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"उपयोगकर्ता जोड़ें"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नया उपयोगकर्ता"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नया उपयोगकर्ता जोड़ें?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं, तो उस व्यक्ति को अपनी जगह सेट करनी होती है."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"अब और उपयोगकर्ता नहीं जोड़े जा सकते"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">आप <xliff:g id="COUNT">%d</xliff:g> उपयोगकर्ता जोड़ सकते हैं.</item>
-      <item quantity="other">आप <xliff:g id="COUNT">%d</xliff:g> उपयोगकर्ता जोड़ सकते हैं.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"प्रोफ़ाइल जोड़ें"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"नई प्रोफ़ाइल"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"नई प्रोफ़ाइल जोड़नी है?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"जब आप कोई नई प्रोफ़ाइल जोड़ते हैं, तो उस व्यक्ति को अपनी जगह सेट करनी होती है."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"कोई भी प्रोफ़ाइल अन्य ऐप्लिकेशन के लिए प्रोफ़ाइलें जोड़ सकती हैं."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"और प्रोफ़ाइल नहीं जोड़ी जा सकतीं"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">आप ज़्यादा से ज़्यादा <xliff:g id="COUNT">%d</xliff:g> प्रोफ़ाइल बना सकते हैं.</item>
+      <item quantity="other">आप ज़्यादा से ज़्यादा <xliff:g id="COUNT">%d</xliff:g> प्रोफ़ाइलें बना सकते हैं.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"नया उपयोगकर्ता नहीं जोड़ पाए"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"इस उपयोगकर्ता को हटाएं?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"पूरा डेटा और सभी ऐप्लिकेशन मिटा दिए जाएंगे."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"उपयोगकर्ता को नहीं हटाया जा सका."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"कोई नई प्रोफ़ाइल नहीं बनाई जा सकी"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"क्या आप यह प्रोफ़ाइल मिटाना चाहते हैं?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"इस प्रोफ़ाइल के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"प्रोफ़ाइल नहीं मिटाई जा सकी."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"इस प्रोफ़ाइल से दूसरी प्रोफ़ाइल पर जाने या गाड़ी को फिर से स्टार्ट करने पर, यह प्रोफ़ाइल मिट जाएगी."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"खारिज करें"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"फिर से कोशिश करें"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"आखिरी उपयोगकर्ता हटाएं?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"इस कार के आखिरी उपयोगकर्ता को हटाने के बाद, आपको एडमिन के अधिकारों वाला नया उपयोगकर्ता खाता बनाना होगा."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"इस उपयोगकर्ता का पूरा डेटा, सभी सेटिंग और ऐप्लिकेशन मिटा दिए जाएंगे. आपको सिस्टम फिर से सेट अप करना होगा."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"आपको बची हुई आखिरी प्रोफ़ाइल मिटाना है?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"अगर आप इस वाहन के लिए बची हुई आखिरी प्रोफ़ाइल को मिटाएंगे, तो इससे जुड़ा पूरा डेटा, सेटिंग, और ऐप्लिकेशन मिट जाएंगे."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"रीसेट करने के बाद, आप एक नई प्रोफ़ाइल सेट अप कर सकते हैं."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"नया एडमिन चुनें"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"कम से कम एक एडमिन का होना ज़रूरी है. मौजूदा एडमिन को हटाने से पहले कोई दूसरा एडमिन चुनें."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"एडमिन चुनें"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"आप (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाम"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेट नहीं है"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"उपयोगकर्ता का नाम बदलें"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"प्रोफ़ाइल नाम में बदलाव करें"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"नाम लिखने की जगह खाली नहीं रखी जा सकती."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"डाला गया उपयोगकर्ता नाम गलत है."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"डाला गया प्रोफ़ाइल नाम गलत है."</string>
     <string name="users_list_title" msgid="770764290290240909">"उपयोगकर्ता"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"प्रोफ़ाइलें"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s को अनुमतियां दी गईं"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"मेमोरी"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"संगीत और ऑडियो"</string>
@@ -502,12 +535,12 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ऑडियो फ़ाइलें"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"गिनती की जा रही है…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ऐप्लिकेशन का आकार"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"उपयोगकर्ता डेटा"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"प्रोफ़ाइल का डेटा"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"कैश"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"कुल"</string>
-    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"स्टोरेज खाली करें"</string>
+    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"मेमोरी खाली करें"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"कैश मिटाएं"</string>
-    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"ऐप्लिकेशन डेटा मिटाना चाहते हैं?"</string>
+    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"ऐप्लिकेशन डेटा मिटाएं?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"इस ऐप्लिकेशन का पूरा डेटा हमेशा के लिए मिटा दिया जाएगा. इसमें सभी फ़ाइलें, सेटिंग, खाते, डेटाबेस वगैरह शामिल हैं."</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"ऐप्लिकेशन के लिए मेमोरी खाली नहीं की जा सकी."</string>
     <string name="storage_unmount_success" msgid="1553591517580407021">"<xliff:g id="NAME">%1$s</xliff:g> को सुरक्षित रूप से निकाला गया"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक करना रद्द करें"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"सिंक करने में फ़िलहाल समस्याएं आ रही हैं. यह जल्द ही वापस काम करने लगेगा."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"निजता"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"गाड़ी का डेटा"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"तय करें कि कौनसे ऐप्लिकेशन आपकी जगह की जानकारी ऐक्सेस कर सकते हैं"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"माइक्रोफ़ोन"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"तय करें कि माइक्रोफ़ोन का इस्तेमाल कौन-कौनसे ऐप्लिकेशन कर सकेंगे"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"गाड़ी का डेटा"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"इस गाड़ी के लिए, सेव की गई गतिविधियों और जानकारी को मैनेज करें"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"अपनी प्रोफ़ाइल मिटाएं"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"सूचना और मनोरंजन की सुविधा देने वाले डिवाइस से अपनी प्रोफ़ाइल और खाते हमेशा के लिए मिटाएं"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"आपकी प्रोफ़ाइल के लिए इस कार्रवाई की सुविधा उपलब्ध नहीं है"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षा"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रीन लॉक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"कोई नहीं"</string>
@@ -579,30 +621,32 @@
     <string name="okay" msgid="4589873324439764349">"ठीक है"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"क्या आप स्क्रीन लॉक हटाना चाहते हैं?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"स्क्रीन लॉक हटाने पर कोई भी आपका खाता इस्तेमाल कर सकता है"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"प्रोफ़ाइल लॉक"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"अपने-आप अनलॉक होने की सुविधा सेट अप करें"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"अनलॉक करने के लिए पिन डालें"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"अपना पासवर्ड डालें"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"सुरक्षा के लिए पिन सेट करें"</string>
     <string name="confirm_your_pin_header" msgid="9096581288537156102">"पिन दोबारा डालें"</string>
-    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"पिन कम से कम चार अंकों का होना चाहिए"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"पिन में कम से कम 4 अंक होने चाहिए"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"यह पिन अमान्य है, इसमें कम से कम 4 अंक होने चाहिए."</string>
-    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"पिन मेल नहीं खा रहे"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"पिन मेल नहीं खाते"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"पिन सेव करने में गडबड़ी हुई"</string>
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"डाला गया पिन गलत है"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"डाला गया पासवर्ड गलत है"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"सुरक्षा के लिए पासवर्ड सेट करें"</string>
     <string name="confirm_your_password_header" msgid="7052891840366724938">"पासवर्ड दोबारा डालें"</string>
-    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"पासवर्ड मेल नहीं खा रहे"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"पासवर्ड मेल नहीं खाते"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"हटाएं"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"अभी नहीं"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"पुष्टि करें"</string>
-    <string name="choose_lock_password_hints" msgid="3903696950202491593">"पासवर्ड में कम से कम चार वर्ण होने चाहिए"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"पासवर्ड में कम से कम 4 वर्ण होने चाहिए"</string>
     <string name="lockpassword_password_too_short" msgid="6681218025001328405">"पासवर्ड में कम से कम <xliff:g id="COUNT">%d</xliff:g> वर्ण होने चाहिए"</string>
     <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"पिन में कम से कम <xliff:g id="COUNT">%d</xliff:g> अंक होने चाहिए"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"पासवर्ड में <xliff:g id="NUMBER">%d</xliff:g> से कम वर्ण होने चाहिए"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"पिन में <xliff:g id="NUMBER">%d</xliff:g> से कम अंक होने चाहिए"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"इसमें केवल 0-9 तक के अंक होने चाहिए."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"डिवाइस एडमिन हाल ही का पिन इस्तेमाल करने की मंज़ूरी नहीं देता"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"आपके आईटी एडमिन ने आम तौर पर इस्तेमाल होने वाले पिन पर रोक लगा रखी है. दूसरा पिन बनाएं."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"आपके आईटी एडमिन ने आम तौर पर इस्तेमाल होने वाले पिन पर रोक लगा रखी है. दूसरा पिन बनाएं."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"इसमें अमान्य वर्ण नहीं डाला जा सकता."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"यह पासवर्ड अमान्य है, इसमें कम से कम 4 वर्ण होने चाहिए"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,12 +675,12 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"डिवाइस एडमिन हाल ही के पासवर्ड का इस्तेमाल करने की मंज़ूरी नहीं देता"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"पासवर्ड सेव करने में गड़बड़ी हुई"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"आपके आईटी एडमिन ने आम तौर पर इस्तेमाल होने वाले पासवर्ड पर रोक लगा रखी है. कोई दूसरा पासवर्ड बनाएं."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"आपके आईटी एडमिन ने आम तौर पर इस्तेमाल होने वाले पासवर्ड पर रोक लगा रखी है. कोई दूसरा पासवर्ड बनाएं."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकों को बढ़ते, घटते या दोहराए गए क्रम में लिखने की मंज़ूरी नहीं है."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक विकल्प"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
-    <string name="credentials_reset" msgid="873900550885788639">"क्रेडेंशियल हटाएं"</string>
-    <string name="credentials_reset_summary" msgid="6067911547500459637">"सभी प्रमाणपत्र हटाएं"</string>
+    <string name="credentials_reset" msgid="873900550885788639">"क्रेडेंशियल मिटाएं"</string>
+    <string name="credentials_reset_summary" msgid="6067911547500459637">"सभी सर्टिफ़िकेट हटाएं"</string>
     <string name="credentials_reset_hint" msgid="3459271621754137661">"सभी सामग्री हटाएं?"</string>
     <string name="credentials_erased" msgid="2515915439705550379">"क्रेडेंशियल स्टोरेज हमेशा के लिए मिटाई गई."</string>
     <string name="credentials_not_erased" msgid="6118567459076742720">"क्रेडेंशियल स्टोरेज हमेशा के लिए नहीं मिटाई जा सकती."</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter बटन"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"डेमो मोड से बाहर निकलें"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोड से बाहर निकलें"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"डेमो मोड से बाहर निकलने पर, डेमो खाता मिट जाएगा और सिस्टम का डेटा फ़ैक्ट्री रीसेट हो जाएगा. साथ ही, उपयोगकर्ता का पूरा डेटा भी मिट जाएगा."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"डेमो मोड से बाहर निकलने पर, डेमो खाता मिट जाएगा और सिस्टम का डेटा फ़ैक्ट्री रीसेट हो जाएगा. साथ ही, प्रोफ़ाइल का पूरा डेटा भी मिट जाएगा."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोड से बाहर निकलें"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"खारिज करें"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"गाड़ी चलाते समय इस सुविधा का इस्तेमाल नहीं किया जा सकता"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"गाड़ी चलाते समय किसी उपयोगकर्ता को नहीं जोड़ा जा सकता"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"गाड़ी चलाते समय कोई प्रोफ़ाइल नहीं जोड़ी जा सकती"</string>
     <string name="default_search_query" msgid="3137420627428857068">"खोजें"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant और उसकी आवाज़ की सेटिंग"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant ऐप्लिकेशन"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"स्क्रीन के टेक्स्ट का इस्तेमाल करना"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"असिस्टेंट को स्क्रीनशॉट कॉन्टेंट ऐक्सेस करने की अनुमति दें"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"स्क्रीनशॉट का इस्तेमाल करें"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"असिस्टेंट को स्क्रीन इमेज ऐक्सेस करने की अनुमति दें"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"हाल ही में भेजी गई सूचनाएं"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"सभी ऐप्लिकेशन"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"प्रोफ़ाइलें और खाते"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"अन्य प्रोफ़ाइलें मैनेज करें"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"कोई प्रोफ़ाइल जोड़ें"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"यह प्रोफ़ाइल मिटाएं"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"प्रोफ़ाइल जोड़ें"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 41964f9..63df4bd 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Zaslon"</string>
     <string name="brightness" msgid="2919605130898772866">"Jačina svjetline"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prilagodljiva svjetlina"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiziranje jačine osvjetljenja u odnosu na osvijetljenost okoline"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Prilagodba svjetline zaslona okruženju"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Noćno je svjetlo uključeno"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"zaslon, dodirni zaslon"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"zatamnjenje zaslona, dodirni zaslon, baterija"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamnjenje zaslona, dodirni zaslon, baterija"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamnjenje zaslona, noć, preljev"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Postavite upozorenje o potrošnji podataka"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Postavite ograničenje podatkovnog prometa"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Postavi"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Mreža OEM-a"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Iskorišteno: %1$d MB od %2$s do %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Pridruživanje drugoj mreži"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Postavke mreže"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Uključivanje Wi-Fija…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Isključivanje Wi-Fija…"</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje s mrežom nije uspjelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Povezivanje…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Mreža nije u dometu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Zaporka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži zaporku"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Unesite naziv mreže"</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikacija želi vašu glavnu jedinicu učiniti vidljivom drugim Bluetooth uređajima na <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi uključiti Bluetooth i vašu glavnu jedinicu učiniti vidljivom drugim uređajima na <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikacija želi uključiti Bluetooth i vašu glavnu jedinicu učiniti vidljivom drugim uređajima na <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Vidljiv kao %1$s drugim uređajima"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moji uređaji"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Prethodno povezano"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Povezano: %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Prekinuta veza: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtjev za Bluetooth uparivanje"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetoothov kôd za uparivanje"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Zadani zvuk obavijesti"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Zadani zvuk alarma"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Spremi"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvukovi upozorenja"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Melodija zvona, obavijesti, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Svjetlina"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Prilagodba zaslona slabom osvjetljenju"</string>
     <string name="units_settings" msgid="402325305096925886">"Jedinice"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Brzina"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Udaljenost"</string>
@@ -281,8 +292,8 @@
     <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacije i obavijesti"</string>
     <string name="all_applications" msgid="7798210477486822168">"Pokaži sve aplikacije"</string>
     <string name="default_applications" msgid="1558183275638697087">"Zadane aplikacije"</string>
-    <string name="app_permissions" msgid="32799922508313948">"Dopuštenja za aplikacije"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacije s dopuštenjem <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions" msgid="32799922508313948">"Dopuštenja aplikacije"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Upravljajte pristupom aplikacija svojim podacima"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
     <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Prisilno zaustaviti?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite tu aplikaciju, Android i druge aplikacije možda više neće funkcionirati pravilno."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nije instalirano za ovog korisnika"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nije instalirano za ovaj profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dopuštenja"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Obavijesti"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Pohrana i predmemorija"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nije odobreno nijedno dopuštenje"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nije zatraženo nijedno dopuštenje"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nekorištene aplikacije"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nekorištena aplikacija</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nekorištene aplikacije</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nekorištenih aplikacija</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ukloni dopuštenja i oslobodi prostor"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s u internoj pohrani"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Potrošnja podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Potrošnja podatkovnog prometa za aplikacije"</string>
@@ -337,9 +355,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pitaj svaki put"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne otvaraj u ovoj aplikaciji"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podržane veze"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacije"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedavno otvoreno"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Pregled svih aplikacija (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Upravitelj dopuštenja"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Upravljajte pristupom aplikacija svojim podacima"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Za Asistenta i druge aplikacije"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Za sustav i druge postavke"</string>
     <string name="special_access" msgid="5730278220917123811">"Poseban pristup za aplikacije"</string>
     <string name="show_system" msgid="4401355756969485287">"Prikaži sustav"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sakrij sustav"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sakrij aplikacije sustava"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Izmjena postavki sustava"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"To dopuštenje omogućuje aplikaciji izmjenu postavki sustava."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Pristup obavijestima"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dopuštenja na razini aplikacije"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Upotreba lokacije"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sustav"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sustava"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Napredno"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informacije, pravne informacije, vraćanje na zadano i druge postavke"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzija Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Razina Androidove sigurnosne zakrpe"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model i hardver"</string>
@@ -386,7 +417,7 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorska prava"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Uvjeti i odredbe"</string>
-    <string name="webview_license_title" msgid="6442372337052056463">"Licence sustava WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licence web-prikaza sustava"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Pozadine"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Davatelji satelitskih slika:\n©2014. CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Time će se poništiti sve postavke za sljedeće:\n\n"<li>"onemogućene aplikacije"</li>\n<li>"onemogućene obavijesti aplikacija"</li>\n<li>"zadane aplikacije za radnje"</li>\n<li>"ograničenja pozadinskih podataka za aplikacije"</li>\n<li>"sva ograničenja dozvola."</li>\n\n"Nećete izgubiti podatke nijedne aplikacije."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Poništi aplikacije"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Postavke aplikacija vraćene su na zadano"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Izbriši sve podatke (vrati na tvorničke)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Time će se izbrisati svi podaci s glavne jedinice vozila, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"podatke i postavke sustava i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutačno ste prijavljeni na sljedeće račune:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Na ovom vozilu postoje i drugi korisnici."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Vrati vozilo na zadano"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vratiti na zadano?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite li izbrisati sve osobne podatke i preuzete aplikacije? Radnju nije moguće poništiti!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Pričekajte..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Izbriši sve podatke (vrati na tvorničke)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Brisanje svih podataka i profila iz sustava za informiranje i zabavu"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Izbrisat će se svi podaci iz sustava za informiranje i zabavu u vašem vozilu, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"podatke i postavke sustava i aplikacija"</li>\n<li>"preuzete aplikacije."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Trenutačno ste prijavljeni na sljedeće račune:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Na ovom vozilu postoje i drugi profili."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Izbriši sve podatke"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Izbrisati sve podatke?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Izbrisat će se svi podaci vašeg osobnog profila, računi i aplikacije preuzete u ovaj sustav za informiranje i zabavu.\n\nTa se radnja ne može poništiti."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Izbriši sve"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Brisanje"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Pričekajte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vrijeme"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Postavljanje datuma, vremena, vremenske zone i formata"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatski datum i vrijeme"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sva administratorska dopuštenja"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Dodijeli status administratora"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći brisati korisnike, uključujući druge administratore, i vratiti sustav na tvorničke postavke."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil će moći brisati profile, uključujući druge administratore, i vratiti sustav na tvorničke postavke."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ta se radnja ne može poništiti."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, dodijeli status administratora"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Izrada novih korisnika"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Izrada novih profila"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Upućivanje telefonskih poziva"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Poruke putem mobilnih podataka auta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instaliranje novih aplikacija"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstaliranje aplikacija"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodavanje korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za ostale korisnike."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dosegnuto je ograničenje korisnika"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="few">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
-      <item quantity="other">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Dodavanje profila"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Novi profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Dodati novi profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kad dodate novi profil, ta osoba treba postaviti vlastiti prostor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Svaki profil može ažurirati aplikacije za sve ostale profile."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Ograničenje broja profila dosegnuto"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Možete izraditi do <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="few">Možete izraditi do <xliff:g id="COUNT">%d</xliff:g> profila.</item>
+      <item quantity="other">Možete izraditi do <xliff:g id="COUNT">%d</xliff:g> profila.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Izrada novog korisnika nije uspjela"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbrisati ovog korisnika?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Izbrisat će se sve aplikacije i podaci."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspjelo."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Izrada novog profila nije uspjela"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Želite li izbrisati profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Izbrisat će se sve aplikacije i podaci za taj profil"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Brisanje profila nije uspjelo."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ovaj će se profil izbrisati kad prijeđete na drugi profil ili ponovo pokrenete vozilo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Pokušaj opet"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Brisati zadnjeg korisnika?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nakon brisanja jedinog preostalog korisnika ovog automobila, izradit će se novi admin. korisnik."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Izbrisat će se svi podaci, postavke i aplikacije povezane s tim korisnikom. Morat ćete ponovo postaviti sustav."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Izbrisati posljednji preostali profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ako izbrišete jedini preostali profil za ovo vozilo, izbrisat će se svi podaci, postavke i aplikacije povezani s tim profilom."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Nakon vraćanja na zadano možete postaviti novi profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Odaberite novog administratora"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Potreban vam je barem jedan administrator. Da biste izbrisali ovoga, najprije odaberite zamjenu."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije postavljen"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Uređivanje korisničkog imena"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Uređivanje naziva profila"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Polje ne može biti prazno."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Uneseno korisničko ime nije važeće."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Uneseni naziv profila nije važeći."</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Dopušteno korisniku %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Pohrana"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Glazba i zvuk"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audiodatoteke"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Izračun u tijeku…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Veličina aplikacije"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Podaci korisnika"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Podaci profila"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Predmemorija"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Ukupno"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Isprazni pohranu"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinkronizaciju"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizacija trenutačno ima problema. Uskoro će nastaviti s radom."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatnost"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Podaci vozila"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Upravljanje pristupom aplikacija lokaciji"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Upravljanje pristupa aplikacija mikrofonu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Podaci vozila"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Upravljajte aktivnostima i informacijama spremljenim na ovom vozilu"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Izbrišite svoj profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Brisanje profila i računa iz sustava za informiranje i zabavu"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ta radnja nije dostupna za vaš profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sigurnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje zaslona"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ništa"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"U redu"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Ukloniti zaključavanje zaslona?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Druge osobe moći će pristupiti vašem računu"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zaključavanje profila"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Postavljanje automatskog otključavanja"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Unesite PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Unesite zaporku"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Radi sigurnosti postavite PIN"</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Mora imati manje od ovoliko znamenki: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Smije sadržavati samo znamenke od 0 do 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administrator uređaja ne dopušta upotrebu nedavnog PIN-a"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Vaš je IT administrator blokirao uobičajene PIN-ove. Pokušajte s nekom drugim PIN-om."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Vaš je IT administrator blokirao uobičajene PIN-ove. Pokušajte s nekom drugim PIN-om."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Unos ne smije sadržavati nevažeće znakove."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Zaporka nije važeća, mora imati najmanje četiri znaka."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administrator uređaja ne dopušta upotrebu nedavne zaporke"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Pogreška pri spremanju zaporke"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vaš je IT administrator blokirao uobičajene zaporke. Pokušajte s nekom drugom zaporkom."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Vaš je IT administrator blokirao uobičajene zaporke. Pokušajte s nekom drugom zaporkom."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Uzastopno rastući ili padajući slijed brojeva ili ponavljanje brojeva nisu dopušteni."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja zaslona"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tipka Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Napustite demo-način"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Napustite demo-način"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Time će se izbrisati demo-račun, a sustav će se vratiti na tvorničko stanje. Svi će se podaci korisnika izgubiti."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Time će se izbrisati demo-račun, a sustav će se vratiti na tvorničko stanje. Svi će se podaci profila izgubiti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Napustite demo-način"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Značajka nije dostupna tijekom vožnje"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Ne možete dodati korisnika tijekom vožnje"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Ne možete dodati profil tijekom vožnje"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Pretražite"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistent i glas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacija asistenta"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Koristi tekst sa zaslona"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Dopustite asistentu da pristupa sadržaju zaslona"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Koristi snimku zaslona"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Dopustite asistentu da pristupa slici zaslona"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedavno poslano"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Sve aplikacije"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili i računi"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Upravljajte drugim profilima"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Dodaj profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Izbriši profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Dodavanje profila"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 1f426f7..47f156f 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Kijelző"</string>
     <string name="brightness" msgid="2919605130898772866">"Fényerőszint"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Alkalmazkodó fényerő"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Fényerőszint optimalizálása az adott fényviszonyok alapján"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Képernyő hozzáigazítása a környezethez"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Éjszakai fény bekapcsolva"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"képernyő, érintőképernyő"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"képernyő halványítása, érintőképernyő, akkumulátor"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"képernyő halványítása, érintőképernyő, akkumulátor"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"képernyő halványítása, éjszaka, árnyalás"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Éjszakai mód"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Hálózat és internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilhálózat"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Adathasználati figyelmeztetés beállítása"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Adathasználati korlát beállítása"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Beállítás"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-hálózat"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Adathasználat: %1$d MB (%2$s – %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Csatlakozás másik hálózathoz"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Hálózati beállítások"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"A Wi-Fi bekapcsolása…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"A Wi-Fi kikapcsolása…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nem sikerült hálózathoz csatlakozni."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Hálózat hozzáadása"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Csatlakozás"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Csatlakozás…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"A hálózat nincs hatókörön belül"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Jelszó"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Jelszó megjelenítése"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Adja meg a hálózat nevét"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Az egyik alkalmazás láthatóvá akarja tenni az Ön fejegységét más Bluetooth-eszközök számára <xliff:g id="TIMEOUT">%1$d</xliff:g> másodpercig."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás szeretné bekapcsolni a Bluetooth funkciót, és láthatóvá akarja tenni az Ön fejegységét más eszközök számára <xliff:g id="TIMEOUT">%2$d</xliff:g> másodpercig."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Az egyik alkalmazás szeretné bekapcsolni a Bluetooth funkciót, és láthatóvá akarja tenni az Ön fejegységét más eszközök számára <xliff:g id="TIMEOUT">%1$d</xliff:g> másodpercig."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"A következő névvel jelenik meg a többi eszköz számára: %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Saját eszközök"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Korábban csatlakoztatva"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s csatlakoztatva"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s leválasztva"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth párosítási kérelem"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párosítás és csatlakozás"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-párosítókód"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Alapértelmezett értesítőhang"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alapértelmezett ébresztőhang"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Mentés"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Figyelmeztető hangok"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Csengőhang, értesítések, ébresztés"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Fényerő"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Fényerő korrigálása rossz fényviszonyoknál"</string>
     <string name="units_settings" msgid="402325305096925886">"Egységek"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Sebesség"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Távolság"</string>
@@ -280,8 +291,8 @@
     <string name="all_applications" msgid="7798210477486822168">"Összes alkalmazás mutatása"</string>
     <string name="default_applications" msgid="1558183275638697087">"Alapértelmezett alkalmazások"</string>
     <string name="app_permissions" msgid="32799922508313948">"Alkalmazásengedélyek"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"A következő engedélyeket használó alkalmazások: <xliff:g id="APPS">%1$s</xliff:g>"</string>
-    <string name="applications_settings" msgid="794261395191035632">"Alkalmazásinfó"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Az adataihoz hozzáférő alkalmazások kezelése"</string>
+    <string name="applications_settings" msgid="794261395191035632">"Alkalmazásinformáció"</string>
     <string name="force_stop" msgid="2153183697014720520">"Kényszerített leállítás"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Kényszeríti a leállítást?"</string>
     <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ha leállásra kényszeríti az alkalmazást, lehetséges, hogy hibásan fog működni."</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Eltávolítás"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ha letiltja ezt az alkalmazást, akkor előfordulhat, hogy az Android- és más alkalmazások nem működnek majd megfelelően."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Alkalmazás letiltása"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nincs telepítve ennél a felhasználónál"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nincs telepítve ehhez a profilhoz"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Engedélyek"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Értesítések"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Tárhely és gyorsítótár"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzió: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nincsenek megadott engedélyek"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nincsenek kért engedélyek"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nem használt alkalmazások"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nem használt alkalmazás</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nem használt alkalmazás</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Engedélytörlés és tárhely-felszabadítás"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s a belső tárhelyen"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Adathasználat"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Alkalmazás adathasználata"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Mindig kérdezzen rá"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne nyíljon meg ebben az alkalmazásban"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Támogatott linkek"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Alkalmazások"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Utoljára megnyitottak"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Az összes (%1$d) alkalmazás megtekintése"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Engedélykezelő"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Az adataihoz hozzáférő alkalmazások kezelése"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Segéd és egyebek"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"A rendszer- és egyéb beállításokhoz"</string>
     <string name="special_access" msgid="5730278220917123811">"Különleges alkalmazás-hozzáférés"</string>
     <string name="show_system" msgid="4401355756969485287">"Rendszer megjelenítése"</string>
     <string name="hide_system" msgid="8845453295584638040">"Rendszerfolyamatok elrejtése"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Rendszeralkalmazások elrejtése"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Rendszerbeállítások módosítása"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Ez az engedély lehetővé teszi az alkalmazás számára a rendszerbeállítások módosítását."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Hozzáférés az értesítésekhez"</string>
@@ -345,7 +370,7 @@
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ha kikapcsolja az értesítésekhez való hozzáférést a(z) <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> számára, előfordulhat, hogy a „Ne zavarjanak” módhoz való hozzáférés is kikapcsolódik."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Kikapcsolás"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Mégse"</string>
-    <string name="premium_sms_access_title" msgid="1409118461646148686">"Emelt díjas SMS küldése"</string>
+    <string name="premium_sms_access_title" msgid="1409118461646148686">"Prémium SMS-hozzáférés"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"A Prémium SMS-ek használata pénzbe kerülhet Önnek, és a szolgáltatója által kiállított számlák végösszegét növeli. Ha engedélyt ad valamelyik alkalmazásnak, akkor azzal lehetősége lesz prémium SMS-eket küldeni."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"Használati hozzáférés"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"A használati hozzáférés lehetővé teszi az alkalmazás számára a következők nyomon követését: Ön milyen más alkalmazásokat használ, milyen gyakran használja őket, valamint szolgáltatóit, nyelvi beállításit és egyéb részleteket."</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nincsenek friss helylekérdezések"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Alkalmazásszintű engedélyek"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Helyszolgáltatások"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Helyadatok használata"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Rendszer"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Rendszerfrissítések"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Haladó"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Névjegy, jogi információk, visszaállítás és egyebek"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-verzió"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidos biztonsági hibajavító csomag"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modell és hardver"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Ez visszaállítja a következőkre vonatkozó összes beállítást:\n\n"<li>"Letiltott alkalmazások"</li>\n<li>"Letiltott alkalmazásértesítések"</li>\n<li>"Alapértelmezett alkalmazások adott műveletekhez"</li>\n<li>"Az alkalmazások háttéradataira vonatkozó korlátozások"</li>\n<li>"Minden engedélykorlátozás"</li>\n\n"Az alkalmazásadatok nem vesznek el."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Alkalmazások visszaállítása"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Az alkalmazásbeállítások vissza lettek állítva"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Minden adat törlése (visszaállítás)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Ez minden adatot töröl a jármű fejegységéből, beleértve a következőket:\n\n"<li>"Az Ön Google-fiókja"</li>\n<li>"A rendszer- és alkalmazásadatok, illetve beállítások"</li>\n<li>"A letöltött alkalmazások"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Jelenleg a következő fiókokba van bejelentkezve:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Más felhasználók is vannak a járművön."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Jármű visszaállítása"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Visszaállítja?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Törli az összes személyes adatot és letöltött alkalmazást? A műveletet nem lehet visszavonni."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Minden törlése"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Törlés"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Kérjük, várjon…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Összes adat törlése"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Minden adat és profil törlése az infotainmentrendszerről"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Ez minden adatot töröl a jármű infotainmentrendszeréből, beleértve a következőket:\n\n"<li>"Az Ön Google-fiókja"</li>\n<li>"A rendszer- és alkalmazásadatok, illetve -beállítások"</li>\n<li>"A letöltött alkalmazások"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Jelenleg a következő fiókokba van bejelentkezve:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Más profilok is vannak a járművön."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Minden adat törlése"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Törli az összes adatot?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ez törli az ezen az infotainmentrendszeren található összes személyes profilhoz tartozó adatokat, fiókokat és letöltött alkalmazásokat.\n\nEz a művelet nem vonható vissza."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Minden törlése"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Törlés"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Kérjük, várjon…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dátum és idő"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Dátum, idő, időzóna és formátumok beállítása"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatikus dátum és idő"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Rendszergazdaként bejelentkezve"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Összes adminisztrátori engedély"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Rendszergazdai jogosultság megadása"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"A felhasználó képes lesz más felhasználókat törölni, beleértve a többi rendszergazdát is, és vissza tudja majd állítani a rendszer gyári beállításait."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"A profil képes lesz más profilokat törölni, beleértve a többi rendszergazdát is, és vissza tudja majd állítani a rendszer gyári beállításait."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"A művelet nem vonható vissza."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Igen, tegye rendszergazdává"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Új felhasználók létrehozása"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Új profilok létrehozása"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonhívások"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS-ezés az autó mobiladatából"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Új alkalmazások telepítése"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Alkalmazások eltávolítása"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Felhasználó felvétele"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Új felhasználó"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Hozzáad új felhasználót?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Maximális felhasználószám elérve"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Legfeljebb <xliff:g id="COUNT">%d</xliff:g> felhasználót lehet létrehozni.</item>
-      <item quantity="one">Csak egy felhasználót lehet létrehozni.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profil hozzáadása"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Új profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Szeretne új profilt hozzáadni?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Új profil hozzáadásakor a profil tulajdonosának be kell állítania saját felületét."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Bármely profil frissítheti a többi profil alkalmazásait."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Elérte a profilok maximális számát"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Legfeljebb <xliff:g id="COUNT">%d</xliff:g> profilt lehet létrehozni.</item>
+      <item quantity="one">Legfeljebb egy profilt lehet létrehozni.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Az új felhasználó létrehozása sikertelen"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Törli a felhasználót?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Az összes alkalmazás és adat törlődik."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Nem sikerült törölni a felhasználót."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nem sikerült az új profil létrehozása"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Törli ezt a profilt?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"A profilhoz tartozó összes alkalmazás és adat törlődik"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Nem sikerült a profil törlése"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ez a profil a következő profilváltáskor vagy a jármű újraindításakor lesz törölve."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Bezárás"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Újra"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Törli az utolsót?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Az autó utolsó felhasználójának törlése után új adminisztrátort hoz létre a rendszer."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"A felhasználóhoz társított minden adat, beállítás és alkalmazás törlődik. Újra be kell majd állítania a rendszert."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Törli az egyetlen megmaradt profilt?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ha törli az ehhez az eszközhöz tartozó egyetlen megmaradt profilt, az ehhez a profilhoz tartozó összes adat, beállítás és alkalmazás is törlödik."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"A visszaállítás után új profilt állíthat be."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Új adminisztrátor kiválasztása"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Legalább egy adminisztrátorra szükség van. Ha törölni szeretné a jelenlegit, előbb válassza ki azt, akivel helyettesítené."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Adminisztrátor választása"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ön (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Név"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nincs beállítva"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Felhasználónév szerkesztése"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profilnév szerkesztése"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"A mező nem lehet üres."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"A megadott felhasználónév érvénytelen."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"A megadott profilnév érvénytelen."</string>
     <string name="users_list_title" msgid="770764290290240909">"Felhasználók"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profilok"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s megkapta az engedélyeket"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Tárhely"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Zene és hang"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Hangfájlok"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Számítás…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Alkalmazás mérete"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Felhasználói adatok"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profiladatok"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Gyorsítótár"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Összesen"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Tárhely ürítése"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Szinkronizálás megszakítása"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"A szinkronizálással problémák vannak. Hamarosan helyreáll."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Adatvédelem"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Járműadatok"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"A helyadatokhoz hozzáférő alkalmazások kezelése"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"A mikrofonhoz hozzáférő alkalmazások kezelése"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Járműadatok"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"A járművön mentett tevékenységek és információk kezelése"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Profil törlése"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Profil és fiókok törlése az infotainmentrendszerről"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ez a művelet nem végezhető el az Ön profiljával"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Biztonság"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Képernyőzár"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Egyik sem"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Rendben"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Eltávolítja a képernyőzárat?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Ezzel bárki hozzáférhet majd az Ön fiókjához"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profilzárolás"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Automatikus feloldás beállítása"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Adja meg PIN-kódját"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Adja meg jelszavát"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"A biztonság miatt állítson be PIN-kódot"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> számjegynél rövidebbnek kell lennie"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Csak számokat tartalmazhat, 0-tól 9-ig."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Az eszközrendszergazda nem engedélyezi a legutóbbi PIN-kódok használatát"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Rendszergazdája letiltotta a gyakran használt PIN-kódokat. Próbálkozzon másik PIN-kóddal."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Rendszergazdája letiltotta a gyakran használt PIN-kódokat. Próbálkozzon másik PIN-kóddal."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Nem tartalmazhat érvénytelen karaktert."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Érvénytelen jelszó, legalább 4 karakterből kell állnia."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Az eszközrendszergazda nem engedélyezi a legutóbbi jelszavak használatát"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Hiba történt a jelszó mentése során"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Rendszergazdája letiltotta a gyakran használt jelszavakat. Próbálkozzon másik jelszóval."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Rendszergazdája letiltotta a gyakran használt jelszavakat. Próbálkozzon másik jelszóval."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Növekvő, csökkenő vagy ismétlődő számsor megadása nem engedélyezett."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"A képernyőzár beállításai"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> nappal ezelőtt"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter billentyű"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Kilépés a demóból"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Kilépés a demó módból"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ez törli a demófiókot, és visszaállítja a rendszer gyári adatait. Az összes felhasználói adat elveszik."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ez törli a demófiókot, és visszaállítja a rendszer gyári adatait. Az összes profiladat elveszik."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Kilépés a demóból"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ELVETÉS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Vezetés közben nem áll rendelkezésre a funkció"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Vezetés közben nem lehet hozzáadni felhasználót"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Vezetés közben nem lehet profilt hozzáadni"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Keresés"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Segéd és hang"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Segédalkalmazás"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Képernyő szövegének használata"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"A képernyő tartalmához való hozzáférés engedélyezése a segédalkalmazás számára"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Képernyőkép használata"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"A képernyőhöz való hozzáférés engedélyezése a segédalkalmazás számára"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nemrég küldött"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Összes alkalmazás"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profilok és fiókok"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Más profilok kezelése"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Profil hozzáadása"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"A profil törlése"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profil hozzáadása"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 9079d51..081e81d 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Էկրան"</string>
     <string name="brightness" msgid="2919605130898772866">"Պայծառության մակարդակ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Հարմարվող պայծառություն"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Փոխել պայծառությունն ըստ լուսավորվածության մակարդակի"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Էկրանի պայծառությունը հարմարեցնել միջավայրին"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Գիշերային ռեժիմը միացված է"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"էկրան, հպէկրան"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"խամրեցված էկրան, հպէկրան, մարտկոց"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"խամրեցված էկրան, հպէկրան, մարտկոց"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"խամրեցված էկրան, գիշեր, երանգ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Գիշերային ռեժիմ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Ցանց և ինտերնետ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Բջջային ցանց"</string>
@@ -71,7 +67,7 @@
     <string name="app_data_usage" msgid="3878609885080232877">"Հավելվածի օգտագործած թրաֆիկը"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"սահմանափակ"</string>
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Վիճակագրության զրոյացում"</string>
-    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Ամսվա օրը՝"</string>
+    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Ամսվա օրը`"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Պահել"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Զգուշացումներ և սահմանաչափ"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"Վիճակագրության ժամանակահատվածը"</string>
@@ -84,15 +80,21 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Նախազգուշացման կարգավորում"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Թրաֆիկի օգտագործման սահմանաչափը"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Պահել"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ցանց"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Օգտագործվել է %1$d ՄԲ (%2$s – %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Միանալ այլ ցանցի"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Ցանցի կարգավորումներ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi-ը միանում է…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi-ն անջատվում է…"</string>
     <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi-ի ցանկի բեռնում"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-ն անջատված է"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-ն անջատած է"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Չհաջողվեց հեռացնել ցանցը"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Չհաջողվեց միանալ ցանցին"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ավելացնել ցանց"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Միանալ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Միացում…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Ցանցն անհասանելի է"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Գաղտնաբառ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Ցուցադրել գաղտնաբառը"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Մուտքագրեք ցանցի անունը"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Հավելվածներից մեկն ուզում է գլխի հարմարանքն այլ Bluetooth սարքերի համար տեսանելի դարձնել <xliff:g id="TIMEOUT">%1$d</xliff:g> վայրկյանով:"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն ուզում է միացնել Bluetooth-ը և տեսանելի դարձնել գլխի հարմարանքը այլ սարքերի համար <xliff:g id="TIMEOUT">%2$d</xliff:g> վայրկյանով:"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Հավելվածներից մեկն ուզում է միացնել Bluetooth-ը և տեսանելի դարձնել գլխի հարմարանքը այլ սարքերի համար <xliff:g id="TIMEOUT">%1$d</xliff:g> վայրկյանով:"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Այլ սարքերին տեսանելի է որպես %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Իմ սարքերը"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Նախկինում միացված սարքեր"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s սարքը միացված է"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s սարքն անջատված է"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-ով զուգակցման հարցում"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Զուգակցել և միանալ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-ով զուգակցման կոդ"</string>
@@ -205,7 +212,7 @@
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Հպեք` <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ զուգակցելու համար:"</string>
     <string name="bluetooth_device_picker" msgid="673238198452345475">"Ընտրեք Bluetooth սարք"</string>
     <string name="language_settings" msgid="2079258598337245546">"Լեզուներ"</string>
-    <string name="languages_and_input_settings" msgid="3672322610529408248">"Լեզուներ և ներածում"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Լեզուներ և մուտքագրում"</string>
     <string name="language_picker_list_suggested_header" msgid="7593893806003415948">"Առաջարկվող"</string>
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Բոլոր լեզուները"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Ստեղնաշար"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Ծանուցման կանխադրված ազդանշանը"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Զարթուցիչի կանխադրված ազդանշանը"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Պահել"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Ծանուցումների ձայներ"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Զանգեր, ծանուցումներ, զարթուցիչ"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Պայծառություն"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Էկրանի պայծառությունը հարմարեցնել թույլ լուսավորության համար"</string>
     <string name="units_settings" msgid="402325305096925886">"Միավորներ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Արագություն"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Հեռավորություն"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Ցուցադրել բոլոր հավելվածները"</string>
     <string name="default_applications" msgid="1558183275638697087">"Կանխադրված հավելվածներ"</string>
     <string name="app_permissions" msgid="32799922508313948">"Հավելվածների թույլտվություններ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> օգտագործող հավելվածները"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Կառավարել ձեր տվյալների հասանելիությունը հավելվածների համար"</string>
     <string name="applications_settings" msgid="794261395191035632">"Հավելվածի մասին"</string>
     <string name="force_stop" msgid="2153183697014720520">"Կանգնեցնել"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Կանգնեցնե՞լ"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Ապատեղադրել"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Եթե անջատեք այս հավելվածը, Android-ը և այլ հավելվածներ հնարավոր է՝ սխալներով աշխատեն:"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Անջատել հավելվածը"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Տեղադրված չէ այս օգտատիրոջ համար"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Այս պրոֆիլի համար տեղադրված չէ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Թույլտվություններ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Ծանուցումներ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Հիշողություն և քեշ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Տարբերակ՝ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Թույլտվություններ չեն տրվել"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Թույլտվությունների հարցում չի արվել"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Չօգտագործվող հավելվածներ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> չօգտագործվող հավելված</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> չօգտագործվող հավելված</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Հեռացնել թույլտվությունները և տարածք ազատել"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s տարածք ներքին հիշողությունում"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Թրաֆիկի օգտագործում"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Հավելվածի թրաֆիկ"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ամեն անգամ հարցնել"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Չբացել այս հավելվածով"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Աջակցվող հղումներ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Հավելվածներ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Վերջին օգտագործված հավելվածները"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Դիտել բոլոր %1$d հավելվածները"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Թույլտվությունների կառավարիչ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Կառավարել ձեր տվյալների հասանելիությունը հավելվածների համար"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Օգնականի համար և ավելին"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Համակարգի և այլ կարգավորումների համար"</string>
     <string name="special_access" msgid="5730278220917123811">"Հատուկ հասանելիություն հավելվածների համար"</string>
     <string name="show_system" msgid="4401355756969485287">"Ցույց տալ համակ. գործընթացները"</string>
     <string name="hide_system" msgid="8845453295584638040">"Թաքցնել համակ. գործընթացները"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Թաքցնել համակարգային հավելվածները"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Համակ. կարգավորումների փոփոխում"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Այս թույլտվությունը հնարավորություն է տալիս հավելվածներին փոփոխել համակարգի կարգավորումները:"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Ծանուցումների հասանելիություն"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Վերջերս տեղորոշման տվյալների հարցումներ չեն արվել"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Հավելվածների թույլտվություններ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Տեղորոշման ծառայություններ"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Օգտագործել տեղորոշումը"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Համակարգ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Համակարգի թարմացումներ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Լրացուցիչ կարգավորումներ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Մանրամասներ, իրավական տեղեկություններ, վերակայում և ավելին"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-ի տարբերակը"</string>
     <string name="security_patch" msgid="4794276590178386903">"Անվտանգության համակարգի վերջին թարմացումը"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Մոդել և սարքակազմ"</string>
@@ -383,14 +413,14 @@
     <string name="copyright_title" msgid="4220237202917417876">"Հեղինակային իրավունք"</string>
     <string name="license_title" msgid="936705938435249965">"Արտոնագիր"</string>
     <string name="terms_title" msgid="5201471373602628765">"Օգտագործման պայմաններ"</string>
-    <string name="webview_license_title" msgid="6442372337052056463">"Համակարգի WebView լիցենզիաներ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Համակարգի WebView արտոնագրեր"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Պաստառներ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Արբանյակային լուսանկարներ՝\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"Մոդել"</string>
     <string name="status_serial_number" msgid="9158889113131907656">"Սերիական համարը"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"Սարքակազմի տարբերակը"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
-    <string name="settings_license_activity_title" msgid="8499293744313077709">"Այլ լիցենզիաներ"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"Այլ արտոնագրեր"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Չհաջողվեց բեռնել արտոնագրերը:"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Բեռնում…"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Հետևյալ կարգավորումները կզրոյանան՝\n\n"<li>"անջատված հավելվածները,"</li>\n<li>"հավելվածների անջատված ծանուցումները,"</li>\n<li>"կանխադրված հավելվածները,"</li>\n<li>"ֆոնային ռեժիմում տվյալների փոխանցման սահմանափակումները,"</li>\n<li>"թույլտվությունների բոլոր սահմանափակումները։"</li>\n\n"Հավելվածների տվյալները կպահպանվեն։"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Զրոյացնել կարգավորումները"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Հավելվածների կարգավորումները զրոյացվեցին"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Ջնջել բոլոր տվյալները (գործ. վերակայում)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Մեքենայի գլխավոր վահանակից կջնջվեն բոլոր տվյալները, այդ թվում՝\n\n"<li>"Ձեր Google հաշիվը"</li>\n<li>"Համակարգի և հավելվածների տվյալներն ու կարգավորումները"</li>\n<li>"Ներբեռնված հավելվածները"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Դուք մտել եք հետևյալ հաշիվներ՝"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Այս մեքենայում այլ օգտատերեր կան:"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Զրոյացնել կարգավորումները"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Զրոյացնե՞լ"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ջնջե՞լ բոլոր անձնական տեղեկությունները և ներբեռնված հավելվածները: Դուք չեք կարողանա հետարկել այս գործողությունը:"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ջնջել ամեն ինչ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ջնջում"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Խնդրում ենք սպասել..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Ջնջել բոլոր տվյալները (գործ. վերակայում)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ջնջել բոլոր տվյալներն ու պրոֆիլները տեղեկատվաժամանցային համակարգից"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Մեքենայի տեղեկատվաժամանցային համակարգից կջնջվեն բոլոր տվյալները, այդ թվում՝\n\n"<li>"Ձեր Google հաշիվը"</li>\n<li>"Համակարգի և հավելվածների տվյալներն ու կարգավորումները"</li>\n<li>"Ներբեռնված հավելվածները"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Դուք մտել եք հետևյալ հաշիվներ՝"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Այս մեքենայում այլ պրոֆիլներ էլ կան։"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Ջնջել բոլոր տվյալները"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Ջնջե՞լ բոլոր տվյալները"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Այս տեղեկատվաժամանցային համակարգում ձեր անձնական պրոֆիլի բոլոր տվյալները, հաշիվները և ներբեռնված հավելվածները կջնջվեն։\n\nԱյս գործողությունը չեք կարող հետարկել։"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Ջնջել ամեն ինչ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Ջնջում"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Սպասեք…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ամսաթիվ և ժամ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Սահմանել ամսաթիվը, ժամը, ժամային գոտին և ձևաչափերը"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Ցանցի ամսաթիվն ու ժամը"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Դուք մտել եք որպես ադմինիստրատոր"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Ադմինիստրատորի բոլոր թույլտվությունները"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Դարձնել ադմինիստրատոր"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Օգտատերը կկարողանա ջնջել այլ օգտատերերի և ադմինիստրատորների, ինչպես նաև վերակայել համակարգի գործարանային կարգավորումները:"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Պրոֆիլը կկարողանա հեռացնել մյուս պրոֆիլներն ու ադմինիստրատորներին, ինչպես նաև վերակայել համակարգի գործարանային կարգավորումները։"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Այս գործողությունը hնարավոր չէ հետարկել:"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Այո, դարձնել ադմինիստրատոր"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Ստեղծել նոր օգտատերեր"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Ստեղծել նոր պրոֆիլներ"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Զանգել"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS-ներ մեքենայի ինտերնետի միջոցով"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Տեղադրել նոր հավելվածներ"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ապատեղադրել հավելվածներ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ավելացնել օգտատեր"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Նոր օգտատեր"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ավելացնե՞լ նոր օգտատեր"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Երբ դուք նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ցանկացած օգտատեր կարող է թարմացնել հավելվածները բոլոր մյուս հաշիվների համար:"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Սահմանաչափը սպառված է"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Դուք կարող եք ստեղծել մինչև <xliff:g id="COUNT">%d</xliff:g> օգտատեր:</item>
-      <item quantity="other">Դուք կարող եք ստեղծել մինչև <xliff:g id="COUNT">%d</xliff:g> օգտատեր:</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Ավելացնել պրոֆիլ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Նոր պրոֆիլ"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Ավելացնե՞լ նոր պրոֆիլ"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Երբ դուք նոր պրոֆիլ եք ավելացնում, պրոֆիլի սեփականատերը պետք է կարգավորի իր հաշիվը։"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Ցանկացած պրոֆիլ կարող է թարմացնել հավելվածները մյուս բոլոր պրոֆիլների համար։"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Պրոֆիլների սահմանաչափը լրացել է"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Դուք կարող եք ստեղծել միայն <xliff:g id="COUNT">%d</xliff:g> պրոֆիլ։</item>
+      <item quantity="other">Դուք կարող եք ստեղծել միայն <xliff:g id="COUNT">%d</xliff:g> պրոֆիլ։</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Չհաջողվեց ստեղծել նոր օգտատեր"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Հեռացնե՞լ պրոֆիլը"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Չհաջողվեց հեռացնել օգտատիրոջը"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Չհաջողվեց ստեղծել նոր պրոֆիլ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Ջնջե՞լ այս պրոֆիլը"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Այս պրոֆիլի հետ կապված բոլոր հավելվածներն ու տվյալները կջնջվեն"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Չհաջողվեց ջնջել պրոֆիլը։"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Այս պրոֆիլը կջնջվի, երբ դուք անցնեք այլ պրոֆիլ կամ վերագործարկեք ավտոմեքենան։"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Փակել"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Նորից փորձել"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Հեռացնե՞լ վերջին օգտատիրոջը"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Համակարգում վերջին օգտատիրոջը հեռացնելուց հետո ձեզ կառաջարկվի ընտրել ադմինիստրատորի նոր պրոֆիլ։"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Բոլոր տվյալները, կարգավորումներն ու հավելվածները, որոնք կապված են այս օգտատիրոջ հետ, կջնջվեն։ Հարկավոր կլինի նորից կարգավորել համակարգը։"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Ջնջե՞լ միակ պրոֆիլը"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Եթե ջնջեք այս մեքենայի համար հասանելի միակ պրոֆիլը, դրա հետ կապված բոլոր տվյալները, կարգավորումները և հավելվածները կջնջվեն։"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Վերակայելուց հետո կարող եք նոր պրոֆիլ կարգավորել։"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Ընտրեք նոր ադմինիստրատոր"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Հարկավոր է ընտրել առնվազն մեկ ադմինիստրատոր։ Այս ադմինիստրատորին հեռացնելուց առաջ ընտրեք նրան փոխարինողին։"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Ընտրել ադմինիստրատոր"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Դուք (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Անուն"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Կարգավորված չէ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Օգտատիրոջ անվան փոփոխում"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Փոխել պրոֆիլի անունը"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Դաշտը չի կարող դատարկ լինել:"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Մուտքագրված օգտանունն անվավեր է։"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Մուտքագրված պրոֆիլի անունն անվավեր է"</string>
     <string name="users_list_title" msgid="770764290290240909">"Օգտատերեր"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Պրոֆիլներ"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ի թույլտվությունները"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Հիշողություն"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Երաժշտություն և աուդիո"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Աուդիո ֆայլեր"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Հաշվարկում…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Հավելվածի չափը"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Օգտատիրոջ տվյալներ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Պրոֆիլի տվյալներ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Քեշ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Ընդամենը"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Մաքրել հիշողությունը"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Չեղարկել համաժամացումը"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Համաժամացման ընթացքում խնդիրներ են առաջացել: Կարճ ժամանակ անց այն կվերականգնվի:"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Գաղտնիություն"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Ավտոմեքենայի տվյալները"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Կառավարել տեղորոշման հասանելիությունը հավելվածների համար"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Խոսափող"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Կառավարել խոսափողի հասանելիությունը հավելվածների համար"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Ավտոմեքենայի տվյալները"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Կառավարեք այս ավտոմեքենայում պահված գործողություններն ու տվյալները"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Ջնջել պրոֆիլը"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ջնջել ձեր պրոֆիլն ու հաշիվները տեղեկատվաժամանցային համակարգից"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Այս գործողությունը հասանելի չէ ձեր պրոֆիլի համար"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Անվտանգություն"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Էկրանի կողպում"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ոչ մեկը"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Հաստատել"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Անջատե՞լ էկրանի կողպումը"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Ցանկացած մարդ կկարողանա մտնել ձեր հաշիվ"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Պրոֆիլի կողպում"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Սահմանեք ավտոմատ ապակողպում"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Մուտքագրեք PIN կոդը"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Մուտքագրեք ձեր գաղտնաբառը"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Անվտանգության համար ավելացրեք PIN կոդ"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Պետք է <xliff:g id="NUMBER">%d</xliff:g>-ից քիչ թվանշան պարունակի"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Պետք է պարունակի միայն 0-9 թվանշաններ:"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Սարքի ադմինիստրատորը չի թույլատրում օգտագործել վերջին PIN կոդերը"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ՏՏ ադմինիստրատորն արգելափակել է պարզ PIN կոդերը: Փորձեք մեկ այլ PIN:"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ՏՏ ադմինիստրատորն արգելափակել է պարզ PIN կոդերը: Փորձեք մեկ այլ PIN:"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Գաղտնաբառն անվավեր նիշ է պարունակում:"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Գաղտնաբառը պետք է պարունակի առնվազն 4 նիշ:"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Սարքի ադմինիստրատորը թույլ չի տալիս օգտագործել վերջին գաղտնաբառը"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Չհաջողվեց պահել գաղտնաբառը"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ՏՏ ադմինիստրատորն արգելափակել է պարզ գաղտնաբառերը: Փորձեք մեկ այլ գաղտնաբառ:"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ՏՏ ադմինիստրատորն արգելափակել է պարզ գաղտնաբառերը: Փորձեք մեկ այլ գաղտնաբառ:"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Թվանշանների աճող, նվազող կամ կրկնվող հաջորդականությունն արգելված է:"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Էկրանի կողպման տարբերակներ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> – <xliff:g id="NUM_DAYS">%3$s</xliff:g> օր առաջ"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter ստեղն"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Անջատել դեմո ռեժիմը"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ելք դեմո ռեժիմից"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Դեմո հաշիվը կջնջվի, և համակարգում կվերականգնվեն գործարանային տվյալները։ Օգտատիրոջ բոլոր տվյալները կկորչեն։"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Դեմո հաշիվը կջնջվի, և համակարգում կվերականգնվեն գործարանային տվյալները։ Պրոֆիլի բոլոր տվյալները կհեռացվեն։"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Անջատել դեմո ռեժիմը"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ՓԱԿԵԼ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Վարելու ընթացքում գործառույթը հասանելի չէ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Վարելու ժամանակ հնարավոր չէ օգտատեր ավելացնել"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Վարելու ժամանակ հնարավոր չէ պրոֆիլ ավելացնել"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Որոնում"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Օգնական կամ Google Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Օգնական հավելված"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Օգտագործել էկրանի տեքստը"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Թույլատրել Օգնականին օգտագործել էկրանի բովանդակությունը"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Օգտագործել սքրինշոթները"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Թույլատրել Օգնականին օգտագործել սքրինշոթներ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Վերջերս ուղարկված"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Բոլոր հավելվածները"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Պրոֆիլներ և հաշիվներ"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Կառավարել մյուս պրոֆիլները"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Ավելացնել պրոֆիլ"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Ջնջել պրոֆիլը"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Ավելացնել պրոֆիլ"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 301fb15..37e7318 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Tampilan"</string>
     <string name="brightness" msgid="2919605130898772866">"Tingkat kecerahan"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Kecerahan adaptif"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Mengoptimalkan tingkat kecerahan untuk cahaya yang tersedia"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Menyesuaikan kecerahan layar dengan lingkungan"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Mode Cahaya Malam aktif"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"layar, layar sentuh"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"layar redup, layar sentuh, baterai"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"layar redup, layar sentuh, baterai"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"layar redup, malam, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode malam"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Jaringan &amp; internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Jaringan seluler"</string>
@@ -70,7 +66,7 @@
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Lihat paket"</string>
     <string name="app_data_usage" msgid="3878609885080232877">"Penggunaan kuota aplikasi"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"terbatas"</string>
-    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Tanggal reset siklus penggunaan"</string>
+    <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Tanggal peresetan siklus penggunaan"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Tanggal setiap bulannya:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Setel"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Peringatan &amp; batas data"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Setel peringatan penggunaan data"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Setel batas penggunaan data"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Setel"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Jaringan OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB digunakan sejak %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Gabung ke jaringan lain"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferensi jaringan"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Mengaktifkan Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Menonaktifkan Wi-Fi..."</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Gagal menghubungkan ke jaringan"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tambahkan jaringan"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Hubungkan"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Menghubungkan…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Jaringan di luar jangkauan"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Sandi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Tampilkan sandi"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Harap masukkan nama jaringan"</string>
@@ -126,7 +128,7 @@
     <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Alamat IPv6"</string>
     <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Preferensi Wi‑Fi"</string>
-    <string name="wifi_wakeup" msgid="7451825226044542000">"Otomatis aktifkan Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktifkan Wi‑Fi secara otomatis"</string>
     <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi aktif lagi dekat jaringan tersimpan berkualitas tinggi, mis. jaringan rumah"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Tidak tersedia karena lokasi dinonaktifkan. Aktifkan "<annotation id="link">"lokasi"</annotation>"."</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Aktifkan pemindaian Wi-Fi?"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Sebuah aplikasi ingin membuat head unit Anda terlihat oleh perangkat Bluetooth lain selama <xliff:g id="TIMEOUT">%1$d</xliff:g> detik."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ingin mengaktifkan Bluetooth dan membuat head unit Anda terlihat oleh perangkat lain selama <xliff:g id="TIMEOUT">%2$d</xliff:g> detik."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Sebuah aplikasi ingin mengaktifkan Bluetooth dan membuat head unit Anda terlihat oleh perangkat lain selama <xliff:g id="TIMEOUT">%1$d</xliff:g> detik."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Terlihat sebagai %1$s di perangkat lain"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Perangkat saya"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Perangkat yang terhubung sebelumnya"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s terhubung"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s terputus"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Permintaan penyambungan Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sambungkan &amp; hubungkan"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kode penyambungan Bluetooth"</string>
@@ -210,7 +217,7 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Semua bahasa"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Kelola keyboard"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"Output text-to-speech"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Keluaran text-to-speech"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Mesin yang dipilih"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mesin saat ini"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Kecepatan Ucapan"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Suara notifikasi default"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Suara alarm default"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Simpan"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Suara notifikasi"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Nada dering, notifikasi, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Kecerahan"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Menyesuaikan layar untuk cahaya redup"</string>
     <string name="units_settings" msgid="402325305096925886">"Unit"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Kecepatan"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Jarak"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Tampilkan semua aplikasi"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplikasi default"</string>
     <string name="app_permissions" msgid="32799922508313948">"Izin aplikasi"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikasi yang menggunakan <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Mengontrol akses aplikasi ke data Anda"</string>
     <string name="applications_settings" msgid="794261395191035632">"Info aplikasi"</string>
     <string name="force_stop" msgid="2153183697014720520">"Paksa berhenti"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Paksa berhenti?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Uninstal"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jika aplikasi ini dinonaktifkan, Android dan aplikasi lain mungkin tidak berfungsi normal."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Nonaktifkan aplikasi"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Tidak diinstal untuk pengguna ini"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Tidak diinstal untuk profil ini"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Izin"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifikasi"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Penyimpanan &amp; cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Tidak ada izin yang diberikan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Tidak ada izin yang diminta"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplikasi tidak digunakan"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplikasi tidak digunakan</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplikasi tidak digunakan</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Hapus izin &amp; kosongkan ruang penyimpanan"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s di penyimpanan internal"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Penggunaan data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Penggunaan kuota aplikasi"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Selalu tanya"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Jangan buka di aplikasi ini"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Link yang didukung"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikasi"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Baru-baru ini dibuka"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Lihat %1$d aplikasi"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Pengelola izin"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Mengontrol akses aplikasi ke data Anda"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Untuk Asisten dan lainnya"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Ke sistem dan setelan lainnya"</string>
     <string name="special_access" msgid="5730278220917123811">"Akses aplikasi khusus"</string>
     <string name="show_system" msgid="4401355756969485287">"Tampilkan sistem"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sembunyikan sistem"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sembunyikan aplikasi sistem"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Ubah setelan sistem"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Izin ini memungkinkan aplikasi mengubah setelan sistem."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Akses notifikasi"</string>
@@ -357,15 +382,20 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tidak ada permintaan lokasi terbaru"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Izin tingkat aplikasi"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Layanan Lokasi"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Gunakan lokasi"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Update sistem"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Lanjutan"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Tentang, info hukum, reset, dan lainnya"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Tingkat patch keamanan Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model &amp; hardware"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"Model: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versi pita basis"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versi kernel"</string>
-    <string name="build_number" msgid="3997326631001009102">"Nomor build"</string>
+    <string name="build_number" msgid="3997326631001009102">"Nomor versi"</string>
     <string name="bluetooth_mac_address" msgid="7641425947941688072">"Alamat bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Tidak tersedia"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Tindakan ini akan menyetel ulang semua preferensi untuk:\n\n"<li>"Aplikasi yang dinonaktifkan"</li>\n<li>"Notifikasi aplikasi yang dinonaktifkan"</li>\n<li>"Aplikasi default untuk tindakan"</li>\n<li>"Batasan data latar belakang untuk aplikasi"</li>\n<li>"Batasan izin apa pun"</li>\n\n"Data aplikasi Anda tidak akan hilang."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset aplikasi"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferensi aplikasi telah direset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Hapus semua (kembali ke setelan pabrik)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tindakan ini akan menghapus semua data dari head unit kendaraan, termasuk:\n\n"<li>"Akun Google Anda"</li>\n<li>"Data dan setelan sistem dan aplikasi"</li>\n<li>"Aplikasi yang didownload"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Saat ini Anda telah login ke akun berikut:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Ada pengguna lain yang aktif di kendaraan ini."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset kendaraan"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Hapus semua informasi pribadi dan aplikasi yang didownload? Tindakan ini tidak dapat diurungkan!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hapus semua"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Menghapus"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Harap tunggu..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Hapus semua (kembali ke setelan pabrik)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Menghapus semua data dan profil dari sistem infotainmen"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Tindakan ini akan menghapus semua data dari sistem infotainmen kendaraan Anda, termasuk:\n\n"<li>"Akun Google"</li>\n<li>"Setelan &amp; data aplikasi dan sistem"</li>\n<li>"Aplikasi yang didownload"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Saat ini Anda telah login ke akun berikut:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Ada profil lain yang aktif di kendaraan ini."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Hapus semua data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Hapus semua data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Tindakan ini akan menghapus semua data profil pribadi, akun, dan aplikasi yang didownload di sistem infotainmen ini.\n\nAnda tidak dapat mengurungkan tindakan ini."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Hapus semua"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Menghapus"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Harap tunggu..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tanggal &amp; waktu"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Menyetel tanggal, waktu, zona waktu &amp; format"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Tanggal &amp; waktu otomatis"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sedang login admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Semua izin admin"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Jadikan Admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Pengguna dapat menghapus pengguna lain, termasuk Admin lain, dan mengembalikan sistem ke setelan pabrik."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil ini dapat menghapus profil lain, termasuk Admin lain, dan mereset sistem ke setelan pabrik."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Tindakan ini tidak dapat dibatalkan."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ya, jadikan admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Membuat pengguna baru"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Buat profil baru"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Melakukan panggilan telepon"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mengirim pesan dengan kuota mobil"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Menginstal aplikasi baru"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Meng-uninstal aplikasi"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambahkan pengguna"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baru"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tambahkan pengguna baru?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Jika ditambahkan, pengguna baru harus menyiapkan ruangnya sendiri."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Setiap pengguna dapat mengupdate aplikasi untuk semua pengguna lain."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Batas pengguna tercapai"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Anda dapat membuat hingga <xliff:g id="COUNT">%d</xliff:g> pengguna.</item>
-      <item quantity="one">Hanya dapat membuat satu pengguna.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Tambahkan profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Profil baru"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Tambahkan profil baru?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Jika Anda menambahkan profil baru, pengguna tersebut harus menyiapkan ruangnya sendiri."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Setiap profil dapat mengupdate aplikasi untuk semua profil lainnya."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Batas profil telah tercapai"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Anda dapat membuat maksimal <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="one">Hanya satu profil yang dapat dibuat.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Gagal membuat pengguna baru"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Hapus pengguna ini?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Semua aplikasi dan data akan dihapus."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Gagal menghapus pengguna."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Gagal membuat profil baru"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Hapus profil ini?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Semua aplikasi dan data untuk profil ini akan dihapus"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Gagal menghapus profil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profil ini akan dihapus jika Anda menggantinya atau menghidupkan ulang mesin kendaraan."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Tutup"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Coba lagi"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Hapus pengguna terakhir?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Setelah menghapus satu-satunya pengguna yang tersisa untuk mobil ini, pengguna admin baru akan dibuat."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Semua data, setelan, dan aplikasi yang terkait dengan pengguna ini akan dihapus. Anda harus menyiapkan sistem lagi."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Hapus profil yang tersisa?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Jika Anda menghapus profil yang tersisa untuk kendaraan ini, semua data, setelan, dan aplikasi yang terkait dengan profil ini akan dihapus."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Setelah direset, Anda dapat menyiapkan profil baru."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Pilih admin baru"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Anda memerlukan minimal satu admin. Untuk menghapus admin ini, terlebih dahulu pilih pengganti."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Pilih admin"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Anda (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Tidak disiapkan"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit nama pengguna"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit nama profil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Kolom harus diisi."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Nama pengguna yang dimasukkan tidak valid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Nama profil yang dimasukkan tidak valid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Pengguna"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profil"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Izin diberikan kepada %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Penyimpanan"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musik &amp; audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"File audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Menghitung…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Ukuran aplikasi"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Data pengguna"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Data profil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Hapus penyimpanan"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Batalkan sinkronisasi"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Saat ini sinkronisasi mengalami masalah. Sinkronisasi akan segera berfungsi kembali."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privasi"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Data kendaraan"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrol akses aplikasi ke lokasi Anda"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Mengontrol akses aplikasi ke mikrofon"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Data kendaraan"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Mengelola aktivitas dan info yang disimpan di kendaraan ini"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Hapus profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Menghapus profil dan akun Anda dari sistem infotainmen"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Tindakan ini tidak tersedia untuk profil Anda"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Keamanan"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kunci layar"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Tidak ada"</string>
@@ -567,7 +609,7 @@
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Hapus"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Batal"</string>
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Pola pembuka kunci baru Anda"</string>
-    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Gambar pola pembuka kunci"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Buat pola pembuka kunci"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Angkat jari ketika selesai"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Pola direkam"</string>
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Gambar pola lagi untuk mengonfirmasi"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Oke"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Hapus kunci layar?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Tindakan ini akan mengizinkan siapa pun mengakses akun Anda"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Kunci profil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Menyiapkan buka kunci otomatis"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Masukkan PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Masukkan sandi"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Untuk keamanan, setel PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Harus kurang dari <xliff:g id="NUMBER">%d</xliff:g> digit"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Hanya boleh berisi digit 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Admin perangkat tidak mengizinkan penggunaan PIN yang baru-baru ini digunakan"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"PIN umum diblokir oleh admin IT. Coba PIN lain."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"PIN umum diblokir oleh admin IT. Coba PIN lain."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Tidak boleh berisi karakter yang tidak valid."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Sandi tidak valid, minimal 4 karakter."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Admin perangkat tidak mengizinkan penggunaan sandi yang baru-baru ini digunakan"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Error saat menyimpan sandi"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Sandi umum diblokir oleh admin IT. Coba sandi lain."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Sandi umum diblokir oleh admin IT. Coba sandi lain."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Urutan digit naik, turun, atau berulang tidak diizinkan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsi kunci layar"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari yang lalu"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tombol enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Keluar dari Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Keluar dari mode demo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tindakan ini akan menghapus akun demo dan mengembalikan sistem ke setelan pabrik. Semua data pengguna akan hilang."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Tindakan ini akan menghapus akun demo dan mereset sistem ke setelan pabrik. Semua data profil akan hilang."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Keluar dari Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"TOLAK"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Fitur tidak tersedia saat mengemudi"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Tidak dapat menambahkan pengguna saat mengemudi"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Tidak dapat menambahkan profil saat mengemudi"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Telusuri"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asisten &amp; suara"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikasi asisten"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Gunakan teks dari layar"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Mengizinkan asisten mengakses konten layar"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Gunakan screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Mengizinkan asisten mengakses gambar layar"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Dikirim baru-baru ini"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Semua aplikasi"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profil &amp; akun"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Kelola profil lain"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Tambahkan profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Hapus profil ini"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Tambahkan profil"</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 5d9a256..3d43da3 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Skjár"</string>
     <string name="brightness" msgid="2919605130898772866">"Birtustig"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Aðlögun birtustigs"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Stilla birtustig eftir umhverfisbirtu"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Stilla skjábirtu eftir umhverfinu"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Kveikt á næturljósi"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skjár, snertiskjár"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dekkja skjá, snertiskjár, rafhlaða"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dekkja skjá, snertiskjár, rafhlaða"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"myrkva skjá, nótt, litblær"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Næturstilling"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Netkerfi og internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Farsímakerfi"</string>
@@ -39,7 +35,7 @@
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Óvirk / SIM-kort"</string>
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"Virk / sótt SIM-kort"</string>
     <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Óvirk / sótt SIM-kort"</string>
-    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Bæta fleirum við"</string>
+    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Bæta fleiri við"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Farsímagögn"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Aðgangur að gögnum um farsímakerfi"</string>
     <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Slökkva á farsímagögnum?"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Stilla viðvörun fyrir hámark gagnanotkunar"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Velja hámark gagnanotkunar"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Stilla"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-netkerfi"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB notuð %2$s–%3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Tengjast öðru neti"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Netstillingar"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Kveikir á Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Slekkur á Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ekk tókst að tengjast neti"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Bæta við neti"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Tengja"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Tengist…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Ekkert samband við netkerfi"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Aðgangsorð"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Sýna aðgangsorð"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Sláðu inn heiti netkerfis"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Forrit vill gera stjórneiningarboxið þitt sýnilegt öðrum Bluetooth-tækjum í <xliff:g id="TIMEOUT">%1$d</xliff:g> sekúndur."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> vill kveikja á Bluetooth og gera stjórneiningarboxið þitt sýnilegt öðrum tækjum í <xliff:g id="TIMEOUT">%2$d</xliff:g> sekúndur."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Forrit vill kveikja á Bluetooth og gera stjórneiningarboxið þitt sýnilegt öðrum tækjum í <xliff:g id="TIMEOUT">%1$d</xliff:g> sekúndur."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Birtist sem %1$s í öðrum tækjum"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Tækin mín"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Áður tengt"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s tengt"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s aftengt"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Beiðni um Bluetooth-pörun"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pörun og tenging"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-pörunarkóði"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Sjálfgefið hljóð tilkynninga"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sjálfgefið hljóð í vekjara"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Vista"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Viðvörunarhljóð"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Hringitónn, tilkynningar, viðvörun"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Birtustig"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Stilla skjá fyrir litla birtu"</string>
     <string name="units_settings" msgid="402325305096925886">"Mælieining"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hraði"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Vegalengd"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Sýna öll forrit"</string>
     <string name="default_applications" msgid="1558183275638697087">"Sjálfgefin forrit"</string>
     <string name="app_permissions" msgid="32799922508313948">"Heimildir forrits"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Forrit sem nota heimildirnar: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Stjórna aðgangi forrita að gögnunum þínum"</string>
     <string name="applications_settings" msgid="794261395191035632">"Upplýsingar um forrit"</string>
     <string name="force_stop" msgid="2153183697014720520">"Þvinga lokun"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Þvinga fram lokun?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Fjarlægja"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ef þú slekkur á þessu forriti getur verið að Android og önnur forrit virki ekki lengur sem skyldi."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Slökkva á forriti"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ekki uppsett fyrir þennan notanda"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ekki uppsett fyrir þennan prófíl"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Heimildir"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Tilkynningar"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Geymslurými og skyndiminni"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Útgáfa: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Engar heimildir veittar"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Engar heimildarbeiðnir"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ónotuð forrit"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ónotað forrit</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ónotuð forrit</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Fjarlægja heimildir og losa um pláss"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s í innbyggðri geymslu"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Gagnanotkun"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Gagnanotkun forrits"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Spyrja í hvert skipti"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ekki opna í þessu forriti"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Studdir tenglar"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Forrit"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Opnað nýlega"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Skoða öll %1$d forrit"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Heimildastjóri"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Stjórna aðgangi forrita að gögnunum þínum"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Fyrir Hjálpara og fleira"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Kerfisstillingar og aðrar stillingar"</string>
     <string name="special_access" msgid="5730278220917123811">"Sérstakur forritaaðgangur"</string>
     <string name="show_system" msgid="4401355756969485287">"Sýna kerfi"</string>
     <string name="hide_system" msgid="8845453295584638040">"Fela kerfi"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Fela kerfisforrit"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Breyta kerfisstillingum"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Þessi heimild leyfir forriti að breyta kerfisstillingum."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Tilkynningaaðgangur"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Engar nýlegar staðsetningarbeiðnir"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Heimildir á forritsstigi"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Staðsetningarþjónusta"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Nota staðsetningu"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Kerfi"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Kerfisuppfærslur"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Ítarlegt"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Frekari upplýsingar, lagalegar upplýsingar, endurstilling og fleira"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android útgáfa"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stig Android öryggisplásturs"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Gerð og vélbúnaður"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Þetta endurstillir allar kjörstillingar fyrir:\n\n "<li>"Óvirk forrit"</li>\n" "<li>"Óvirkar tilkynningar forrita"</li>\n" "<li>"Sjálfgefin forrit aðgerða"</li>\n" "<li>"Takmarkanir á bakgrunnsgögnum forrita"</li>\n" "<li>"Takmarkanir á heimildum"</li>\n\n" Þú glatar engum forritagögnum."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Endurstilla forrit"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Stillingar forrita voru endurstilltar"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Eyða öllum gögnum (núllstilla)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Þetta mun eyða öllum gögnum af mælaborði farartækisins þíns, þ.m.t.:\n\n"<li>"Google reikningnum þínum"</li>\n<li>"Kerfis- og forritagögnum og stillingum"</li>\n<li>"Sóttum forritum"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Þú ert skráð(ur) inn á eftirfarandi reikninga:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Það eru aðrir notendur í þessu farartæki."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Endurstilla farartæki"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Endurstilla?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Viltu eyða öllum persónuupplýsingum og sóttum forritum? Ekki er hægt að afturkalla þessa aðgerð."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Eyða öllu"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Eyðir"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Augnablik..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Eyða öllum gögnum (núllstilla)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Eyða öllum gögnum og prófílum úr upplýsinga- og afþreyingarkerfinu"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Núna verður öllum gögnum eytt úr upplýsinga- og afþreyingarkerfi ökutækisins, þ.m.t.:\n\n"<li>"Google reikningnum þínum"</li>\n<li>"Kerfis- og forritagögnum og stillingum"</li>\n<li>"Sóttum forritum"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Þú ert skráð(ur) inn á eftirfarandi reikninga:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Aðrir prófílar eru til staðar í þessu ökutæki."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Eyða öllum gögnum"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Viltu eyða öllum gögnum?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Núna verður öllum gögnum, reikningum og sóttum forritum eytt af prófílnum þínum í þessu upplýsinga- og afþreyingarkerfi.\n\nEkki er hægt að afturkalla þessa aðgerð."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Eyða öllu"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Eyðir"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Augnablik..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dagsetning og tími"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Velja dagsetningu, tíma, tímabelti og snið"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Sjálfvirk dagsetning og tími"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Skráð(ur) inn sem stjórnandi"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Allar stjórnandaheimildir"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gera að stjórnanda"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Notandinn mun geta eytt öðrum notendum, þar á meðal stjórnendum, og núllstillt kerfið."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Prófíllinn mun geta eytt prófílum, þ.m.t. öðrum stjórnendum, og núllstillt kerfið."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ekki er hægt að afturkalla þessa aðgerð."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Já, gera að stjórnanda"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Nýskrá notendur"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Búa til nýja prófíla"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hringja símtöl"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Skilaboð í gegnum farsímagögn bíls"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Setja upp ný forrit"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Fjarlægja forrit"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Bæta notanda við"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nýr notandi"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Bæta nýjum notanda við?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Þegar þú bætir nýjum notanda við þarf viðkomandi að setja upp sitt eigið svæði."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Allir notendur geta uppfært forrit fyrir alla aðra notendur."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Notandahámarki náð"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> notanda.</item>
-      <item quantity="other">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> notendur.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Bæta við prófíl"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nýr prófíll"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Bæta við nýjum prófíl?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Þegar þú bætir nýjum prófíl við þarf viðkomandi að setja upp sitt eigið svæði."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Hvaða prófíll sem er getur uppfært forrit fyrir alla aðra prófíla."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Hámarki prófíla náð"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> prófíl.</item>
+      <item quantity="other">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> prófíla.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Ekki tókst að búa til nýjan notanda"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eyða þessum notanda?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Öllum forritum og gögnum verður eytt."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Ekki tókst að eyða notanda."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Ekki tókst að búa til nýjan prófíl"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Á að eyða þessum prófíl?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Öllum forritum og gögnum fyrir þennan prófíl verður eytt"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Ekki tókst að eyða prófíl."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Þessum prófíl verður eytt þegar þú skiptir um prófíl eða endurræsir ökutækið."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Hunsa"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Reyna aftur"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eyða síðasta notanda?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Þegar eina notanda þessa bíls sem eftir er hefur verið eytt verður nýr stjórnandi valinn."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Öllum gögnum, stillingum og forritum sem tengjast þessum notanda verður eytt. Þú munt þurfa að setja kerfið upp aftur."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Á að eyða síðasta prófílnum?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Um leið og þú eyðir síðasta prófílnum fyrir þetta ökutæki verður öllum gögnum, stillingum og forritum sem tengjast þessum prófíl eytt."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Hægt er að setja upp nýjan prófíl eftir endurstillingu."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Velja nýjan stjórnanda"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Þú þarft að minnsta kosti einn stjórnanda. Til að eyða þessum þarftu fyrst að finna einhvern í staðinn."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Velja stjórnanda"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Þú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nafn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ekki uppsett"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Breyta notandanafni"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Breyta heiti prófílsins"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Reiturinn má ekki vera auður."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Ógilt notandanafn var slegið inn."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Heiti prófílsins sem var slegið inn er ógilt."</string>
     <string name="users_list_title" msgid="770764290290240909">"Notendur"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Prófílar"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s veitt heimild"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Geymslurými"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Tónlist og hljóð"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Hljóðskrár"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Reiknar út…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Stærð forrits"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Notandagögn"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Prófílgögn"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Skyndiminni"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Samtals"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Hreinsa geymslu"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Hætta við samstillingu"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Vandamál eru með samstillingu sem stendur. Hún verður aftur í boði von bráðar."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Persónuvernd"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Gögn bíls"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Stjórna aðgengi forrits að staðsetningu þinni"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Hljóðnemi"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Stjórna aðgangi forritsins að hljóðnemanum"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Gögn bíls"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Stjórna aðgerðum og upplýsingum sem eru vistaðar í þessum bíl"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Eyða prófílnum þínum"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Eyða prófílnum og reikningum þínum úr upplýsinga- og afþreyingarkerfinu"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Þessi aðgerð er ekki í boði fyrir prófílinn þinn"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Öryggi"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skjálás"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Enginn"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Í lagi"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Viltu fjarlægja skjálás?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Þetta gefur hverjum sem er aðgang að reikningnum þínum"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Prófíllás"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Stillingar til að taka sjálfkrafa úr lás"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Sláðu inn PIN-númer"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Sláðu inn aðgangsorðið þitt"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Settu upp PIN-númer til að gæta fyllsta öryggis"</string>
@@ -591,7 +635,7 @@
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"Rangt aðgangsorð"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"Settu upp aðgangsorð til að gæta fyllsta öryggis"</string>
     <string name="confirm_your_password_header" msgid="7052891840366724938">"Sláðu aðgangsorðið inn aftur"</string>
-    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Aðgangsorðin stemma ekki"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Aðgangsorðin stemma ekki."</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"Hreinsa"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Hætta við"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Staðfesta"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Má ekki vera lengra en <xliff:g id="NUMBER">%d</xliff:g> tölustafir"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Má eingöngu innihalda tölustafi, 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Tækjastjóri leyfir ekki notkun nýlegs PIN-númers"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Kerfisstjórinn þinn hefur lokað á algeng PIN-númer. Prófaðu annað PIN-númer."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Kerfisstjórinn þinn hefur lokað á algeng PIN-númer. Prófaðu annað PIN-númer."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Þetta má ekki innihalda ógildan staf."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Aðgangsorðið er ógilt, það verður að vera minnst fjórir stafir að lengd."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Tækjastjóri leyfir ekki notkun nýlegs aðgangsorðs"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Villa við að vista aðgangsorð"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Kerfisstjórinn þinn hefur lokað á algeng aðgangsorð. Prófaðu annað aðgangsorð."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Kerfisstjórinn þinn hefur lokað á algeng aðgangsorð. Prófaðu annað aðgangsorð."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hækkandi, lækkandi eða endurtekin röð tölustafa er óheimil."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valkostir skjálæsingar"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Fyrir <xliff:g id="NUM_DAYS">%3$s</xliff:g> dögum"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Færslulykill"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Hætta í kynningarútgáfu"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Hætta í kynningarútgáfu"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Þetta eyðir kynningarreikningnum og núllstillir kerfið. Öll notandagögn glatast."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Núna verður kynningarreikningnum eytt og kerfið núllstillt. Öll gögn prófílsins glatast."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Hætta í kynningarútgáfu"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"HUNSA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Þessi eiginleiki er ekki í boði meðan á akstri stendur"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Ekki er hægt að bæta við notanda meðan á akstri stendur"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Ekki er hægt að bæta við prófíl á meðan á akstri stendur"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Leit"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Hjálpari og rödd"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Hjálparaforrit"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Nota texta af skjánum"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Veita hjálpara aðgang að efni á skjánum"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Nota skjámynd"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Veita hjálpara aðgang að skjámynd"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Sent nýlega"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Öll forrit"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Prófílar og reikningar"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Stjórna öðrum prófílum"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Bæta við prófíl"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Eyða þessum prófíl"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Bæta við prófíl"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c32e286..549f102 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Livello di luminosità"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Luminosità adattiva"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Ottimizza il livello di luminosità in base alla luce disponibile"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Regola ambiente e luminosità dello schermo"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Luminosità notturna attiva"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"schermo, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"attenuazione schermo, touchscreen, batteria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"attenuazione schermo, touchscreen, batteria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"attenuazione schermo, notte, tonalità"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modalità notturna"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rete e Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rete mobile"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Imposta avviso sull\'utilizzo dei dati"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Imposta limite di utilizzo dei dati"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Imposta"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rete OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"MB usati: %1$d. %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Connettiti a un\'altra rete"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferenze di rete"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Attivazione Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Disattivazione Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Conessione alla rete non riuscita"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Aggiungi rete"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connetti"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Connessione…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Rete fuori portata"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostra password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Inserisci il nome di una rete"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Un\'app chiede di rendere visibile la tua unità principale ad altri dispositivi Bluetooth per <xliff:g id="TIMEOUT">%1$d</xliff:g> secondi."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> chiede di attivare il Bluetooth e di rendere visibile la tua unità principale ad altri dispositivi per <xliff:g id="TIMEOUT">%2$d</xliff:g> secondi."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Un\'app chiede di attivare il Bluetooth e di rendere visibile la tua unità principale ad altri dispositivi per <xliff:g id="TIMEOUT">%1$d</xliff:g> secondi."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Dispositivo visibile come %1$s agli altri dispositivi"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"I miei dispositivi"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Dispositivi connessi in precedenza"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Dispositivo %1$s connesso"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Dispositivo %1$s disconnesso"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Richiesta accoppiamento Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Accoppia e connetti"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Codice di accoppiamento Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Suono di notifica predefinito"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Suono sveglia predefinito"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Salva"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Suoni di avviso"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Suoneria, notifiche, sveglia"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Luminosità"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Regola lo schermo per condizioni di scarsa illuminazione"</string>
     <string name="units_settings" msgid="402325305096925886">"Unità"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocità"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distanza"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostra tutte le app"</string>
     <string name="default_applications" msgid="1558183275638697087">"App predefinite"</string>
     <string name="app_permissions" msgid="32799922508313948">"Autorizzazioni app"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"App che usano <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controlla l\'accesso delle app ai tuoi dati"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informazioni sull\'app"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forza interruzione"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vuoi forzare l\'interruzione?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Disinstalla"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se disattivi questa app, Android e altre app potrebbero non funzionare più come previsto."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disattiva app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Non installata per l\'utente"</string>
+    <string name="not_installed" msgid="4163454337822508007">"App non installata per questo profilo"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorizzazioni"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notifiche"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Spazio di archiviazione e cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versione: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nessuna autorizzazione concessa"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nessuna autorizzazione richiesta"</string>
+    <string name="unused_apps" msgid="648471933781010395">"App inutilizzate"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> app inutilizzate</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> app inutilizzata</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Rimuovi autorizzazioni e libera spazio"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s nella memoria interna"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilizzo dei dati"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utilizzo dati dell\'app"</string>
@@ -309,7 +326,7 @@
     <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistenza e input vocale"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"App di assistenza"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"Utilizza testo sullo schermo"</string>
-    <string name="assist_access_context_summary" msgid="2374281280599443774">"Consenti all\'app di assistenza di accedere ai contenuti testuali sullo schermo"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Consenti all\'app di assistenza di accedere ai contenuti dello schermo come il testo"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utilizza screenshot"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Consenti all\'app di assistenza di accedere a un\'immagine dello schermo"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Input vocale"</string>
@@ -317,7 +334,7 @@
     <string name="app_list_preference_none" msgid="7753357799926715901">"Nessuna"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Selezionata"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"L\'assistente potrà leggere informazioni sulle app utilizzate dal sistema, incluse quelle visibili su schermo o accessibili all\'interno delle app."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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; si basa sui contenuti visualizzati sullo schermo per stabilire quali dati è possibile compilare automaticamente."</string>
     <string name="autofill_add_service" msgid="6413893366443609951">"Aggiungi servizio"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Apertura link"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"App installate"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Chiedi ogni volta"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Non aprire in questa app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Link supportati"</string>
-    <string name="special_access" msgid="5730278220917123811">"Accesso speciale per le app"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"App"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Aperte di recente"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Visualizza tutte le app (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gestione autorizzazioni"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controlla l\'accesso delle app ai tuoi dati"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Per l\'assistente e altre app"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Al sistema e ad altre impostazioni"</string>
+    <string name="special_access" msgid="5730278220917123811">"App con accesso speciale"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostra sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Nascondi sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Nascondi app di sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modifica impostazioni sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Questa autorizzazione consente a un\'app di modificare le impostazioni di sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Accesso alle notifiche"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nessuna richiesta di posizione recente"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizzazioni a livello di app"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Servizi di geolocalizzazione"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Usa posizione"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Aggiornamenti di sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avanzate"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informazioni, informazioni legali, reimpostazione e altre impostazioni"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versione Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Livello patch di sicurezza Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modello e hardware"</string>
@@ -400,7 +430,7 @@
     <string name="show_dev_on" msgid="5339077400040834808">"Ora sei sviluppatore."</string>
     <string name="show_dev_already" msgid="1678087328973865736">"Non è necessario, sei già sviluppatore."</string>
     <string name="developer_options_settings" msgid="1530739225109118480">"Opzioni sviluppatore"</string>
-    <string name="reset_options_title" msgid="4388902952861833420">"Opzioni di ripristino"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opzioni di reimpostazione"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"Reimpostazione di rete, app o dispositivo"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"Reimposta rete"</string>
     <string name="reset_network_desc" msgid="602381374544634925">"L\'operazione reimposta tutte le impostazioni di rete, tra cui:"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Verranno reimpostate tutte le preferenze relative a:\n\n"<li>"App disattivate"</li>\n<li>"Notifiche di app disattivate"</li>\n<li>"Applicazioni predefinite per le azioni"</li>\n<li>"Limitazioni di dati in background per le app"</li>\n<li>"Eventuali limitazioni delle autorizzazioni"</li>\n\n"Non perderai i dati delle app."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reimposta app"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Le preferenze per le app sono state reimpostate"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Cancella tutti i dati"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tutti i dati verranno cancellati dall\'unità principale del veicolo, inclusi:\n\n"<li>"Il tuo Account Google"</li>\n<li>"Le impostazioni e i dati di sistema e delle app"</li>\n<li>"Le app scaricate"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Al momento sono collegati i seguenti account:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Sono presenti altri utenti su questo veicolo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Reimposta veicolo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vuoi reimpostare?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vuoi cancellare tutte le informazioni personali e le app scaricate? Questa azione è irreversibile."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Cancella tutto"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Cancellazione"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Attendi…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Cancella tutti i dati"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Cancella tutti i dati e i profili dal sistema di infotainment"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Verranno cancellati tutti i dati dal sistema di infotainment del veicolo, inclusi:\n\n"<li>"Il tuo Account Google"</li>\n<li>"Le impostazioni e i dati di sistema e delle app"</li>\n<li>"Le app scaricate"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Hai eseguito l\'accesso ai seguenti account:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Sono presenti altri profili su questo veicolo."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Cancella tutti i dati"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vuoi cancellare tutti i dati?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Verranno cancellati tutti i dati del tuo profilo personale, i tuoi account e le app scaricate su questo sistema di infotainment.\n\nQuesta azione non può essere annullata."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Cancella tutto"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Cancellazione…"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Attendi…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e ora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Imposta data, ora, fuso orario e formati"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data e ora automatiche"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Accesso come amministratore"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tutte le autorizzazioni di amministratore"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Imposta come amministratore"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utente potrà eliminare utenti, includere altri amministratori e ripristinare le impostazioni di fabbrica del sistema."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Il profilo potrà eliminare profili, inclusi altri amministratori, e ripristinare i dati di fabbrica del sistema."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Questa azione è irreversibile."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sì, imposta come amministratore"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Creazione di nuovi utenti"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Crea nuovi profili"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fare telefonate"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaggi tramite dati mobili auto"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installazione di nuove app"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Disinstallazione di app"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Aggiungi utente"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuovo utente"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Aggiungere un nuovo utente?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Il nuovo utente, una volta aggiunto, dovrà configurare il suo spazio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsiasi utente può aggiornare le app per tutti gli altri."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite utenti raggiunto"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Puoi creare massimo <xliff:g id="COUNT">%d</xliff:g> utenti.</item>
-      <item quantity="one">Può essere creato un solo utente.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Aggiungi profilo"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nuovo profilo"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vuoi aggiungere nuovo profilo?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"La persona per cui aggiungi un nuovo profilo dovrà configurare il suo spazio."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Qualsiasi profilo può aggiornare le app per tutti gli altri profili."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Limite di profili raggiunto"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">È possibile creare massimo <xliff:g id="COUNT">%d</xliff:g> profili.</item>
+      <item quantity="one">È possibile creare un solo profilo.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Creazione nuovo utente non riuscita"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminare questo utente?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tutti i dati e le app verranno eliminati."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Impossibile eliminare l\'utente."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Impossibile creare un nuovo profilo"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vuoi eliminare questo profilo?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Verranno eliminati tutti i dati e le app di questo profilo"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Impossibile eliminare il profilo."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Questo profilo verrà eliminato quando cambierai profilo o riaccenderai il motore."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignora"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Riprova"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eliminare ultimo utente?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Dopo aver eliminato l\'unico utente rimanente di quest\'auto verrà creato un nuovo amministratore."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Verranno eliminati tutti i dati, le impostazioni e le app associati all\'utente. Dovrai riconfigurare il sistema."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Eliminare l\'ultimo profilo rimanente?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Se elimini l\'unico profilo rimanente per questo veicolo, verranno cancellati tutti i dati, le impostazioni e le app associati a questo profilo."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Dopo la reimpostazione potrai configurare un nuovo profilo."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Scegli il nuovo amministratore"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Devi avere almeno un amministratore. Per eliminare questo devi prima sceglierne uno sostitutivo."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Scegli l\'amministratore"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Tu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configurato"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Modifica il nome utente"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Modifica nome profilo"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Il campo non può essere vuoto."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Il nome utente inserito non è valido."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Il nome del profilo inserito non è valido."</string>
     <string name="users_list_title" msgid="770764290290240909">"Utenti"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Autorizzazioni concesse a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Spazio di archiviazione"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musica e audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"File audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calcolo…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Dimensioni app"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dati utente"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dati del profilo"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totale"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Cancella spazio di archiviazione"</string>
@@ -531,7 +564,7 @@
     <string name="really_remove_account_message" msgid="4296769280849579900">"La rimozione di questo account comporta l\'eliminazione di tutti i relativi messaggi, contatti e altri dati dal dispositivo."</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"Impossibile rimuovere l\'account."</string>
     <string name="account_sync_title" msgid="6541844336300236915">"Sincronizzazione account"</string>
-    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronizzazione attiva per <xliff:g id="ID_1">%1$d</xliff:g> di <xliff:g id="ID_2">%2$d</xliff:g> elementi"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronizzazione attiva per <xliff:g id="ID_1">%1$d</xliff:g> elementi su <xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronizzazione attivata per tutti gli elementi"</string>
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronizzazione disattivata per tutti gli elementi"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Sincronizzaz. non attiva"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annulla sincronizzazione"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"La sincronizzazione presenta dei problemi. Riprenderà a breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dati del veicolo"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controlla l\'accesso delle app alla tua posizione"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microfono"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controlla l\'accesso delle app al microfono"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dati del veicolo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gestisci le attività e le informazioni salvate su questo veicolo"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Elimina il tuo profilo"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Cancella il tuo profilo e i tuoi account dal sistema di infotainment"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Questa azione non è disponibile per il tuo profilo"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sicurezza"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blocco schermo"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nessuno"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Rimuovere il blocco schermo?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"In questo modo chiunque potrà accedere al tuo dispositivo"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Blocco del profilo"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configura lo sblocco automatico"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Inserisci il PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Inserisci la password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Per sicurezza, imposta un PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Deve contenere meno di <xliff:g id="NUMBER">%d</xliff:g> cifre"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Deve contenere solo cifre da 0 a 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"L\'amministratore del dispositivo non consente l\'utilizzo di un PIN recente"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"I PIN comuni sono stati bloccati dall\'amministratore IT. Prova a usare un altro PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"I PIN comuni sono stati bloccati dall\'amministratore IT. Prova a usare un altro PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Non può contenere un carattere non valido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password non valida: deve avere almeno 4 caratteri."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"L\'amministratore del dispositivo non consente l\'utilizzo di una password recente"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Errore di salvataggio della password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Le password comuni sono state bloccate dall\'amministratore IT. Prova a usare un\'altra password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Le password comuni sono state bloccate dall\'amministratore IT. Prova a usare un\'altra password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non sono consentite sequenze di cifre in ordine crescente o decrescente oppure ripetute."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opzioni di blocco schermo"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> giorni fa"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Inserisci il codice"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Chiudi demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Esci dalla modalità demo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"L\'account dimostrativo verrà eliminato e verranno ripristinati i dati di fabbrica del sistema. Tutti i dati utente andranno persi."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"L\'account dimostrativo verrà eliminato e verranno ripristinati i dati di fabbrica del sistema. Tutti i dati del profilo andranno persi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Chiudi demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funzionalità non disponibile durante la guida"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Impossibile aggiungere l\'utente durante la guida"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Impossibile aggiungere un profilo durante la guida"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Cerca"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistente e voce"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"App dell\'assistente"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Utilizza testo sullo schermo"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Consenti all\'assistente di accedere ai contenuti dello schermo"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Utilizza screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Consenti all\'assistente di accedere agli screenshot"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Inviate di recente"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Tutte le app"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili e account"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gestisci altri profili"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Aggiungi un profilo"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Elimina questo profilo"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Aggiungi profilo"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 35a5c68..474431a 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"תצוגה"</string>
     <string name="brightness" msgid="2919605130898772866">"רמת בהירות"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"בהירות מותאמת"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"אופטימיזציה של רמת בהירות לפי התאורה הזמינה"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"התאמת בהירות המסך לסביבה"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"\'תאורת לילה\' פועלת"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"מסך, מסך מגע"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"עמעום מסך, מסך מגע, סוללה"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"עמעום מסך, מסך מגע, סוללה"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"עמעום מסך, לילה, גוון"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"מצב לילה"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"רשת ואינטרנט"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"רשת סלולרית"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"הגדרת אזהרה לגבי שימוש בחבילת הגלישה"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"מגבלה לשימוש בחבילת הגלישה"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"הגדרה"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"רשת OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$dMB בשימוש %2$s –‏ %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"הצטרפות לרשת אחרת"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"העדפות רשת"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"מתבצעת הפעלת Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"מתבצע כיבוי של Wi-Fi..."</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"נכשל הניסיון להתחבר לרשת"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"הוספת רשת"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"התחברות"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ההתחברות מתבצעת…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"הרשת לא בטווח"</string>
     <string name="wifi_password" msgid="5565632142720292397">"סיסמה"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"הצגת סיסמה"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"יש להזין שם רשת"</string>
@@ -176,7 +178,7 @@
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"לנתק את המכשיר?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"הרכב יתנתק מ-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"כתובת ה-Bluetooth של הרכב: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"כתובת המכשיר לחיבור דרך Bluetooth‏: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"כתובת המכשיר לחיבור דרך Bluetooth: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_name" msgid="2609869978821094114">"שם הרכב"</string>
     <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"שינוי שם הרכב הזה"</string>
     <string name="bluetooth_rename_device" msgid="8406868875363878712">"שינוי שם המכשיר"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"אפליקציה מסוימת מבקשת להפוך את מערכת הסטריאו שלך לגלויה בפני מכשירי Bluetooth אחרים למשך <xliff:g id="TIMEOUT">%1$d</xliff:g> שניות."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מבקשת להפעיל את ה-Bluetooth ולהפוך את מערכת הסטריאו שלך לגלויה בפני מכשירים אחרים למשך <xliff:g id="TIMEOUT">%2$d</xliff:g> שניות."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"אפליקציה מסוימת מבקשת להפעיל את ה-Bluetooth ולהפוך את מערכת הסטריאו שלך לגלויה בפני מכשירים אחרים למשך <xliff:g id="TIMEOUT">%1$d</xliff:g> שניות."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"גלוי בתור %1$s למכשירים אחרים"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"המכשירים שלי"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"מכשירים שחוברו בעבר"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s מחובר"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s מנותק"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"בקשה להתאמת Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"התאמה וחיבור"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"קוד התאמת Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"צליל ברירת מחדל להתראות"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"צליל ברירת מחדל לשעון מעורר"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"שמירה"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"צלילי ההתראות"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"רינגטון, התראות, שעון מעורר"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"בהירות"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"התאמת המסך לתאורה חלשה"</string>
     <string name="units_settings" msgid="402325305096925886">"יחידות"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"מהירות"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"מרחק"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"הצגת כל האפליקציות"</string>
     <string name="default_applications" msgid="1558183275638697087">"אפליקציות ברירת מחדל"</string>
     <string name="app_permissions" msgid="32799922508313948">"הרשאות הניתנות לאפליקציה"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"אפליקציות המשתמשות בשירות <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"שליטה בגישת האפליקציה לנתונים שלך"</string>
     <string name="applications_settings" msgid="794261395191035632">"פרטי אפליקציה"</string>
     <string name="force_stop" msgid="2153183697014720520">"סגירה ידנית"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"לסגור ידנית?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"הסרת התקנה"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"אם האפליקציה הזו תושבת, ייתכן ש-Android ואפליקציות אחרות לא יפעלו כצפוי."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"השבתת האפליקציה"</string>
-    <string name="not_installed" msgid="4218816013370552746">"לא מותקנת אצל המשתמש הזה"</string>
+    <string name="not_installed" msgid="4163454337822508007">"לא מותקנת בפרופיל הזה"</string>
     <string name="permissions_label" msgid="2701446753515612685">"הרשאות"</string>
     <string name="notifications_label" msgid="6586089149665170731">"התראות"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"אחסון ומטמון"</string>
     <string name="application_version_label" msgid="8556889839783311649">"גרסה: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"לא הוענקו הרשאות"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"לא התבקשו הרשאות"</string>
+    <string name="unused_apps" msgid="648471933781010395">"אפליקציות שמזמן לא השתמשת בהן"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
+      <item quantity="one">אפליקציה אחת (<xliff:g id="COUNT_0">%d</xliff:g>) שמזמן לא השתמשת בה</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"הסרת הרשאות ופינוי נפח אחסון"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s בשטח אחסון פנימי"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"שימוש בחבילת הגלישה"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"שימוש בחבילת הגלישה באפל\'"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"יש לשאול בכל פעם"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"אין לפתוח באפליקציה זו"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"קישורים נתמכים"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"אפליקציות"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"נפתחו לאחרונה"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"לעיון בכל %1$d האפליקציות"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"מנהל ההרשאות"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"שליטה בגישת האפליקציה לנתונים שלך"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"ל-Assistant ועוד"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"למערכת ולהגדרות אחרות"</string>
     <string name="special_access" msgid="5730278220917123811">"הרשאת גישה מיוחדת לאפליקציה"</string>
     <string name="show_system" msgid="4401355756969485287">"הצגת המערכת"</string>
     <string name="hide_system" msgid="8845453295584638040">"הסתרת המערכת"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"הסתרת אפליקציות מערכת"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"שינוי הגדרות המערכת"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ההרשאה הזו מתירה לאפליקציה לשנות את הגדרות המערכת."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"גישה להתראות"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"אין בקשות של מיקומים אחרונים"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"הרשאות ברמת אפליקציה"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"שירותי מיקום"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"שימוש במיקום"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"מערכת"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"עדכוני מערכת"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"מתקדם"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"מידע, פרטים משפטיים, איפוס ועוד"</string>
     <string name="firmware_version" msgid="8491753744549309333">"גרסת Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"רמת תיקון האבטחה ב-Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"דגם וחומרה"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"הפעולה תאפס את כל ההעדפות עבור:\n\n"<li>"אפליקציות מושבתות"</li>\n<li>"השבתת התראות של אפליקציות"</li>\n<li>"אפליקציות שהן ברירת המחדל לביצוע פעולות"</li>\n<li>"הגבלות של נתוני רקע לאפליקציות"</li>\n<li>"הגבלת הרשאות"</li>\n\n"נתוני האפליקציות לא יאבדו."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"איפוס אפליקציות"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"העדפות האפליקציה אופסו"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"מחיקת כל הנתונים (איפוס להגדרות היצרן)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"פעולה זו תמחק את כל הנתונים מהיחידה הראשית של הרכב שלך, כולל:\n\n"<li>"חשבון Google שלך"</li>\n<li>"נתוני מערכת ואפליקציות והגדרות"</li>\n<li>"אפליקציות שהורדו"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"יש לך חיבור פעיל כרגע אל החשבונות הבאים:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"קיימים משתמשים נוספים ברכב זה."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"איפוס הרכב"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"לאפס?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"האם למחוק את כל המידע האישי שלך והאפליקציות שהורדת? לא ניתן לבטל את הפעולה!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"מחיקת הכול"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"המחיקה מתבצעת"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"יש להמתין…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"מחיקת כל הנתונים (איפוס להגדרות מקוריות)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"מחיקת כל הנתונים והפרופילים ממערכת המידע והבידור"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"הפעולה הזו תמחק את כל הנתונים ממערכת המידע והבידור של הרכב שלך, כולל:\n\n"<li>"חשבון Google שלך"</li>\n<li>"נתוני מערכת ואפליקציות והגדרות"</li>\n<li>"אפליקציות שהורדו"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"יש לך חיבור פעיל כרגע אל החשבונות הבאים:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"קיימים פרופילים נוספים ברכב זה."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"מחיקת כל הנתונים"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"למחוק את כל הנתונים?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"הפעולה הזו תמחק את כל נתוני הפרופיל האישי, החשבונות והאפליקציות שהורדו במערכת המידע והבידור הזו.\n\nלא ניתן לבטל את הפעולה הזו."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"מחיקת הכול"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"מתבצעת מחיקה"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"יש להמתין…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"תאריך ושעה"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"הגדרת תאריך, שעה, אזור זמן ופורמטים"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"תאריך ושעה אוטומטיים"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"כניסה בתור מנהל מערכת"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"כל ההרשאות של מנהל מערכת"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"הגדרה כמנהל מערכת"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"למשתמש תהיה היכולת למחוק משתמשים, כולל מנהלי מערכת אחרים, ולאפס את המערכת להגדרות היצרן."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"לפרופיל תהיה היכולת למחוק פרופילים, כולל מנהלי מערכת אחרים, ולאפס את המערכת להגדרות היצרן."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"פעולה זו אינה הפיכה."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"כן, הגדרה כמנהל מערכת"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"יצירת משתמשים חדשים"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"יצירת פרופילים חדשים"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ביצוע שיחות טלפון"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"העברת הודעות דרך חבילת הגלישה ברכב"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"התקנת אפליקציות חדשות"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"הסרת התקנה של אפליקציות"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"הוספת משתמש"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"משתמש חדש"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"האם להוסיף משתמש חדש?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"בעת הוספת משתמש חדש, על משתמש זה להגדיר את המרחב שלו."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"כל משתמש יכול לעדכן אפליקציות לכל שאר המשתמשים."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"הגעת למגבלת המשתמשים שניתן להוסיף"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="two">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
-      <item quantity="many">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
-      <item quantity="other">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
-      <item quantity="one">ניתן ליצור רק משתמש אחד.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"הוספת פרופיל"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"פרופיל חדש"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"להוסיף פרופיל חדש?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"בזמן הוספת פרופיל חדש, המשתמש הזה צריך להגדיר את המרחב שלו."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"בכל פרופיל ניתן לעדכן אפליקציות בכל שאר הפרופילים."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"הגעת למספר הפרופילים המרבי"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="two">ניתן ליצור רק <xliff:g id="COUNT">%d</xliff:g> פרופילים.</item>
+      <item quantity="many">ניתן ליצור רק <xliff:g id="COUNT">%d</xliff:g> פרופילים.</item>
+      <item quantity="other">ניתן ליצור רק <xliff:g id="COUNT">%d</xliff:g> פרופילים.</item>
+      <item quantity="one">ניתן ליצור רק פרופיל אחד.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ניסיון היצירה של משתמש חדש נכשל"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"למחוק את המשתמש הזה?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"כל האפליקציות והנתונים יימחקו."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"לא ניתן היה למחוק את המשתמש."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"יצירת הפרופיל החדש נכשלה"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"למחוק את הפרופיל הזה?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"כל האפליקציות והנתונים של הפרופיל הזה יימחקו"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"מחיקת הפרופיל נכשלה."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"הפרופיל הזה יימחק במהלך החלפת פרופילים או הפעלה מחדש של הרכב."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ביטול"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ניסיון חוזר"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"למחוק את המשתמש האחרון?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"לאחר מחיקת המשתמש היחיד שנשאר למכונית הזאת, ייווצר מנהל מערכת חדש."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"כל הנתונים, ההגדרות והאפליקציות ששויכו למשתמש הזה, יימחקו. יהיה עליך להגדיר שוב את המערכת."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"למחוק את הפרופיל היחיד שנותר?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"אם הפרופיל היחיד שנותר ברכב הזה יימחק, כל האפליקציות, ההגדרות והנתונים המשויכים לפרופיל הזה יימחקו."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"לאחר האיפוס ניתן יהיה להגדיר פרופיל חדש."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"בחירת מנהל מערכת חדש"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"יש צורך במנהל מערכת אחד לפחות: לפני שמוחקים את מנהל המערכת הזה, צריך לבחור מחליף."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"לבחירת מנהל מערכת"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"את/ה (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"שם"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"לא מוגדר"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"עריכת שם המשתמש"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"עריכת שם הפרופיל"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"חובה למלא את השדה."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"שם המשתמש שהוזן לא חוקי."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"שם הפרופיל שהוזן לא תקין."</string>
     <string name="users_list_title" msgid="770764290290240909">"משתמשים"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"פרופילים"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"הרשאות הוענקו למשתמש %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"אחסון"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"מוזיקה ואודיו"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"קובצי אודיו"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"מתבצע חישוב…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"גודל האפליקציה"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"נתוני משתמש"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"נתוני הפרופיל"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"מטמון"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"סה\"כ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"פינוי שטח אחסון"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ביטול הסנכרון"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"יש כרגע בעיות בסינכרון. הוא יתחדש תוך זמן קצר."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"פרטיות"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"נתוני הרכב"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"שליטה בגישת האפליקציה למיקום שלך"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"מיקרופון"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"שליטה בגישת האפליקציה למיקרופון"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"נתוני הרכב"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ניהול הפעילויות והמידע שנשמרים ברכב הזה"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"מחיקת הפרופיל שלך"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"מחיקת כל הפרופילים והחשבונות ממערכת המידע והבידור"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"הפעולה הזו לא זמינה לפרופיל שלך"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"אבטחה"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"נעילת מסך"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ללא"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"אישור"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"להסיר את נעילת המסך?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"פעולה זו תאפשר לכל אחד לגשת לחשבון שלך"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"נעילת הפרופיל"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"הגדרת ביטול הנעילה האוטומטי"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"הזנת קוד גישה"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"הזנת סיסמה"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"לשיפור האבטחה, מומלץ להגדיר קוד גישה"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"צריך להיות פחות מ-<xliff:g id="NUMBER">%d</xliff:g> ספרות"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"צריכה להכיל רק את הספרות 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"מנהל המכשיר לא מאפשר להשתמש בקוד גישה שנעשה בו שימוש לאחרונה"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"קודי גישה נפוצים חסומים בידי מנהל ה-IT. יש לנסות קוד גישה אחר."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"קודי גישה נפוצים חסומים בידי מנהל ה-IT. יש לנסות קוד גישה אחר."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"לא ניתן לכלול תו לא חוקי."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"הסיסמה לא חוקית, היא חייבת להיות באורך של ארבעה תווים לפחות."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"מנהל המכשיר לא מאפשר להשתמש בסיסמה שנעשה בה שימוש לאחרונה"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"שגיאה בשמירת הסיסמה"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"סיסמאות נפוצות חסומות בידי מנהל ה-IT. יש לנסות סיסמה אחרת."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"סיסמאות נפוצות חסומות בידי מנהל ה-IT. יש לנסות סיסמה אחרת."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"אין להגדיר רצף ספרות עולה, יורד או חוזר."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"אפשרויות נעילת מסך"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : לפני <xliff:g id="NUM_DAYS">%3$s</xliff:g> ימים"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"הזנת מפתח"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"יציאה ממצב הדגמה"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"יציאה ממצב הדגמה"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"פעולה זו תמחק את חשבון ההדגמה ותבצע למערכת איפוס לנתוני היצרן. כל נתוני המשתמש יאבדו."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"פעולה זו תמחק את חשבון ההדגמה ותבצע למערכת איפוס לנתוני היצרן. כל נתוני הפרופיל יאבדו."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"יציאה ממצב הדגמה"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"סגירה"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"התכונה לא זמינה בזמן הנהיגה"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"לא ניתן להוסיף משתמש בזמן הנהיגה"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"לא ניתן להוסיף פרופיל בזמן הנהיגה"</string>
     <string name="default_search_query" msgid="3137420627428857068">"חיפוש"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant והקול"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"אפליקציית Assistant"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"שימוש בטקסט המופיע במסך"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"מתן הרשאה ל-Assistant לגשת לתוכן המסך"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"שימוש בצילום מסך"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"מתן הרשאה ל-Assistant לגשת לתמונת המסך"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"נשלחו לאחרונה"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"כל האפליקציות"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"פרופילים וחשבונות"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ניהול פרופילים אחרים"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"להוספת פרופיל"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"מחיקת הפרופיל"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"הוספת פרופיל"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 606f5f4..e5a3fdb 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -22,18 +22,14 @@
     <string name="display_settings" msgid="5325515247739279185">"ディスプレイ"</string>
     <string name="brightness" msgid="2919605130898772866">"明るさのレベル"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"明るさの自動調節"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"周囲に合わせて明るさを最適化する"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"環境に合わせて画面の明るさを調節します"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"夜間モード ON"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"画面、タッチスクリーン"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"画面を暗くする、タッチスクリーン、電池"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"画面を暗くする、タッチスクリーン、電池"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"画面を暗くする、夜間、ティント"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間モード"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ネットワークとインターネット"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"モバイル ネットワーク"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
-      <item quantity="other">SIM: <xliff:g id="COUNT_1">%1$d</xliff:g> つ</item>
-      <item quantity="one">SIM: <xliff:g id="COUNT_0">%1$d</xliff:g> つ</item>
+      <item quantity="other">SIM: <xliff:g id="COUNT_1">%1$d</xliff:g> 枚</item>
+      <item quantity="one">SIM: <xliff:g id="COUNT_0">%1$d</xliff:g> 枚</item>
     </plurals>
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"有効 / SIM"</string>
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"無効 / SIM"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"データ使用の警告の設定"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"データ使用の上限の設定"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"設定"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ネットワーク"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB 使用(%2$s~%3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"他のネットワークに接続"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ネットワーク設定"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi を ON にしています…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi を OFF にしています…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ネットワークに接続できませんでした"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ネットワークを追加"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"接続"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"接続しています…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ネットワーク圏外です"</string>
     <string name="wifi_password" msgid="5565632142720292397">"パスワード"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"パスワードを表示する"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ネットワーク名を入力してください。"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"アプリが、<xliff:g id="TIMEOUT">%1$d</xliff:g> 秒間他の Bluetooth デバイスにこのヘッドユニットを表示しようとしています。"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」が <xliff:g id="TIMEOUT">%2$d</xliff:g> 秒間 Bluetooth を ON にして他のデバイスにこのヘッドユニットを表示しようとしています。"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"アプリが、<xliff:g id="TIMEOUT">%1$d</xliff:g> 秒間 Bluetooth を ON にして他のデバイスにこのヘッドユニットを表示しようとしています。"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"他のデバイスには「%1$s」と表示されます"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"マイデバイス"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"以前に接続したデバイス"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s に接続しました"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s との接続を解除しました"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth のペア設定リクエスト"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ペア設定して接続"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth ペア設定コード"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"デフォルトの通知音"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"デフォルトのアラーム音"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"保存"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"アラート音"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"着信音、通知音、アラーム"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"明るさ"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"暗い場所に合わせて画面を調節します"</string>
     <string name="units_settings" msgid="402325305096925886">"単位"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"速度"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"距離"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"すべてのアプリを表示"</string>
     <string name="default_applications" msgid="1558183275638697087">"デフォルトのアプリ"</string>
     <string name="app_permissions" msgid="32799922508313948">"アプリの権限"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>を使用するアプリ"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"アプリのデータアクセスを管理します"</string>
     <string name="applications_settings" msgid="794261395191035632">"アプリ情報"</string>
     <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"強制停止しますか?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"アンインストール"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"このアプリを無効にすると、Android などの他のアプリが正しく動作しなくなる恐れがあります。"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"アプリを無効にする"</string>
-    <string name="not_installed" msgid="4218816013370552746">"このユーザーに対してインストールされていません"</string>
+    <string name="not_installed" msgid="4163454337822508007">"このプロファイルではインストールされません"</string>
     <string name="permissions_label" msgid="2701446753515612685">"権限"</string>
     <string name="notifications_label" msgid="6586089149665170731">"通知"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ストレージとキャッシュ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"バージョン: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"権限が付与されていません"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"リクエストされた権限はありません"</string>
+    <string name="unused_apps" msgid="648471933781010395">"使用していないアプリ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">使用していないアプリ: <xliff:g id="COUNT_1">%d</xliff:g> 個</item>
+      <item quantity="one">使用していないアプリ: <xliff:g id="COUNT_0">%d</xliff:g> 個</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"権限を削除して空き容量を増やす"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s(内部ストレージ)"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"データ使用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"アプリのデータ使用量"</string>
@@ -334,15 +351,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"毎回確認"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"このアプリで開かない"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"対応リンク"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"アプリ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"最近開いたアプリ"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"%1$d 件のアプリをすべて表示"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"権限マネージャ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"アプリのデータアクセスを管理します"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"アシストアプリなど"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"システムなどの設定へのアクセス"</string>
     <string name="special_access" msgid="5730278220917123811">"特別なアプリアクセス"</string>
     <string name="show_system" msgid="4401355756969485287">"システムアプリを表示"</string>
     <string name="hide_system" msgid="8845453295584638040">"システムアプリを表示しない"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"システムアプリを表示しない"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"システム設定の変更"</string>
-    <string name="modify_system_settings_description" msgid="5295023124419592452">"この権限により、アプリはシステム設定を変更できます。"</string>
+    <string name="modify_system_settings_description" msgid="5295023124419592452">"この権限により、アプリはシステム設定を変更できるようになります。"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"通知へのアクセス"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"通知へのアクセス を <xliff:g id="SERVICE">%1$s</xliff:g> に許可しますか?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> がすべての通知を読み取れるようになります。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内の操作ボタンをタップしたりすることも許可されます。\n\nこれにより、アプリがサイレント モード設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを無効にすると、サイレント モードの利用許可も無効になります。"</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを無効にすると、サイレント モードのアクセスも無効になります。"</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"無効にする"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"キャンセル"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"プレミアム SMS へのアクセス"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近の位置情報リクエストはありません"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"アプリレベルの権限"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"位置情報サービス"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"位置情報を使用"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"システム"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"システム アップデート"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"詳細設定"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"概要、規約、リセットなど"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android のバージョン"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android セキュリティ パッチレベル"</string>
     <string name="hardware_info" msgid="3973165746261507658">"モデルとハードウェア"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"この操作により、次の設定がすべてリセットされます。\n\n"<li>"無効化されているアプリ"</li>\n<li>"無効化されているアプリの通知"</li>\n<li>"特定の操作で使用するデフォルトのアプリ"</li>\n<li>"アプリのバックグラウンド データの制限"</li>\n<li>"権限のすべての制限"</li>\n\n"アプリのデータが失われることはありません。"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"アプリをリセット"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"アプリの設定をリセットしました"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"全データを消去(出荷時リセット)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"この操作を行うと、以下のデータを含め、車のヘッドユニットの全データが消去されます。\n\n"<li>"Google アカウント"</li>\n<li>"システムやアプリのデータと設定"</li>\n<li>"ダウンロードしたアプリ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"以下のアカウントにログインしています。"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"この車には他にもユーザーがいます。"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"車をリセット"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"リセットしますか?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"個人情報とダウンロードしたアプリをすべて消去しますか?この操作は元に戻せません。"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"すべて消去"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"消去しています"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"お待ちください..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"全データを消去(出荷時リセット)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"インフォテインメント システムからデータとプロファイルをすべて消去します"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"この操作を行うと、以下のデータを含め、車のインフォテインメント システムから全データが消去されます。\n\n"<li>"Google アカウント"</li>\n<li>"システムやアプリのデータと設定"</li>\n<li>"ダウンロードしたアプリ"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"以下のアカウントにログインしています。"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"この車には他にもプロファイルがあります。"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"すべてのデータを消去"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"すべてのデータを消去しますか?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"この操作を行うと、このインフォテインメント システムにある個人用プロファイルのデータ、アカウント、ダウンロードしたアプリがすべて消去されます。\n\nこの操作を元に戻すことはできません。"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"すべて消去"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"消去しています"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"お待ちください..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日付と時刻"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"日付、時刻、タイムゾーン、フォーマットを設定する"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"日付と時刻を自動設定"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"管理者としてログイン済み"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"すべての管理者権限"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"管理者にする"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"このユーザーは、他の管理者を含むユーザーの削除、システムデータの初期化を行えるようになります。"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"このプロファイルは、他の管理者を含め、プロファイルを削除したり、システムを出荷時の設定にリセットしたりできるようになります。"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"この操作は元に戻せません。"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"はい、管理者にする"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"新しいユーザーの作成"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"新しいプロファイルの作成"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"電話の発信"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"車のモバイルデータを使用した SMS"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"新しいアプリのインストール"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"アプリのアンインストール"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ユーザーを追加"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新しいユーザー"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"新しいユーザーを追加しますか?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"どのユーザーも他のすべてのユーザーに代わってアプリを更新できます。"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ユーザー数が上限に達しました"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">最大 <xliff:g id="COUNT">%d</xliff:g> 人のユーザーを作成できます。</item>
-      <item quantity="one">作成できるユーザーは 1 人のみです。</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"プロファイルを追加"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"新しいプロファイル"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"新しいプロファイルを追加しますか?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"新しいプロファイルを追加したら、そのプロファイルのユーザーは自分のスペースをセットアップする必要があります。"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"どのプロファイルも、他のすべてのプロファイルのアプリを更新できます。"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"プロファイル数の上限に達しました"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">作成できるプロファイルは最大 <xliff:g id="COUNT">%d</xliff:g> 件です。</item>
+      <item quantity="one">作成できるプロファイルは 1 件のみです。</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"新しいユーザーを作成できませんでした"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"このユーザーの削除"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"すべてのアプリとデータが削除されます。"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ユーザーを削除できませんでした。"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"新しいプロファイルを作成できませんでした"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"このプロファイルを削除しますか?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"このプロファイルのアプリとデータはすべて削除されます"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"プロファイルを削除できませんでした。"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"プロファイルを切り替えたり、車を再始動したりすると、このプロファイルは削除されます。"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"閉じる"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"再試行"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"最後のユーザーの削除"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"この車の最後のユーザーを削除すると、新しい管理者ユーザーが作成されます。"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"このユーザーに関連付けられているすべてのデータ、設定、アプリが削除されます。システムの再設定が必要になります。"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"最後のプロファイルを削除しますか?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"この車の最後のプロファイルを削除すると、このプロファイルに関連付けられているデータ、設定、アプリがすべて消去されます。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"リセット後、新しいプロファイルを設定できます。"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"新しい管理者の選択"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"管理者は少なくとも 1 人必要です。この管理者を削除するには、まず代わりの管理者を選択してください。"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"管理者を選択"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"自分(%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名前"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"セットアップしていません"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ユーザー名の編集"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"プロファイル名の編集"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"フィールドは空欄にできません。"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"入力されたユーザー名が無効です。"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"入力されたプロファイル名は無効です。"</string>
     <string name="users_list_title" msgid="770764290290240909">"ユーザー"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"プロファイル"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s さんに権限が付与されました"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ストレージ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"音楽と音声"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"音声ファイル"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"計算しています…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"アプリのサイズ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ユーザーデータ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"プロファイル データ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"キャッシュ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"合計"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ストレージを消去"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"同期をキャンセル"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"現在同期で問題が発生しています。しばらくお待ちください。"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"プライバシー"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"車のデータ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"アプリの位置情報アクセスを管理"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"マイク"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"アプリのマイクアクセスを管理します"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"車のデータ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"この車に保存されているアクティビティと情報を管理します"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"プロファイルを削除"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"インフォテインメント システムからプロファイルとアカウントを消去します"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"このプロファイルではこの操作は行えません"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"セキュリティ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"画面ロック"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"なし"</string>
@@ -579,11 +621,13 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"画面ロックを解除しますか?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"解除すると、誰でもアカウントにアクセスできるようになります"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"プロファイルのロック"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"自動ロック解除を設定します"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN の入力"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"パスワードの入力"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"セキュリティ強化のために PIN を設定"</string>
     <string name="confirm_your_pin_header" msgid="9096581288537156102">"PIN の再入力"</string>
-    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN は 4 桁以上で作成してください"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN は 4 桁以上にしてください"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"PIN が無効です。4 桁以上にしてください。"</string>
     <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN が一致しません"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"PIN の保存中にエラーが発生しました"</string>
@@ -597,12 +641,12 @@
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"確認"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"4 文字以上で入力してください"</string>
     <string name="lockpassword_password_too_short" msgid="6681218025001328405">"<xliff:g id="COUNT">%d</xliff:g> 文字以上にしてください"</string>
-    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN は <xliff:g id="COUNT">%d</xliff:g> 桁以上で作成してください"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN は <xliff:g id="COUNT">%d</xliff:g> 桁以上必要です"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"<xliff:g id="NUMBER">%d</xliff:g> 文字未満にしてください"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> 桁未満にしてください"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"使用できるのは 0~9 の数字のみです。"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"デバイス管理により、最近使用した PIN は使用できません"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"一般的な PIN は IT 管理者によってブロックされています。別の PIN をお試しください。"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"一般的な PIN は IT 管理者によってブロックされています。別の PIN をお試しください。"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"無効な文字があります。"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"パスワードが無効です。4 文字以上で入力してください。"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"デバイス管理により、最近使用したパスワードは使用できません"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"パスワードの保存中にエラーが発生しました"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"一般的なパスワードは IT 管理者によってブロックされています。別のパスワードをお試しください。"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"一般的なパスワードは IT 管理者によってブロックされています。別のパスワードをお試しください。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"一連の数字を昇順や降順にしたり、繰り返したりすることはできません。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"画面ロックの方法"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> 日前"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter キー"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"デモを終了"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"デモモードの終了"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"デモアカウントが削除され、システムが出荷時の設定にリセットされます。すべてのユーザーデータは失われます。"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"この操作を行うと、デモアカウントが削除され、システムが出荷時の設定にリセットされます。プロファイル データはすべて失われます。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"デモを終了"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"閉じる"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"この機能は運転中は利用できません"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"運転中はユーザーを追加できません"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"運転中はプロファイルを追加できません"</string>
     <string name="default_search_query" msgid="3137420627428857068">"検索"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"アシスタントと音声"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"アシストアプリ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"画面のテキストを使用"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"画面のコンテンツへのアクセスをアシストアプリに許可します"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"スクリーンショットを使用"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"画面の画像へのアクセスをアシストアプリに許可します"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"最近送信された通知"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"すべてのアプリ"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"プロファイルとアカウント"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"他のプロファイルを管理"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"プロファイルを追加"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"このプロファイルを削除"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"プロファイルを追加"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index ce3b44f..e1a4d00 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ეკრანი"</string>
     <string name="brightness" msgid="2919605130898772866">"სიკაშკაშის დონე"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"მორგებადი სიკაშკაშე"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"სიკაშკაშის არსებულ სინათლეზე მორგება"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ეკრანის სიკაშკაშის გარემოზე მორგება"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ღამის განათება ჩართულია"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ეკრანი, სენსორული ეკრანი"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ეკრანის გამქრქალება, სენსორული ეკრანი, ბატარეა"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ეკრანის გამქრქალება, სენსორული ეკრანი, ბატარეა"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ეკრანის გამქრქალება, ღამე, ელფერი"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ღამის რეჟიმი"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ქსელი და ინტერნეტი"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"მობილური ქსელი"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"მონაცემთა მოხმარების გაფრთხილების დაყენება"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"მონაცემთა მოხმარების ლიმიტის დაყენება"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"დაყენება"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ქსელი"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"გამოყენებულია %1$d მბაიტი, %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"სხვა ქსელთან დაკავშირება"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ქსელის პარამეტრები"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ირთვება…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi-ის გამორთვა…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ქსელთან დაკავშირება ვერ ხერხდება"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ქსელის დამატება"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"დაკავშირება"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"უკავშირდება…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ქსელი მისაწვდომ რადიუსში არ არის"</string>
     <string name="wifi_password" msgid="5565632142720292397">"პაროლი"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"პაროლის გამოჩენა"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"გთხოვთ, შეიყვანოთ ქსელის სახელი"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"აპს სურს, გახადოს თქვენი სტერეოსისტემა ხილვადი სხვა Bluetooth მოწყობილობებისთვის <xliff:g id="TIMEOUT">%1$d</xliff:g> წამით."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს სურს, ჩართოს Bluetooth და გახადოს თქვენი სტერეოსისტემა ხილვადი სხვა მოწყობილობებისთვის <xliff:g id="TIMEOUT">%2$d</xliff:g> წამით."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"აპს სურს, ჩართოს Bluetooth და გახადოს თქვენი სტერეოსისტემა ხილვადი სხვა მოწყობილობებისთვის <xliff:g id="TIMEOUT">%1$d</xliff:g> წამით."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"სხვა მოწყობილობებისთვის გამოჩნდება როგორც %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ჩემი მოწყობილობები"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"წარსულში დაკავშირებული"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s დაკავშირებულია"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s-ის კავშირი გაწყვეტილია"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth დაწყვილების მოთხოვნა"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"დაწყვილება და შეერთება"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-ის დაკავშირების კოდი"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"შეტყობინების ნაგულისხმევი ხმა"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"მაღვიძარას ნაგულ. ხმა"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"შენახვა"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"გაფრთხილების ხმები"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ზარი, შეტყობინებები, მაღვიძარა"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"სიკაშკაშე"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ეკრანის დაბალ განათებაზე მორგება"</string>
     <string name="units_settings" msgid="402325305096925886">"ერთეულები"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"სიჩქარე"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"მანძილი"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"ყველა აპის ჩვენება"</string>
     <string name="default_applications" msgid="1558183275638697087">"ნაგულისხმევი აპები"</string>
     <string name="app_permissions" msgid="32799922508313948">"აპის ნებართვები"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"აპები, რომელთა მიერაც გამოიყენება <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"მართეთ აპების წვდომა თქვენს მონაცემებზე"</string>
     <string name="applications_settings" msgid="794261395191035632">"აპის ინფო"</string>
     <string name="force_stop" msgid="2153183697014720520">"ძალით შეჩერება"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"გსურთ ძალით შეჩერება?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"დეინსტალაცია"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ამ აპის გათიშვის შემთხვევაში, Android-მა და სხვა აპებმა შეიძლება გამართულად აღარ იმუშაოს."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"აპის გათიშვა"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ამ მომხმარებლისთვის დაყენებული არ არის"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ამ პროფილისთვის არ არის ინსტალირებული"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ნებართვები"</string>
     <string name="notifications_label" msgid="6586089149665170731">"შეტყობინებები"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"მეხსიერება და ქეში"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ვერსია: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ნებართვები არ არის გაცემული"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ნებართვებზე მოთხოვნები არ არის"</string>
+    <string name="unused_apps" msgid="648471933781010395">"გამოუყენებელი აპები"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> გამოუყენებელი აპი</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> გამოუყენებელი აპი</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ნებართვების ამოშლა და ადგილის გათავისუფ."</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s შიდა მეხსიერებაში"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"მონაცემთა მოხმარება"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"აპის მონაცემთა გამოყენება"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ყოველ ჯერზე კითხვა"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"არ გახსნა ამ აპში"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"მხარდაჭერილი ბმულები"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"აპები"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ახლახან გახსნილი"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"%1$d-ვე აპის ნახვა"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"ნებართვების მმართველი"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"მართეთ აპების წვდომა თქვენს მონაცემებზე"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"ასისტენტისა და სხვებისთვის"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"სისტემაზე და სხვა პარამეტრებზე"</string>
     <string name="special_access" msgid="5730278220917123811">"აპების სპეციალური წვდომა"</string>
     <string name="show_system" msgid="4401355756969485287">"სისტემის ჩვენება"</string>
     <string name="hide_system" msgid="8845453295584638040">"სისტემური პროცესების დამალვა"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"სისტემის აპების დამალვა"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"სისტემის პარამეტრების შეცვლა"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ეს ნებართვა უფლებას აძლევს აპს, შეცვალოს სისტემის პარამეტრები."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"შეტყობინებებზე წვდომა"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"მდებარეობის ბოლოდროინდელი მოთხოვნები არ არის"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ნებართვები აპის დონეზე"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"მდებარეობის სერვისები"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"მდებარეობის გამოყენება"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"სისტემა"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"სისტემის განახლებები"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"გაფართოებული"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ინფორმაცია, სამართლებრივი ინფორმაცია, გადაყენება და სხვა"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-ის ვერსია"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-ის უსაფრთხოების ნაწილაკის დონე"</string>
     <string name="hardware_info" msgid="3973165746261507658">"მოდელი და აპარატურა"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ეს ქმედება გადააყენებს ყველა პარამეტრს, რომელიც ეხება:\n\n"<li>"გათიშულ აპებს"</li>\n<li>"აპების გათიშულ შეტყობინებებს"</li>\n<li>"ქმედებებზე მიმაგრებულ ნაგულისხმევ აპლიკაციებს"</li>\n<li>"ფონურ რეჟიმში მონაცემთა გამოყენების შეზღუდვებს აპებისთვის"</li>\n<li>"ნებისმიერი ნებართვის შეზღუდვას"</li>\n\n"აპების მონაცემები არ დაიკარგება."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"აპების გადაყენება"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"აპების პარამეტრები გადაყენებულია"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ყველა მონაცემის ამოშლა (ქარხნული პარამეტრების დაბრუნება)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ეს ქმედება ამოშლის ყველა მონაცემს თქვენი ავტომობილის საინფორმაციო-გასართობი სისტემიდან. მათ შორის, ამოიშლება შემდეგი:\n\n"<li>"თქვენი Google ანგარიში"</li>\n<li>"სისტემის/აპების მონაცემები და პარამეტრები"</li>\n<li>"ჩამოტვირთული აპები"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ამჟამად შესული ხართ შემდეგ ანგარიშებში:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ამ ავტომობილს იყენებენ სხვა მომხმარებლებიც."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ავტომობილის გადაყენება"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"გსურთ გადაყენება?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"გსურთ მთელი თქვენი პერსონალური ინფორმაციისა და ჩამოტვირთული აპების წაშლა? ამ მოქმედების გაუქმებას ვეღარ მოახერხებთ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ყველაფრის ამოშლა"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"მიმდინარეობს ამოშლა"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"გთხოვთ, მოითმინოთ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ყველა მონაცემის ამოშლა (ქარხ. პარამეტ. დაბრ.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"გართობის/საინფორმაციო სისტემიდან ყველა მონაცემისა და პროფილის ამოშლა"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ეს მოქმედება ამოშლის ყველა მონაცემს თქვენი ავტომობილის გართობის/საინფორმაციო სისტემიდან. მათ შორის, ამოიშლება შემდეგი:\n\n"<li>"თქვენი Google ანგარიში"</li>\n<li>"სისტემისა და აპების მონაცემები და პარამეტრები"</li>\n<li>"ჩამოტვირთული აპები"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ამჟამად შესული ხართ შემდეგ ანგარიშებში:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ამ ავტომობილზე სხვა პროფილებიც არის."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ყველა მონაცემის ამოშლა"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"გსურთ ყველა მონაცემის ამოშლა?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ეს მოქმედება ამ გართობის/საინფორმაციო სისტემიდან ამოშლის თქვენი პირადი პროფილის ყველა მონაცემს, ანგარიშსა და ჩამოტვირთულ აპს.\n\nამ მოქმედებას ვერ გააუქმებთ."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ყველაფრის ამოშლა"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"მიმდინარეობს ამოშლა"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"გთხოვთ, მოითმინოთ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"თარიღი და დრო"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"თარიღის, დროის, დროის ზონის და ფორმატების დაყენება"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ავტომატური თარიღი და დრო"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"შესული ხართ, როგორც ადმინისტრატორი"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ადმინისტრატორის ყველა ნებართვა"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ადმინისტრატორად დანიშვნა"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"მომხმარებელი შეძლებს სხვა მომხმარებლების (მათ შორის, ადმინისტრატორების) წაშლას და სისტემის დაბრუნებას ქარხნულ პარამეტრებზე."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"პროფილი შეძლებს სხვა პროფილების (მათ შორის, სხვა ადმინისტრატორების) წაშლას და სისტემის დაბრუნებას ქარხნულ პარამეტრებზე."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ამ ქმედებას ვერ გააუქმებთ."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"დიახ, დაინიშნოს ადმინისტრატორად"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ახალი მომხმარებლების შექმნა"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ახალი პროფილების შექმნა"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"სატელეფონო ზარების განხორციელება"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS მიმოცვლა მანქანის მობ. ინტ.-ით"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ახალი აპების ინსტალაცია"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"აპების დეინსტალაცია"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"მომხმარებლის დამატება"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ახალი მომხმარებელი"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"დაემატოს ახალი მომხმარებელი?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ნებისმიერ მომხმარებელს შეუძლია აპები ყველა სხვა მომხმარებლისათვის განაახლოს."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"მიღწეულია მომხმარებელთა ლიმიტი"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">შესაძლებელია მაქსიმუმ <xliff:g id="COUNT">%d</xliff:g> მომხმარებლის შექმნა.</item>
-      <item quantity="one">შესაძლებელია მხოლოდ ერთი მომხმარებლის შექმნა.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"პროფილის დამატება"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ახალი პროფილი"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"დაემატოს ახალი პროფილი?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ახალი პროფილის დამატებისას, მოცემულ მომხმარებელს საკუთარი სივრცის გამართვა მოუწევს."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ნებისმიერ პროფილს შეუძლია, აპები ყველა სხვა პროფილისთვის განაახლოს."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"პროფილების ლიმიტი მიღწეულია"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">შესაძლებელია <xliff:g id="COUNT">%d</xliff:g>-მდე პროფილის შექმნა.</item>
+      <item quantity="one">შესაძლებელია მხოლოდ ერთი პროფილის შექმნა.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ახალი მომხმარებლის შექმნა ვერ მოხერხდა"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"წაიშალოს ეს მომხმარებელი?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"წაიშლება ყველა აპი და მონაცემი."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"მომხმარებლის წაშლა ვერ მოხერხდა."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ახალი პროფილის შექმნა ვერ მოხერხდა"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"წაიშალოს ეს პროფილი?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ამ პროფილის ყველა აპი და მონაცემი წაიშლება"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"პროფილის წაშლა ვერ მოხერხდა."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ეს პროფილი წაიშლება, როცა სხვა პროფილზე გადართავთ ან ავტომობილს ხელახლა დაქოქავთ."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"დახურვა"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ხელახლა ცდა"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ამოიშალოს ბოლო მომხმარებელი?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ამ მანქანის ერთადერთი დარჩენილი მომხმარებლის ამოშლის შემდეგ შეიქმნება ახალი ადმინისტრატორი მომხმარებელი."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"წაიშლება ამ მომხმარებელთან დაკავშირებული ყველა მონაცემი, პარამეტრი და აპი. სისტემის დაყენება ხელახლა მოგიწევთ."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"წაიშალოს ბოლო დარჩენილი პროფილი?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"თუ ამ ავტომობილზე ერთადერთ დარჩენილ პროფილს წაშლით, მასთან დაკავშირებული ყველა მონაცემი, პარამეტრი და აპი ამოიშლება."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"გადაყენების შემდეგ შეგიძლიათ, ახალი პროფილი დააყენოთ."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"აირჩიეთ ახალი ადმინისტრატორი"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"საჭიროა მინიმუმ ერთი ადმინისტრატორი. ამ ადმინისტრატორის წასაშლელად ჯერ აირჩიეთ მისი შემცვლელი."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ადმინისტრატორის არჩევა"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"თქვენ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"სახელი"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"არ არის დარეგულირებული"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"მომხმარებლის სახელის რედაქტირება"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"პროფილის სახელის რედაქტირება"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ველი არ უნდა იყოს ცარიელი."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"მომხმარებლის სახელი შეყვანილია არასწორად."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"პროფილის შეყვანილი სახელი არასწორია."</string>
     <string name="users_list_title" msgid="770764290290240909">"მომხმარებლები"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"პროფილები"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ის ნებართვები"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"მეხსიერება"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"მუსიკა და აუდიო"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"აუდიოფაილები"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"მიმდინარეობს გამოთვლა…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"აპის ზომა"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"მომხმარებლის მონაცემები"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"პროფილის მონაცემები"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ქეში"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"სულ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"მონაცემთა საცავის გასუფთავება"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"სინქრონიზაციის გაუქმება"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ამჟამად სინქრონიზაცია ვერ ხერხდება პრობლემის გამო. ეს ფუნქცია მალე აღდგება."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"კონფიდენციალურობა"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ავტომობილის მონაცემები"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"თქვენს მდებარეობაზე აპების წვდომის კონტროლი"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"მიკროფონი"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"მიკროფონზე აპების წვდომის კონტროლი"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ავტომობილის მონაცემები"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ამ ავტომობილზე შენახული აქტივობებისა და ინფორმაციის მართვა"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"თქვენი პროფილის წაშლა"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"გართობის/საინფორმაციო სისტემიდან თქვენი პროფილისა და ანგარიშების ამოშლა"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ეს მოქმედება თქვენი პროფილისთვის მიუწვდომელია"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"უსაფრთხოება"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ეკრანის დაბლოკვა"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"არცერთი"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"კარგი"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"გაუქმდეს ეკრანის დაბლოკვა?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ეს ქმედება ხელმისაწვდომს გახდის თქვენს ანგარიშს ყველასთვის"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"პროფილის ჩაკეტვა"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ავტომატური განბლოკვის დაყენება"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"შეიყვანეთ PIN-კოდი"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"შეიყვანეთ პაროლი"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"უსაფრთხოებისთვის, დააყენეთ PIN-კოდი"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"უნდა შეიცავდეს <xliff:g id="NUMBER">%d</xliff:g> ციფრზე ნაკლებს"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"უნდა შეიცავდეს მხოლოდ ციფრებს 0-დან 9-მდე."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ბოლოდროინდელი PIN-კოდის ხელახლა გამოყენება მოწყობილობის ადმინისტრატორის მიერ ნებადართული არ არის"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ხშირად გამოყენებული PIN-კოდები თქვენი IT ადმინისტრატორის მიერ დაბლოკილია. ცადეთ სხვა PIN-კოდი."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ხშირად გამოყენებული PIN-კოდები თქვენი IT ადმინისტრატორის მიერ დაბლოკილია. ცადეთ სხვა PIN-კოდი."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"არ უნდა შეიცავდეს არასწორ სიმბოლოს."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"პაროლი არასწორია, უნდა შეიცავდეს მინიმუმ 4 სიმბოლოს."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ბოლოდროინდელი პაროლის ხელახლა გამოყენება მოწყობილობის ადმინისტრატორის მიერ ნებადართული არ არის"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"პაროლის შენახვისას მოხდა შეცდომა"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ხშირად გამოყენებული პაროლები თქვენი IT ადმინისტრატორის მიერ დაბლოკილია. ცადეთ სხვა პაროლი."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ხშირად გამოყენებული პაროლები თქვენი IT ადმინისტრატორის მიერ დაბლოკილია. ცადეთ სხვა პაროლი."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ციფრების ზრდადი, კლებადი ან გამეორებადი მიმდევრობის გამოყენება ნებადართული არ არის."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ეკრანის დაბლოკვის ვარიანტები"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> დღის წინ"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"კლავიში Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"დემოს დატოვება"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"დემო-რეჟიმის დატოვება"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ეს ქმედება წაშლის დემო-ანგარიშს და სისტემის ქარხნულ მონაცემებს აღადგენს. სამომხმარებლო მონაცემები მთლიანად წაიშლება."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ეს მოქმედება წაშლის დემო-ანგარიშს და სისტემის ქარხნულ მონაცემებს აღადგენს. პროფილის მონაცემები მთლიანად წაიშლება."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"დემოს დატოვება"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"დახურვა"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ფუნქცია მიუწვდომელია მანქანის მართვისას"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"მანქანის მართვისას მომხმარებლის დამატება ვერ მოხერხდება"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"მანქანის მართვისას პროფილს ვერ დაამატებთ"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ძიება"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"ასისტენტი და Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"ასისტენტის აპი"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ეკრანის ტექსტის გამოყენება"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ასისტენტისთვის ეკრანის კონტენტზე წვდომის დაშვება"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ეკრანის ანაბეჭდის გამოყენება"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ასისტენტისთვის ეკრანის სურათზე წვდომის დაშვება"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ახლახან გაგზავნილი"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"ყველა აპი"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"პროფილები და ანგარიშები"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"სხვა პროფილების მართვა"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"პროფილის დამატება"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ამ პროფილის წაშლა"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"პროფილის დამატება"</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 0745f7a..f16d27e 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -21,13 +21,9 @@
     <string name="more_settings_label" msgid="3867559443480110616">"Тағы"</string>
     <string name="display_settings" msgid="5325515247739279185">"Дисплей"</string>
     <string name="brightness" msgid="2919605130898772866">"Жарықтық деңгейі"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"Жарықтықты бейімдеу"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Жарықтық деңгейін жарықтандыруға сәйкес оңтайландыру"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"Бейімделгіш жарықтық"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Экранның жарықтығын қоршаған ортаға қарай реттеу"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Түнгі жарық режимі қосулы"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"экран, сенсорлық экран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"экранды күңгірттеу, сенсорлық экран, батарея"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"экранды күңгірттеу, сенсорлық экран, батарея"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"экранды күңгірттеу, түн, реңк"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Түнгі режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Желі және интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобильдік желі"</string>
@@ -39,7 +35,7 @@
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Іске қосылмаған/SIM картасы"</string>
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"Іске қосулы/Жүктеп алынған SIM картасы"</string>
     <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Өшірулі/Жүктеп алынған SIM картасы"</string>
-    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Тағы қосу"</string>
+    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Тағы енгізу"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильдік интернет"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Деректерге мобильдік желі арқылы кіру"</string>
     <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобильдік интернет өшірілсін бе?"</string>
@@ -50,7 +46,7 @@
     <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
     <string name="roaming_summary" msgid="7476127740259728901">"Роуминг кезінде дерек тасымалдау қызметтеріне қосылу"</string>
     <string name="roaming_alert_title" msgid="4433901635766775763">"Деректер роумингіне рұқсат етілсін бе?"</string>
-    <string name="roaming_warning" msgid="4908184914868720704">"Роуминг үшін ақы алынуы мүмкін."</string>
+    <string name="roaming_warning" msgid="4908184914868720704">"Роуминг ақылары алынуы мүмкін."</string>
     <string name="data_usage_settings" msgid="7877132994777987848">"Дерек трафигі"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"Негізгі деректер"</string>
     <string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> пайдаланылды."</string>
@@ -68,22 +64,26 @@
     <string name="carrier_and_update_now_text" msgid="9058821833613481573">"Жаңа ғана <xliff:g id="ID_1">^1</xliff:g> арқылы жаңартылды."</string>
     <string name="no_carrier_update_now_text" msgid="5953142546373783189">"Жаңа ғана жаңартылды."</string>
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Жоспарды көру"</string>
-    <string name="app_data_usage" msgid="3878609885080232877">"Қолданбаның дерек шығыны"</string>
+    <string name="app_data_usage" msgid="3878609885080232877">"Қолданбаның дерек трафигі"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"шектеулі"</string>
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Пайдалану циклін бастапқы күйге қайтару күні"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Әр айдағы күн:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Орнату"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Дерек ескертуі және шегі"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"Қолданбаның дерек шығыны циклі"</string>
-    <string name="set_data_warning" msgid="6628236612886588097">"Дерек шығыны туралы ескерту"</string>
-    <string name="data_warning" msgid="116776633806885370">"Дерек шығыны туралы ескерту"</string>
-    <string name="set_data_limit" msgid="7136539812414500084">"Дерек шығынын шектеу"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Дерек ескертуін белгілеу"</string>
+    <string name="data_warning" msgid="116776633806885370">"Дерек ескертуі"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Дерек шегін белгілеу"</string>
     <string name="data_limit" msgid="227338836292511425">"Дерек шегі"</string>
     <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Дерек трафигін шектеу"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Орнатқан шекке жеткеннен кейін, көліктегі құрылғы мобильдік деректерді өшіреді.\n\nҚұрылғы деректерді пайдалану шегін белгілейтіндіктен және оператор трафикті басқаша есептеуі мүмкін болғандықтан, қатаңырақ шек қойған жөн."</string>
-    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Дерек шығыны туралы ескерту"</string>
+    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Дерек трафигі туралы ескертуді орнату"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Дерек трафигі шегін орнату"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Орнату"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"БЖӨ желісі"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d МБ қолданылды %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Басқа желіге қосылу"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Желі параметрлері"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi байланысын қосуда…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi байланысы өшірілуде…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Желіге қосылмады"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Желі қосу"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Қосылу"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Қосылуда…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Желі байланыс аясында емес."</string>
     <string name="wifi_password" msgid="5565632142720292397">"Құпия сөз"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Құпия сөзді көрсету"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Желі атауын енгізіңіз."</string>
@@ -118,7 +120,7 @@
     <string name="link_speed" msgid="7868861844075624445">"%1$d Мб/с"</string>
     <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГГц"</string>
     <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
-    <string name="wifi_network_detail" msgid="9070182553555487360">"Желі мәліметі"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Желі деректері"</string>
     <string name="wifi_mac_address" msgid="1466178247802349180">"MAC мекенжайы"</string>
     <string name="wifi_ip_address_title" msgid="300539799594024884">"IP мекенжайы"</string>
     <string name="wifi_subnet_mask" msgid="6238171812379380608">"Қосалқы желі маскасы"</string>
@@ -127,7 +129,7 @@
     <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi параметрлері"</string>
     <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi желісін автоматты түрде қосу"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi бұрын сақталған жоғары сапалы желі (мысалы, үйдегі желі) аймағында қайта қосылады."</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi бұрын сақталған жоғары сапалы желі аймағында (үйдегідей) қайта қосылады"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Орынды анықтау функциясы өшірулі болғандықтан, қолжетімді емес. "<annotation id="link">"Орынды анықтау"</annotation>" қызметін қосыңыз."</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi іздеу функциясы қосылсын ба?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Қосу"</string>
@@ -168,7 +170,7 @@
     <string name="bluetooth_device" msgid="3178478829314083240">"Атаусыз құрылғы"</string>
     <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Жұпталған құрылғылар"</string>
     <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Жаңа құрылғымен жұптау"</string>
-    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth қосылады."</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Жұптау үшін Bluetooth функциясы қосылады."</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Құрылғы ажыратылсын ба?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Көлігіңіз <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысынан ажыратылады."</string>
     <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Көліктің Bluetooth мекенжайы: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Қолданба құлақаспабыңызды басқа Bluetooth құрылғыларына <xliff:g id="TIMEOUT">%1$d</xliff:g> секунд көрсетуді сұрайды."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы Bluetooth қызметін қосып, құлақаспабыңызды басқа құрылғыларға <xliff:g id="TIMEOUT">%2$d</xliff:g> секунд көрсетуді сұрайды."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Қолданба Bluetooth қызметін қосып, құлақаспабыңызды басқа құрылғыларға <xliff:g id="TIMEOUT">%1$d</xliff:g> секунд көрсетуді сұрайды."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Басқа құрылғыларға %1$s деп көрінеді."</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Құрылғыларым"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Бұған дейін жалғанғандар"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s жалғанды"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ажыратылды"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth жұптау сұрауы"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Жұптау және жалғау"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth жұптау коды"</string>
@@ -226,8 +233,12 @@
     <string name="alarm_volume_title" msgid="840384014895796587">"Дабыл"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"Телефон рингтоны"</string>
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Әдепкі хабарландыру дыбысы"</string>
-    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Әдепкі оятқыш дыбысы"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Әдепкі оятқыш сигналы"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Сақтау"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Ескерту дыбыстары"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Рингтон, хабарландырулар, дабыл"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Жарықтық"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Экранды көмескі жарыққа реттеу"</string>
     <string name="units_settings" msgid="402325305096925886">"Өлшем бірліктер"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Жылдамдық"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Арақашықтық"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Барлық қолданбаларды көрсету"</string>
     <string name="default_applications" msgid="1558183275638697087">"Әдепкі қолданбалар"</string>
     <string name="app_permissions" msgid="32799922508313948">"Қолданба рұқсаттары"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Рұқсаты бар қолданбалар: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Қолданбалардың деректерді пайдалану рұқсатын басқару"</string>
     <string name="applications_settings" msgid="794261395191035632">"Қолданба ақпараты"</string>
     <string name="force_stop" msgid="2153183697014720520">"Қолмен тоқтату"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Қолмен тоқтатылсын ба?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Жою"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Бұл қолданбаны өшірсеңіз, Android жүйесі мен басқа қолданбалар тиісінше жұмыс істемеуі мүмкін."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Қолданбаны өшіру"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Бұл пайдаланушы үшін орнатылмаған"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Бұл профиль үшін орнатылмады."</string>
     <string name="permissions_label" msgid="2701446753515612685">"Рұқсаттар"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Хабарландырулар"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Жад және кэш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Нұсқа: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ешқандай рұқсат берілмеген"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ешқандай рұқсат сұралмаған"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Пайдаланылмайтын қолданбалар"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> пайдаланылмайтын қолданба</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> пайдаланылмайтын қолданба</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Рұқсаттарды өшіру және орын босату"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"Ішкі жад: %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Деректер трафигі"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Қолданбаның дерек шығыны"</string>
@@ -309,7 +326,7 @@
     <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Көмекші және дауыспен енгізу"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"Көмекші қолданба"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"Экрандағы мәтінді пайдалану"</string>
-    <string name="assist_access_context_summary" msgid="2374281280599443774">"Көмекші қолданбаға экрандағы мәтінді пайдалануға рұқсат ету"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Көмекші қолданбаға мәтін сияқты экран мазмұнына кіруге рұқсат ету"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Скриншотты пайдалану"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Көмекші қолданбаға экран кескінін пайдалануға рұқсат ету"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Дауыспен енгізу"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Әрдайым сұрау"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Осы қолданбада ашпау"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Қолдау көрсетілетін сілтемелер"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Қолданбалар"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Соңғы ашылған қолданбалар"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Барлық %1$d қолданбаны көру"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Рұқсат басқарушысы"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Қолданбалардың деректерді пайдалану рұқсатын басқару"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant және басқа қолданбалар үшін"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Жүйеге және басқа параметрлерге"</string>
     <string name="special_access" msgid="5730278220917123811">"Қолданба пайдалануға арналған арнайы рұқсат"</string>
     <string name="show_system" msgid="4401355756969485287">"Жүйені көрсету"</string>
     <string name="hide_system" msgid="8845453295584638040">"Жүйені жасыру"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Жүйелік қолданбаларды жасыру"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Жүйе параметрлерін өзгерту"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Бұл рұқсат қолданбаға жүйе параметрлерін өзгертуге рұқсат етеді."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Хабарландыруларды пайдалану"</string>
@@ -352,13 +377,18 @@
     <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi желісін басқару"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi желісін басқару функциясы қолданбаға Wi-Fi желісін қосуға немесе өшіруге, Wi-Fi желілерін іздеуге және оларға жалғануға, желілерді енгізуге не өшіруге немесе тек жергілікті хотспотты іске қосуға рұқсат етеді."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"Тағы"</string>
-    <string name="location_settings_title" msgid="901334356682423679">"Локация"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Орналасу"</string>
     <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Соңғы орынды анықтау сұраулары"</string>
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Орналасқан жерді анықтау сұраулары жақында жасалмаған"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Қолданба деңгейіндегі рұқсаттар"</string>
-    <string name="location_settings_services_title" msgid="1186133632690970468">"Локация қызметтері"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Орынды анықтау қызметтері"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Геодеректі пайдалану"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Жүйе"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Жүйенің жаңа нұсқалары"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Қосымша"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Ақпарат, құқықтық ақпарат, бастапқы күйге қайтару және т.б."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android нұсқасы"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android қауіпсіздік түзетуінің деңгейі"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Үлгі және жабдық"</string>
@@ -390,7 +420,7 @@
     <string name="status_serial_number" msgid="9158889113131907656">"Сериялық нөмірі"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"Жабдық нұсқасы"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
-    <string name="settings_license_activity_title" msgid="8499293744313077709">"Үшінші тарап лицензиялары"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"Үшінші тараптық лицензиялар"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Лицензияларды жүктеу барысында ақау орын алды."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Жүктелуде…"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Келесілердің параметрлері бастапқы күйіне қайтарылады:\n\n"<li>"өшірілген қолданбалар;"</li>\n<li>"қолданбалардың өшірілген хабарландырулары;"</li>\n<li>"әрекеттерге арналған әдепкі қолданбалар;"</li>\n<li>"фондық режимдегі дерек тасымалын шектеу;"</li>\n<li>"барлық рұқсат шектеулері."</li>\n\n"Қолданба деректері жоғалмайды."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Бастапқы күйге қайтару"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Қолданба параметрлері бастапқы күйіне қайтарылды."</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Барлық деректі өшіру (зауыттық мәнге қайтару)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Көліктің басты құрылғысынан барлық деректер өшеді, оның ішінде:\n\n"<li>"Google есептік жазбаңыз;"</li>\n<li>"жүйе мен қолданба деректері және параметрлері;"</li>\n<li>"жүктеп алынған қолданбалар."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Сіз келесі есептік жазбаларға кірдіңіз:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Бұл көлікте басқа пайдаланушылар бар."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Көлікті бастапқы күйге қайтару"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Бастапқы күйге қайтарылсын ба?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Барлық жеке ақпаратыңыз бен жүктеп алынған қолданбаларыңыз өшірілсін бе? Бұл әрекетті кері қайтару мүмкін болмайды!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Барлығын өшіру"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Өшірілуде"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Күте тұрыңыз…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Барлық деректерді өшіру (зауыттық параметрлерге қайтару)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ақпарат және ойын-сауық жүйесінен барлық дерек пен профильдерді өшіру"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Көліктің ақпарат және ойын-сауық жүйесіндегі барлық дерек өшіріледі, оның ішінде:\n\n"<li>"Google есептік жазбаңыз;"</li>\n<li>"жүйе және қолданба деректері және параметрлері;"</li>\n<li>"жүктеп алынған қолданбалар."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Сіз келесі есептік жазбаларға кірдіңіз:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Бұл көлікте басқа профильдер бар."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Барлық деректі өшіру"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Барлық дерек өшірілсін бе?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ол осы ақпарат және ойын-сауық жүйесіндегі жеке профиль деректерінің, есептік жазбалардың және жүктеп алынған қолданбалардың барлығын жояды.\n\nБұл әрекет кері қайтарылмайды."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Барлығын өшіру"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Өшірілуде"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Күте тұрыңыз…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Күн және уақыт"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Күнін, уақытын, уақыт белдеуін, форматтарды реттеу"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Автоматты күн мен уақыт"</string>
@@ -437,7 +468,7 @@
     <string name="zone_auto" msgid="3701878581920206160">"Aвтоматты уақыт белдеуі"</string>
     <string name="zone_auto_summary" msgid="4345856882906981864">"Желідегі уақыт белдеуін қолдану"</string>
     <string name="date_time_24hour_title" msgid="3025576547136168692">"24 сағаттық формат"</string>
-    <string name="date_time_24hour" msgid="1137618702556486913">"24 сағаттық формат"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"24 сағаттық форматты қолдану"</string>
     <string name="date_time_set_time_title" msgid="5884883050656937853">"Уақыт"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"Уақытты реттеу"</string>
     <string name="date_time_set_timezone_title" msgid="3001779256157093425">"Уақыт белдеуі"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Әкімші ретінде кірдіңіз"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Барлық әкімші рұқсаттары"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Әкімші ету"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Пайдаланушы басқа пайдаланушыларды, соның ішінде әкімшілерді жоя алады және жүйені зауыттық мәндеріне қайтара алады."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Бұл профиль басқа профильдерді, оның ішінде басқа әкімшілерді жойып, жүйені зауыттық параметрлерге қайтара алады."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Бұл әрекетті қайтару мүмкін емес."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Иә, әкімші етілсін"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Жаңа пайдаланушы профильдерін жасау"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Жаңа профильдер жасау"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефон қоңырауларын шалу"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Автокөліктің мобильдік деректері арқылы хабар алмасу"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Жаңа қолданбаларды орнату"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Қолданбаларды жою"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Пайдаланушы қосу"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңа пайдаланушы"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Жаңа пайдаланушы қосылсын ба?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Қосылған жаңа пайдаланушы өз профилін реттеуі керек."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кез келген пайдаланушы қолданбаларды басқа пайдаланушылар үшін жаңарта алады."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Пайдаланушылар саны шегіне жетті"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> пайдаланушыға дейін жасауға болады.</item>
-      <item quantity="one">Тек бір пайдаланушыны жасауға болады.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Профиль қосу"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Жаңа профиль"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Жаңа профиль қосу керек пе?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Жаңа профиль қосқанда, ол адам өзінің профилін реттеу керек."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Кез келген профиль басқа профильдерге арналған қолданбаларды жаңарта алады."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Профильдер саны шегіне жетті"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> профильге дейін жасауға болады.</item>
+      <item quantity="one">Тек бір профиль жасауға болады.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Жаңа пайдаланушы жасалмады"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Пайдаланушы жойылсын ба?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Барлық қолданба мен дерек жойылады."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Пайдаланушы жойылмады."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Жаңа профиль жасалмады"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Бұл профильді жою керек пе?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Осы профильдегі барлық қолданбалар мен деректер жойылады."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Профиль жойылмады."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Бұл профиль құрылғыны өшіріп қосқан кезде немесе профильдерді ауыстырғанда жойылады."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Қабылдамау"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Қайталау"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Соңғы пайдаланушы жойылсын ба?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Бұл көлік үшін соңғы қалған пайдаланушыны жойғаннан кейін, жаңа әкімші пайдаланушы жасалады."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Бұл пайдаланушымен байланыстырылған деректер, параметрлер және қолданба жойылады. Жүйені қайта реттеу қажет болады."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Соңғы қалған профильді жою керек пе?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Осы көлікте қалған соңғы профильді жойсаңыз, сол профильге қатысты барлық дерек, параметрлер және қолданбалар өшіріледі."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Бастапқы күйге қайтарылғаннан кейін, жаңа профильді реттеуіңізге болады."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Жаңа әкімшіні таңдаңыз"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Кемінде бір әкімші болуы керек. Ағымдағы әкімшіні жою үшін алдымен жаңасын таңдаңыз."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Әкімшіні таңдау"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Сіз (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Аты"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Реттелмеген"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Пайдаланушы атын өзгерту"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Профиль атын өзгерту"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Өріс бос болмауы керек."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Енгізілген пайдаланушы аты жарамсыз."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Енгізілген профиль атауы дұрыс емес."</string>
     <string name="users_list_title" msgid="770764290290240909">"Пайдаланушылар"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профильдер"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s: рұқсаттар"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Жад"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музыка және аудио"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудио файлдар"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Есептелуде…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Қолданба көлемі"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Пайдаланушы деректері"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Профиль дерегі"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кэш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Жалпы"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Жадты тазалау"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Синхрондауды өшіру"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Синхрондауда қате шығуда. Кішкене уақыттан кейін қалпына келеді."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Құпиялылық"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Көлік деректері"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Қолданбаның геодеректі пайдалану рұқсатын басқару"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Қолданбаның микрофонды пайдалану рұқсатын басқару"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Көлік деректері"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Осы көлікте сақталған әрекеттер мен ақпаратты басқарыңыз."</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Профильді жою"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ақпарат және ойын-сауық жүйесінен профильді және есептік жазбаларды өшіру"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Профиліңізде бұл әрекетті жасай алмайсыз."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Қауіпсіздік"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Экранды құлыптау"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Жоқ"</string>
@@ -562,7 +604,7 @@
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN кодын таңдаңыз"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Өрнегіңізді жасаңыз"</string>
     <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Құпия сөзді таңдаңыз"</string>
-    <string name="current_screen_lock" msgid="637651611145979587">"Қазіргі экран құлпы"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"Ағымдағы экран құлпы"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Қауіпсіздік үшін өрнекті орнатыңыз"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Өшіру"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Бас тарту"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Жарайды"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Экран құлпы өшірілсін бе?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Кез келген адам есептік жазбаңызға кіре алатын болады"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Профиль құлпы"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Құлыпты автоматты түрде ашу параметрін реттеу"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN кодын енгізіңіз"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Құпия сөзіңізді енгізіңіз"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Қауіпсіздік үшін PIN кодын орнатыңыз"</string>
@@ -596,13 +640,13 @@
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Бас тарту"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Растау"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"Ең кемі 4 таңбадан тұруы керек"</string>
-    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Кемінде <xliff:g id="COUNT">%d</xliff:g> таңба болуы керек."</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Кемінде <xliff:g id="COUNT">%d</xliff:g> таңба болуы керек"</string>
     <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN коды кемінде <xliff:g id="COUNT">%d</xliff:g> таңбадан тұруы керек"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"Ең көбі <xliff:g id="NUMBER">%d</xliff:g> таңба болуы керек"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Ең көбі <xliff:g id="NUMBER">%d</xliff:g> сан болуы керек"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Тек 0-9 арасындағы сандар болуы керек."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Құрылғы әкімшісі жақында пайдаланылған PIN кодын қолдануға рұқсат бермейді"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"АТ әкімшісі оңай PIN кодтарына тыйым салды. Басқа PIN кодын енгізіп көріңіз."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"АТ әкімшісі оңай PIN кодтарына тыйым салды. Басқа PIN кодын енгізіп көріңіз."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Жарамсыз таңба болмауы керек"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Құпия сөз жарамсыз, ең кемі 4 таңбадан тұруы керек"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Құрылғы әкімшісі соңғы құпия сөзді қолдануға рұқсат бермейді"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Құпия сөзді сақтау кезінде қате кетті"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Оңай құпия сөздерге АТ әкімшісі тыйым салды. Басқа құпия сөз енгізіп көріңіз."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Оңай құпия сөздерге АТ әкімшісі тыйым салды. Басқа құпия сөз енгізіп көріңіз."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандардың артатын, кемитін немесе қайталанатын ретіне рұқсат берілмейді"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды құлыптау опциялары"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн бұрын"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter пернесі"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Деморежимнен шығу"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Деморежимнен шығу"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Демо есептік жазбаңыз жойылады және жүйенің зауыттық деректері қалпына келтіріледі. Пайдаланушының барлық деректері жоғалады."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Демо есептік жазбаңыз жойылады және жүйенің зауыттық деректері қалпына келтіріледі. Профильдің барлық дерегі жоғалады."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Деморежимнен шығу"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЖАБУ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Көлік жүргізу кезінде бұл функция жұмыс істемейді."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Көлік жүргізу кезінде пайдаланушыны енгізу мүмкін емес."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Көлік жүргізу кезінде профиль қосу мүмкін емес"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Іздеу"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant және Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant қолданбасы"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Экрандағы мәтінді пайдалану"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Assistant-тің экран мазмұнын пайдалануына рұқсат ету"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Скриншотты пайдалану"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Assistant-тің экран суретін пайдалануына рұқсат ету"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Жақында жіберілді"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Барлық қолданба"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профильдер мен есептік жазбалар"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Басқа профильдерді басқару"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Профиль қосу"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Бұл профильді жою"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Профиль қосу"</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index c7d3961..c6048e3 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ការ​បង្ហាញ"</string>
     <string name="brightness" msgid="2919605130898772866">"កម្រិត​ពន្លឺ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"កម្រិតពន្លឺបត់បែន"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"កែសម្រួល​កម្រិតពន្លឺ​តាមពន្លឺ​ដែលនៅ​ជុំវិញ"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"កែតម្រូវ​ពន្លឺអេក្រង់​ទៅតាមមជ្ឈដ្ឋាន"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ពន្លឺពេលយប់​បានបើក"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"អេក្រង់ អេក្រង់​ចុច"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"អេក្រង់ពន្លឺតិច​ អេក្រង់ចុច ថ្ម"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"អេក្រង់ពន្លឺតិច​ អេក្រង់ចុច ថ្ម"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"អេក្រង់ពន្លឺតិច យប់ ពណ៌ព្រឿងៗ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"មុខងារយប់"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"បណ្តាញ និង​អ៊ីនធឺណិត"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"បណ្ដាញទូរសព្ទចល័ត"</string>
@@ -73,17 +69,21 @@
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"កាលបរិច្ឆេទ​កំណត់​វដ្តនៃការប្រើប្រាស់​​​ឡើង​វិញ"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"កាលបរិច្ឆេទ​នៃ​ខែ​នីមួយៗ៖"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"កំណត់"</string>
-    <string name="data_warning_limit_title" msgid="4950868241810828601">"កំហិត និង​ការព្រមាន​អំពីការប្រើទិន្នន័យ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ការកម្រិត និង​ការព្រមាន​ពីការប្រើទិន្នន័យ"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"វដ្ត​នៃការ​ប្រើ​ទិន្នន័យ​កម្មវិធី"</string>
     <string name="set_data_warning" msgid="6628236612886588097">"កំណត់ការព្រមានពីការប្រើទិន្នន័យ"</string>
     <string name="data_warning" msgid="116776633806885370">"ការព្រមានពីការប្រើទិន្នន័យ"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"កំណត់កម្រិត​ទិន្នន័យ"</string>
     <string name="data_limit" msgid="227338836292511425">"កម្រិត​កំណត់​ទិន្នន័យ"</string>
-    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ការដាក់កំហិតលើ​ការប្រើ​ទិន្នន័យ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ការ​កម្រិត​លើ​ការ​ប្រើ​ទិន្នន័យ"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​​​អ្នក​នឹង​បិទ​ទិន្នន័យ​ទូរសព្ទចល័ត ​នៅ​ពេល​ដែល​វា​ប្រើប្រាស់​ទិន្នន័យ​​ដល់កម្រិតដែល​អ្នក​បាន​កំណត់។\n\nដោយសារ​​ការ​ប្រើ​ប្រាស់​ទិន្នន័យ​ត្រូវ​បាន​វាស់​ស្ទង់ដោយឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​​​ ​ហើយក្រុមហ៊ុនបម្រើសេវាទូរសព្ទ​របស់​អ្នកអាចគណនាលើការប្រើប្រាស់​ខុសពីនោះ សូមពិចារណា​កំណត់កម្រិតប្រើប្រាស់​ទិន្នន័យ​ទាប។"</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"កំណត់​ការ​ព្រមានពី​ការ​ប្រើ​ទិន្នន័យ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"កំណត់​ដែន​កំណត់​ប្រើទិន្នន័យ"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"កំណត់"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"បណ្ដាញ OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"បានប្រើអស់ %1$d MB %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"ចូលរួម​បណ្តាញ​ផ្សេងទៀត"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ចំណូលចិត្ត​បណ្តាញ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"កំពុង​បើក Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"កំពុង​បិទ Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"មិន​អាច​ភ្ជាប់​បណ្ដាញ​បានទេ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"បញ្ចូល​បណ្ដាញ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ភ្ជាប់"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"កំពុងភ្ជាប់…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"បណ្ដាញ​មិន​មានសេវា​ទេ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ពាក្យសម្ងាត់"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"បង្ហាញពាក្យសម្ងាត់"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"សូមបញ្ចូល​ឈ្មោះបណ្ដាញ"</string>
@@ -190,9 +192,14 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"កម្មវិធី​មួយ​ចង់ធ្វើឱ្យ​ឧបករណ៍​ប៊្លូធូស​ផ្សេងទៀត​អាច​មើលឃើញ​ឧបករណ៍​ចាក់សំឡេង​របស់អ្នក​រយៈពេល <xliff:g id="TIMEOUT">%1$d</xliff:g> វិនាទី។"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ចង់បើក​ប៊្លូធូស និង​ធ្វើឱ្យ​ឧបករណ៍​ផ្សេងទៀត​អាចមើលឃើញ​ឧបករណ៍ចាក់សំឡេង​របស់អ្នក​រយៈពេល <xliff:g id="TIMEOUT">%2$d</xliff:g> វិនាទី។"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"កម្មវិធីមួយ​ចង់បើក​ប៊្លូធូស និង​ធ្វើឱ្យ​ឧបករណ៍​ផ្សេងទៀត​អាចមើលឃើញ​ឧបករណ៍​ចាក់សំឡេង​របស់អ្នក​រយៈពេល <xliff:g id="TIMEOUT">%1$d</xliff:g> វិនាទី។"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"មើលឃើញជា %1$s ចំពោះ​ឧបករណ៍​ផ្សេងទៀត"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ឧបករណ៍ខ្ញុំ"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"បាន​ភ្ជាប់​ពីមុន​"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"បានភ្ជាប់ %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"បានផ្ដាច់ %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"សំណើ​ផ្គូផ្គង​តាម​ប៊្លូធូស"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ផ្គូផ្គង និងភ្ជាប់"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"លេខកូដផ្គូផ្គងប៊្លូធូស"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"កូដ​ផ្គូផ្គង​តាម​ប៊្លូធូស"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"កូដ PIN មាន​អក្សរ ឬសញ្ញា"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"វាយ​បញ្ចូល​កូដ​ផ្គូផ្គង បន្ទាប់​មក​ចុច Return ឬ Enter"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"ផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> មែនទេ?"</string>
@@ -210,8 +217,8 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"ភាសាទាំងអស់"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"ក្ដារចុច"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"គ្រប់គ្រងក្តារចុច"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"ធាតុចេញនៃការបំប្លែងអត្ថបទទៅជាការនិយាយ"</string>
-    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ម៉ាស៊ីន​ដែល​ចង់ប្រើ"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"លទ្ធផលនៃការបំប្លែងអត្ថបទទៅជាការនិយាយ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ម៉ាស៊ីន​ដែល​ចង់បាន"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ម៉ាស៊ីន​បច្ចុប្បន្ន"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"ល្បឿននៃការនិយាយ"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"កម្រិត​សំឡេង"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"សំឡេង​ជូន​ដំណឹង​លំនាំដើម"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"សំឡេង​ម៉ោងរោទ៍​លំនាំដើម"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"រក្សាទុក"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"សំឡេង​ជូនដំណឹង"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"សំឡេង​រោទ៍ ការជូនដំណឹង ម៉ោងរោទ៍"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ពន្លឺ"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"កែតម្រូវ​អេក្រង់​សម្រាប់ពន្លឺតិច"</string>
     <string name="units_settings" msgid="402325305096925886">"ខ្នាត"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ល្បឿន"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ចម្ងាយ"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"បង្ហាញ​​កម្មវិធី​ទាំងអស់"</string>
     <string name="default_applications" msgid="1558183275638697087">"កម្មវិធី​លំនាំដើម"</string>
     <string name="app_permissions" msgid="32799922508313948">"ការអនុញ្ញាត​កម្មវិធី"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"កម្មវិធី​កំពុងប្រើ <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"គ្រប់គ្រងសិទ្ធិចូលប្រើទិន្នន័យរបស់អ្នកពីកម្មវិធី"</string>
     <string name="applications_settings" msgid="794261395191035632">"ព័ត៌មាន​អំពី​កម្មវិធី"</string>
     <string name="force_stop" msgid="2153183697014720520">"បង្ខំ​ឱ្យ​បញ្ឈប់"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"បង្ខំ​ឱ្យ​បញ្ឈប់?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"លុប"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ប្រសិន​បើ​អ្នក​បិទ​កម្មវិធីនេះ Android និង​កម្មវិធី​ផ្សេង​ទៀត​ប្រហែលជា​មិនដំណើរការ​ដូចការគ្រោង​ទុកតទៅ​ទៀតទេ។"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"បិទកម្មវិធី"</string>
-    <string name="not_installed" msgid="4218816013370552746">"មិន​បាន​ដំឡើង​សម្រាប់​អ្នក​ប្រើប្រាស់​នេះទេ"</string>
+    <string name="not_installed" msgid="4163454337822508007">"មិនបានដំឡើង​សម្រាប់​កម្រងព័ត៌មាន​នេះទេ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ការអនុញ្ញាត"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ការជូនដំណឹង"</string>
-    <string name="storage_application_label" msgid="5911779903670978586">"ទំហំផ្ទុក និងឃ្លាំងបម្រុង"</string>
+    <string name="storage_application_label" msgid="5911779903670978586">"ទំហំផ្ទុក និង​ឃ្លាំងផ្ទុកទិន្នន័យ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"កំណែ៖ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"មិន​បាន​ផ្តល់សិទ្ធិអនុញ្ញាតទេ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"គ្មានការអនុញ្ញាត​ដែលបានស្នើសុំទេ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"កម្មវិធី​ដែលមិន​ប្រើ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">កម្មវិធី​ដែលមិនប្រើ​ចំនួន <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="one">កម្មវិធី​ដែលមិនប្រើ​ចំនួន <xliff:g id="COUNT_0">%d</xliff:g></item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ដក​ការអនុញ្ញាតចេញ និងបង្កើន​ទំហំផ្ទុក"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s នៅក្នុង​ទំហំ​ផ្ទុក​ខាង​ក្នុង"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ការ​ប្រើ​ទិន្នន័យ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ការប្រើទិន្នន័យកម្មវិធី"</string>
@@ -319,7 +336,7 @@
     <string name="assistant_security_warning" msgid="1844807956967428012">"ជំនួយការនឹងអាចអានព័ត៌មានអំពីកម្មវិធីដែលកំពុងប្រើនៅក្នុងប្រព័ន្ធរបស់អ្នក រួម​ទាំងព័ត៌មានដែលអាចមើលឃើញនៅលើអេក្រង់របស់អ្នក ឬព័ត៌មានដែលអាចចូលប្រើនៅក្នុងកម្មវិធី​នោះផងដែរ​។"</string>
     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"បញ្ចូល​សេវាកម្ម"</string>
-    <string name="app_launch_domain_links_title" msgid="774480184927726651">"ការបើកតំណ"</string>
+    <string name="app_launch_domain_links_title" msgid="774480184927726651">"បើកតំណ"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"កម្មវិធី​ដែល​បាន​ដំឡើង"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"កុំបើក​តំណ​ដែលស្គាល់"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"បើក <xliff:g id="DOMAIN">%s</xliff:g>"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"សួរគ្រប់ពេល"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"កុំបើកនៅក្នុងកម្មវិធីនេះ"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"តំណដែលស្គាល់"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"កម្មវិធី"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ទើបបើកថ្មីៗនេះ"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"មើល​កម្មវិធីទាំង %1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"កម្មវិធីគ្រប់គ្រង​ការអនុញ្ញាត"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"គ្រប់គ្រងសិទ្ធិចូលប្រើទិន្នន័យរបស់អ្នកពីកម្មវិធី"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"សម្រាប់​ជំនួយការ និងច្រើនទៀត"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ប្រព័ន្ធ និង​ការកំណត់​ផ្សេងទៀត"</string>
     <string name="special_access" msgid="5730278220917123811">"សិទ្ធិចូលប្រើប្រាស់កម្មវិធីពិសេស"</string>
     <string name="show_system" msgid="4401355756969485287">"បង្ហាញ​ប្រព័ន្ធ"</string>
     <string name="hide_system" msgid="8845453295584638040">"លាក់ប្រព័ន្ធ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"លាក់​កម្មវិធី​ប្រព័ន្ធ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"កែការកំណត់ប្រព័ន្ធ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ការអនុញ្ញាត​នេះ​អាចឱ្យ​កម្មវិធី​កែការកំណត់ប្រព័ន្ធ។"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"ការចូលប្រើ​ការជូនដំណឹង"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"គ្មាន​សំណើ​ទីតាំង​ថ្មីៗ​ទេ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ការ​អនុញ្ញាត​កម្រិត​កម្មវិធី"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"សេវាកម្ម​ទីតាំង"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ប្រើទីតាំង"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ប្រព័ន្ធ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"បច្ចុប្បន្នភាព​ប្រព័ន្ធ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"កម្រិតខ្ពស់"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"អំពី ព័ត៌មាន​ផ្នែកច្បាប់ ការកំណត់​ឡើងវិញ និង​ច្រើនទៀត"</string>
     <string name="firmware_version" msgid="8491753744549309333">"កំណែ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"កម្រិតបំណះសុវត្ថិភាព Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ម៉ូដែល និង​ហាតវែរ"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ការធ្វើបែបនេះ​នឹងកំណត់​ចំណូលចិត្ត​ទាំងអស់​ឡើងវិញសម្រាប់៖\n\n"<li>"កម្មវិធី​ដែលបានបិទ"</li>\n<li>"ការជូនដំណឹង​កម្មវិធីដែលបានបិទ"</li>\n<li>"កម្មវិធីលំនាំដើម​សម្រាប់​សកម្មភាពផ្សេងៗ"</li>\n<li>"ការដាក់កំហិតទិន្នន័យផ្ទៃខាងក្រោយ​លើកម្មវិធីផ្សេងៗ"</li>\n<li>"ការដាក់កំហិត​លើការអនុញ្ញាត​ទាំងឡាយ"</li>\n\n"អ្នកនឹងមិន​បាត់បង់ទិន្នន័យ​កម្មវិធីណាមួយឡើយ។"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"កំណត់​កម្មវិធី​ឡើងវិញ"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"បាន​កំណត់​ចំណូល​ចិត្ត​កម្មវិធីឡើង​វិញ​ហើយ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"លុប​ទិន្នន័យ​ទាំងអស់ (កំណត់ដូច​ដើម​ឡើងវិញ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ការធ្វើបែបនេះ​នឹងលុប​ទិន្នន័យ​ទាំងអស់​ពីឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​អ្នក រួមទាំង៖\n\n"<li>"កម្មវិធី​ដែលបាន​ទាញយក"</li>\n<li>"ទិន្នន័យ​កម្មវិធី និង​ប្រព័ន្ធ ព្រមទាំង​ការកំណត់"</li>\n<li>"គណនី Google របស់អ្នក"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"បច្ចុប្បន្ន​ អ្នក​បាន​ចូល​គណនី​ដូច​ខាង​ក្រោម៖"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"មាន​វត្តមានរបស់​អ្នកប្រើប្រាស់​ផ្សេងទៀត​នៅលើ​យានជំនិះនេះ។"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"កំណត់​យានជំនិះ​ឡើងវិញ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"កំណត់ឡើងវិញ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"លុប​ព័ត៌មាន​ផ្ទាល់ខ្លួន និង​កម្មវិធី​ដែលបាន​ទាញយក​ទាំងអស់​របស់អ្នក? អ្នក​មិនអាច​ត្រឡប់​សកម្មភាពនេះ​វិញបានទេ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"លុប​អ្វីគ្រប់យ៉ាង"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"កំពុងលុប"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"សូម​រង់ចាំ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"លុបទិន្នន័យទាំងអស់ (កំណត់ដូចចេញពីរោងចក្រ)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"លុបទិន្នន័យ និង​កម្រងព័ត៌មាន​ទាំងអស់​ពីប្រព័ន្ធ​ព័ត៌មាន និងកម្សាន្ត"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ការធ្វើបែបនេះ​នឹងលុប​ទិន្នន័យ​ទាំងអស់​ពីប្រព័ន្ធ​ព័ត៌មាន និងកម្សាន្តរបស់​យានជំនិះអ្នក រួមមាន៖\n\n"<li>"គណនី Google របស់អ្នក"</li>\n<li>"ទិន្នន័យកម្មវិធី​និងប្រព័ន្ធ និង​ការកំណត់"</li>\n<li>"កម្មវិធី​ដែលបានទាញយក"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"បច្ចុប្បន្ន​ អ្នក​បាន​ចូល​គណនី​ដូច​ខាង​ក្រោម៖"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"មានវត្តមានរបស់​កម្រងព័ត៌មាន​ផ្សេងទៀត​នៅលើ​យានជំនិះនេះ។"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"លុប​ទិន្នន័យ​ទាំង​អស់"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"លុប​ទិន្នន័យ​ទាំង​អស់ឬ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ការធ្វើបែបនេះ​នឹងលុប​ទិន្នន័យ​កម្រងព័ត៌មាន​ផ្ទាល់ខ្លួន គណនី និង​កម្មវិធីដែលបាន​ទាញយកទាំងអស់​របស់អ្នក​នៅលើប្រព័ន្ធ​ព័ត៌មាន​ និងកម្សាន្តនេះ។\n\nអ្នកមិនអាច​ត្រឡប់​សកម្មភាពនេះ​វិញបានទេ។"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"លុប​អ្វីគ្រប់យ៉ាង"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"កំពុងលុប"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"សូម​រង់ចាំ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"កាលបរិច្ឆេទ និង​ម៉ោង"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"កំណត់​កាលបរិច្ឆេទ ម៉ោង ល្វែងម៉ោង និង​ទម្រង់"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"កាលបរិច្ឆេទ និង​ម៉ោង​ស្វ័យ​ប្រវត្តិ"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"បាន​ចូលជា​អ្នក​គ្រប់គ្រង"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ការ​អនុញ្ញាត​គ្រប់គ្រង​ទាំងអស់"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"កំណត់​ជាអ្នក​គ្រប់គ្រង"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"អ្នក​ប្រើប្រាស់​នឹងអាច​លុបអ្នក​ប្រើប្រាស់ រួមទាំង​អ្នកគ្រប់គ្រង​ផ្សេងទៀត និង​កំណត់​ប្រព័ន្ធ​ដូចដើម​ឡើងវិញ។"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"កម្រងព័ត៌មាន​នឹងអាចលុប​កម្រងព័ត៌មាន រួមទាំង​អ្នកគ្រប់គ្រង​ផ្សេងទៀត និង​កំណត់ប្រព័ន្ធ​ដូចចេញ​ពីរោងចក្រ។"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"សកម្មភាព​នេះ​មិនអាច​ត្រឡប់វិញ​បានទេ។"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"បាទ/ចាស កំណត់​ជាអ្នក​គ្រប់គ្រង"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"បង្កើត​អ្នកប្រើប្រាស់ថ្មី"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"បង្កើត​កម្រងព័ត៌មានថ្មី"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ហៅ​ទូរសព្ទ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ការផ្ញើសារតាមរយៈទិន្នន័យទូរសព្ទចល័តរបស់​រថយន្ត"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ដំឡើង​កម្មវិធី​ថ្មី"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"លុបកម្មវិធី"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"បញ្ចូល​អ្នក​ប្រើប្រាស់"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"អ្នក​ប្រើប្រាស់​ថ្មី"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"នៅពេលដែល​អ្នក​បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី បុគ្គល​នោះ​ត្រូវតែ​រៀបចំ​ទំហំ​ផ្ទុក​របស់គេ។"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"អ្នកប្រើប្រាស់​ណាក៏​អាច​ដំឡើង​ជំនាន់កម្មវិធី​សម្រាប់​អ្នក​ប្រើប្រាស់​ទាំងអស់​ផ្សេង​ទៀត​បាន​ដែរ។"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"​បាន​ឈាន​ដល់ចំនួន​កំណត់អ្នកប្រើប្រាស់"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">អ្នកអាច​បង្កើត​អ្នកប្រើប្រាស់​បាន​រហូតដល់ <xliff:g id="COUNT">%d</xliff:g> នាក់។</item>
-      <item quantity="one">អាច​បង្កើត​អ្នក​ប្រើប្រាស់​បាន​​តែម្នាក់ប៉ុណ្ណោះ។</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"បញ្ចូល​កម្រងព័ត៌មាន"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"កម្រងព័ត៌មាន​ថ្មី"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"បញ្ចូល​កម្រងព័ត៌មានថ្មី​ឬ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"នៅពេលដែល​អ្នកបញ្ចូល​កម្រងព័ត៌មានថ្មី បុគ្គលនោះ​ត្រូវតែ​រៀបចំ​ទំហំផ្ទុក​របស់គាត់។"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"កម្រងព័ត៌មានណា​ក៏អាច​ដំឡើងកំណែកម្មវិធី​សម្រាប់​កម្រងព័ត៌មាន​ទាំងអស់​ផ្សេងទៀត​បានដែរ។"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"បានឈានដល់​ដែនកំណត់នៃកម្រងព័ត៌មានហើយ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">អ្នកអាចបង្កើត​កម្រងព័ត៌មាន​បានរហូតដល់ <xliff:g id="COUNT">%d</xliff:g>។</item>
+      <item quantity="one">អាចបង្កើតបានតែ​កម្រងព័ត៌មានមួយ​ប៉ុណ្ណោះ។</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"មិន​អាច​បង្កើត​អ្នកប្រើប្រាស់​ថ្មី​បាន​ទេ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"លុបអ្នកប្រើប្រាស់​នេះមែនទេ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"កម្មវិធី និង​ទិន្នន័យ​ទាំងអស់​នឹង​ត្រូវ​បាន​លុប។"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"មិនអាច​លុបអ្នកប្រើប្រាស់​បានទេ។"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"មិនអាចបង្កើត​កម្រងព័ត៌មានថ្មី​បានទេ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"លុប​កម្រងព័ត៌មាន​នេះឬ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"កម្មវិធី និង​ទិន្នន័យទាំងអស់​សម្រាប់កម្រងព័ត៌មាននេះ​នឹងត្រូវបានលុប"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"មិនអាចលុប​កម្រងព័ត៌មាន​បានទេ។"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"កម្រងព័ត៌មាន​នេះនឹងត្រូវបានលុប នៅពេលអ្នក​ប្ដូរកម្រងព័ត៌មាន ឬបញ្ឆេះ​យានជំនិះឡើងវិញ។"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ច្រានចោល"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ព្យាយាមម្ដងទៀត"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"លុបអ្នកប្រើប្រាស់​ចុងក្រោយ​មែនទេ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"​បន្ទាប់ពី​លុបអ្នក​ប្រើប្រាស់​នៅសល់ចុងក្រោយ​សម្រាប់​រថយន្តនេះ អ្នកប្រើប្រាស់​ដែលជា​អ្នកគ្រប់គ្រងថ្មី​នឹងត្រូវបាន​បង្កើត។"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ទិន្នន័យ ការកំណត់ និងកម្មវិធី​ទាំងអស់​ដែលពាក់ព័ន្ធ​ជាមួយ​អ្នកប្រើប្រាស់​នេះនឹង​ត្រូវបាន​លុប។ អ្នកនឹង​​ត្រូវរៀបចំ​ប្រព័ន្ធ​ម្ដងទៀត។"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"លុប​កម្រងព័ត៌មាន​ដែលនៅសល់​ចុងក្រោយឬ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ប្រសិនបើអ្នកលុប​កម្រងព័ត៌មាន​ដែលនៅសល់តែមួយ​សម្រាប់យានជំនិះនេះ ទិន្នន័យ ការកំណត់ និងកម្មវិធីទាំងអស់​ដែលពាក់ព័ន្ធជាមួយ​កម្រងព័ត៌មាននេះ​នឹងត្រូវបានលុប។"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"បន្ទាប់ពីការកំណត់ឡើងវិញ អ្នកអាចរៀបចំកម្រងព័ត៌មានថ្មីបាន។"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"ជ្រើសរើស​អ្នកគ្រប់គ្រងថ្មី"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"អ្នកត្រូវការ​​អ្នកគ្រប់គ្រងយ៉ាងហោចណាស់​ម្នាក់។ ដើម្បីលុប​អ្នកគ្រប់គ្រង​នេះ សូមជ្រើសរើស​អ្នកជំនួស​ជាមុនសិន។"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ជ្រើសរើសអ្នកគ្រប់គ្រង"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"អ្នក (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ឈ្មោះ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"មិន​បាន​រៀបចំ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"កែសម្រួល​ឈ្មោះអ្នក​ប្រើប្រាស់"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"កែឈ្មោះ​កម្រងព័ត៌មាន"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"កន្លែងបញ្ចូលមិន​អាច​ទទេឡើយ។"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ឈ្មោះ​អ្នកប្រើប្រាស់​ដែល​បាន​បញ្ចូល​គឺមិនត្រឹមត្រូវទេ។"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ឈ្មោះ​កម្រងព័ត៌មាន​ដែលបានបញ្ចូល​មិនត្រឹមត្រូវទេ។"</string>
     <string name="users_list_title" msgid="770764290290240909">"អ្នកប្រើប្រាស់"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"កម្រងព័ត៌មាន"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"បានផ្ដល់​ការអនុញ្ញាត​ឱ្យ %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ទំហំផ្ទុក"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"តន្រ្តី និង​សំឡេង"</string>
@@ -502,11 +535,11 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ឯកសារ​សំឡេង"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"កំពុង​គណនា…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ទំហំកម្មវិធី"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ទិន្នន័យអ្នកប្រើប្រាស់"</string>
-    <string name="storage_cache_size_label" msgid="6361308766707419555">"ឃ្លាំងបម្រុង"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ទិន្នន័យ​កម្រងព័ត៌មាន"</string>
+    <string name="storage_cache_size_label" msgid="6361308766707419555">"ឃ្លាំងផ្ទុកទិន្នន័យ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"សរុប"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"សម្អាត​ទំហំ​ផ្ទុក"</string>
-    <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"សម្អាត​ឃ្លាំងបម្រុង"</string>
+    <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"សម្អាត​ឃ្លាំងផ្ទុកទិន្នន័យ"</string>
     <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"លុប​ទិន្នន័យ​កម្មវិធី?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"ទិន្នន័យ​របស់​កម្មវិធី​នេះ​ទាំងអស់​នឹង​ត្រូវ​បាន​លុប​ជា​អចិន្ត្រៃយ៍។ ទិន្នន័យទាំងនេះរួមមាន ឯកសារ​ទាំងអស់ ការ​កំណត់ គណនី មូលដ្ឋាន​ទិន្នន័យ ។ល។"</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"មិនអាច​សម្អាត​ទំហំផ្ទុក​សម្រាប់​កម្មវិធី​បានទេ។"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"បោះបង់​ការ​ធ្វើ​សម​កាល​កម្ម"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ការធ្វើសម​កាលកម្ម​កំពុងជួបបញ្ហា​ឥឡូវនេះ។ ការធ្វើសមកាលកម្ម​នឹងមានឡើងវិញ​ក្នុងពេលបន្តិច​ទៀត​នេះ។"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ឯកជនភាព"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ទិន្នន័យយានជំនិះ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"គ្រប់គ្រង​សិទ្ធិចូលប្រើទីតាំង​របស់អ្នក​ពីកម្មវិធី"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"មីក្រូហ្វូន"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"គ្រប់គ្រង​សិទ្ធិចូលប្រើមីក្រូហ្វូន​ពីកម្មវិធី"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ទិន្នន័យយានជំនិះ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"គ្រប់គ្រងសកម្មភាព និងព័ត៌មានដែលបានរក្សាទុកនៅលើយានជំនិះនេះ"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"លុប​កម្រងព័ត៌មាន​របស់អ្នក"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"លុប​កម្រងព័ត៌មាន និង​គណនីរបស់អ្នក​ពីប្រព័ន្ធ​ព័ត៌មាន និងកម្សាន្ត"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"កម្រងព័ត៌មាន​របស់អ្នក​មិនអាចធ្វើ​សកម្មភាពនេះ​បានទេ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"សុវត្ថិភាព"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ការចាក់សោអេក្រង់"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"គ្មាន"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"យល់ព្រម"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"លុប​ការ​ចាក់សោ​អេក្រង់?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ការធ្វើបែបនេះ​នឹង​អនុញ្ញាតឱ្យ​នរណាក៏អាចចូល​ប្រើ​គណនី​របស់អ្នក"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ការចាក់សោ​កម្រងព័ត៌មាន"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"រៀបចំ​ការដោះសោ​ដោយស្វ័យប្រវត្តិ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"បញ្ចូល​កូដ PIN របស់​អ្នក"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"បញ្ចូល​ពាក្យ​សម្ងាត់​របស់​អ្នក"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ដើម្បី​សុវត្ថិភាព សូម​កំណត់​កូដ PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ត្រូវមានលេខតិចជាង <xliff:g id="NUMBER">%d</xliff:g> ខ្ទង់"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ត្រូវមាន​លេខពី 0-9 តែ​ប៉ុណ្ណោះ។"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"អ្នក​គ្រប់គ្រង​ឧបករណ៍​មិន​អនុញ្ញាត​ឱ្យ​ប្រើ​កូដ PIN ​ទើបប្រើ​ហើយ​ទេ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"កូដ PIN លក្ខណៈ​សាមញ្ញ​ត្រូវ​បាន​ទប់ស្កាត់​ដោយ​អ្នក​គ្រប់គ្រង​ព័ត៌មាន​វិទ្យា​របស់អ្នក។ សាកល្បង​ប្រើ​កូដ PIN ផ្សេង​ពី​នេះ។"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"កូដ PIN លក្ខណៈ​សាមញ្ញ​ត្រូវ​បាន​ទប់ស្កាត់​ដោយ​អ្នក​គ្រប់គ្រង​ព័ត៌មាន​វិទ្យា​របស់អ្នក។ សាកល្បង​ប្រើ​កូដ PIN ផ្សេង​ពី​នេះ។"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"វាមិនអាច​ប្រើតួ​អក្សរដែល​មិន​ត្រឹមត្រូវ​បានទេ។"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ពាក្យ​សម្ងាត់​មិនត្រឹមត្រូវទេ ត្រូវ​មាន​យ៉ាងហោចណាស់ 4 តួ។"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"អ្នក​គ្រប់គ្រង​ឧបករណ៍​មិន​អនុញ្ញាត​ឱ្យ​ប្រើ​ពាក្យ​សម្ងាត់​​ដែលទើបប្រើ​ហើយ​ទេ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"មាន​បញ្ហា​ក្នុងការ​រក្សាទុក​ពាក្យ​សម្ងាត់"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ពាក្យសម្ងាត់​លក្ខណៈ​សាមញ្ញ​ត្រូវ​បាន​ទប់ស្កាត់​ដោយ​អ្នក​គ្រប់គ្រង​ព័ត៌មាន​វិទ្យា​របស់អ្នក។ សាកល្បង​ប្រើ​ពាក្យ​សម្ងាត់​ផ្សេង​ពី​នេះ។"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ពាក្យសម្ងាត់​លក្ខណៈ​សាមញ្ញ​ត្រូវ​បាន​ទប់ស្កាត់​ដោយ​អ្នក​គ្រប់គ្រង​ព័ត៌មាន​វិទ្យា​របស់អ្នក។ សាកល្បង​ប្រើ​ពាក្យ​សម្ងាត់​ផ្សេង​ពី​នេះ។"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"មិន​អនុញ្ញាត​ឱ្យ​មាន​លេខ​លំដាប់​ឡើង ចុះ ឬ​ដដែលៗ​ទេ។"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ជម្រើស​ការចាក់សោអេក្រង់"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\nថ្ងៃ <xliff:g id="DATE">%2$s</xliff:g>៖ <xliff:g id="NUM_DAYS">%3$s</xliff:g> ថ្ងៃមុន"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"គ្រាប់​ចុច​បញ្ចូល"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ចាក​ចេញ​ពីការបង្ហាញ​សាកល្បង"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ចាក​ចេញ​ពីមុខងារបង្ហាញ​សាកល្បង"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ការចាកចេញ​នេះ​នឹង​លុប​គណនីបង្ហាញ​សាកល្បង និងកំណត់​ទិន្នន័យប្រព័ន្ធ​ដូច​ចេញ​ពី​រោងចក្រ។​ ទិន្នន័យ​អ្នក​ប្រើប្រាស់​ទាំងអស់​នឹង​បាត់បង់។"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ការធ្វើបែបនេះ​នឹងលុប​គណនី​សាកល្បង និងកំណត់​ទិន្នន័យប្រព័ន្ធ​ដូចចេញ​ពីរោងចក្រ។ ទិន្នន័យ​កម្រងព័ត៌មាន​ទាំងអស់​នឹងត្រូវបាត់បង់។"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ចាក​ចេញ​ពីការបង្ហាញ​សាកល្បង"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ច្រានចោល"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"មិនអាច​ប្រើមុខងារ​នេះបានទេ ខណៈពេល​កំពុង​បើកបរ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"មិនអាច​បញ្ចូល​អ្នកប្រើប្រាស់​បានទេ ខណៈពេល​កំពុងបើកបរ"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"មិនអាចបញ្ចូល​កម្រងព័ត៌មាន​បានទេ ខណៈពេល​កំពុងបើកបរ"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ស្វែងរក"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"ជំនួយការ និងសំឡេង"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"កម្មវិធី​ជំនួយការ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ប្រើ​អត្ថបទ​ពី​អេក្រង់"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"អនុញ្ញាតឱ្យ​ជំនួយការ​ចូលប្រើ​ខ្លឹមសារលើ​អេក្រង់"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ប្រើ​រូបថតអេក្រង់"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"អនុញ្ញាតឱ្យ​ជំនួយការ​ចូលប្រើ​រូបភាពលើអេក្រង់"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ទើបផ្ញើថ្មីៗនេះ"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"កម្មវិធី​ទាំងអស់"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"កម្រងព័ត៌មាន និង​គណនី"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"គ្រប់គ្រង​កម្រងព័ត៌មាន​ផ្សេងទៀត"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"បញ្ចូល​កម្រងព័ត៌មាន"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"លុប​កម្រងព័ត៌មាននេះ"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"បញ្ចូល​កម្រងព័ត៌មាន"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 670bdba..cdf76ad 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ಪ್ರದರ್ಶನ"</string>
     <string name="brightness" msgid="2919605130898772866">"ಪ್ರಖರತೆಯ ಮಟ್ಟ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ಅಡಾಪ್ಟಿವ್‌ ಪ್ರಖರತೆ"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ಲಭ್ಯವಿರುವ ಬೆಳಕಿನ ಪ್ರಖರತೆಯ ಮಟ್ಟವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ಪರಿಸರಕ್ಕೆ ತಕ್ಕಂತೆ ಸ್ಕ್ರೀನ್ ಪ್ರಖರತೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ನೈಟ್ ಲೈಟ್ ಆನ್ ಆಗಿದೆ"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ಪರದೆ, ಟಚ್‌ಸ್ಕ್ರೀನ್"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ಡಿಮ್‌‌ ಪರದೆ, ಟಚ್‌ಸ್ಕ್ರೀನ್, ಬ್ಯಾಟರಿ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ಡಿಮ್‌‌ ಪರದೆ, ಟಚ್‌ಸ್ಕ್ರೀನ್, ಬ್ಯಾಟರಿ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ಮಂದ ಪರದೆ, ರಾತ್ರಿ ,ಟಿಂಟ್"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ರಾತ್ರಿ ಮೋಡ್"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌"</string>
@@ -75,15 +71,19 @@
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"ಹೊಂದಿಸಿ"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"ಡೇಟಾ ಎಚ್ಚರಿಕೆ ಮತ್ತು ಮಿತಿ"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"ಆ್ಯಪ್‌ ಡೇಟಾ ಬಳಕೆ ಆವರ್ತನೆ"</string>
-    <string name="set_data_warning" msgid="6628236612886588097">"ಡೇಟಾ ಎಚ್ಚರಿಕೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ಡೇಟಾ ಎಚ್ಚರಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="data_warning" msgid="116776633806885370">"ಡೇಟಾ ಎಚ್ಚರಿಕೆ"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"ಡೇಟಾ ಮಿತಿ ಹೊಂದಿಸಿ"</string>
     <string name="data_limit" msgid="227338836292511425">"ಡೇಟಾ ಮಿತಿ"</string>
     <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ಡೇಟಾ ಬಳಕೆಯನ್ನು ಮಿತಿಗೊಳಿಸುವಿಕೆ"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ನೀವು ಹೊಂದಿಸಿರುವ ಮಿತಿಯನ್ನು ತಲುಪಿದಾಗ ನಿಮ್ಮ ವಾಹನದ ಹೆಡ್ ಯೂನಿಟ್ ಒಮ್ಮೆ ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n ಡೇಟಾ ಬಳಕೆಯನ್ನು ಹೆಡ್ ಯೂನಿಟ್ ಮೂಲಕ ಅಳೆಯಲಾಗುವ ಕಾರಣ ಮತ್ತು ನಿಮ್ಮ ವಾಹಕವು ಬಳಕೆಯನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಪರಿಗಣಿಸಬಹುದಾದ ಕಾರಣ, ಸುರಕ್ಷಿತ ಮಿತಿಯನ್ನು ಹೊಂದಿಸುವುದು ಸೂಕ್ತ."</string>
-    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ಡೇಟಾ ಬಳಕೆ ಎಚ್ಚರಿಕೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
+    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ಡೇಟಾ ಬಳಕೆ ಎಚ್ಚರಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ಡೇಟಾ ಬಳಕೆ ಮಿತಿಯನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ಹೊಂದಿಸಿ"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ನೆಟ್‌ವರ್ಕ್"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s ನಡುವೆ %1$d MB ಬಳಕೆಯಾಗಿದೆ"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"ಇತರ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸೇರಿಕೊಳ್ಳಿ"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ನೆಟ್‌ವರ್ಕ್ ಆದ್ಯತೆಗಳು"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ವೈ‑ಫೈ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ವೈ-ಫೈ ಆನ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ವೈ-ಫೈ ಆಫ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ನೆಟ್‌ವರ್ಕ್‌ ಸಂಪರ್ಕಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ನೆಟ್‌ವರ್ಕ್‌ ಸೇರಿಸಿ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ಸಂಪರ್ಕಿಸಿ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ಕನೆಕ್ಟ್ ಆಗುತ್ತಿದೆ…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ನೆಟ್‌ವರ್ಕ್ ವ್ಯಾಪ್ತಿಯಲ್ಲಿಲ್ಲ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ಪಾಸ್‌ವರ್ಡ್"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ಪಾಸ್‌ವರ್ಡ್ ತೋರಿಸಿ"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ನೆಟ್‌ವರ್ಕ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ"</string>
@@ -190,12 +192,17 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"<xliff:g id="TIMEOUT">%1$d</xliff:g> ಸೆಕೆಂಡುಗಳವರೆಗೆ ಇತರ ಬ್ಲೂಟೂತ್‌‌ ಸಾಧನಗಳಿಗೆ ನಿಮ್ಮ ಹೆಡ್ ಯುನಿಟ್ ಗೋಚರಿಸುವಂತೆ ಮಾಡಲು ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"ಬ್ಲೂಟೂತ್‌ ಆನ್ ಮಾಡಲು ಮತ್ತು <xliff:g id="TIMEOUT">%2$d</xliff:g> ಸೆಕೆಂಡುಗಳವರೆಗೆ ಇತರ ಸಾಧನಗಳಿಗೆ ನಿಮ್ಮ ಹೆಡ್ ಯುನಿಟ್ ಗೋಚರಿಸುವಂತೆ ಮಾಡಲು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬಯಸುತ್ತದೆ."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ಬ್ಲೂಟೂತ್‌ ಆನ್‌ ಮಾಡಲು ಮತ್ತು <xliff:g id="TIMEOUT">%1$d</xliff:g> ಸೆಕೆಂಡುಗಳವೆರೆಗೆ ಇತರ ಸಾಧನಗಳಿಗೆ ನಿಮ್ಮ ಹೆಡ್ ಯುನಿಟ್ ಗೋಚರಿಸುವಂತೆ ಮಾಡಲು ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"ಇತರ ಸಾಧನಗಳಿಗೆ %1$s ರೂಪದಲ್ಲಿ ಕಾಣಿಸುತ್ತದೆ"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ನನ್ನ ಸಾಧನಗಳು"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ಹಿಂದೆ ಕನೆಕ್ಟ್ ಮಾಡಿದ್ದು"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ಅನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ಅನ್ನು ಡಿಸ್‌ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ಬ್ಲೂಟೂತ್‌‌ ಜೋಡಣೆ ವಿನಂತಿ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ಜೋಡಿಸಿ ಮತ್ತು ಸಂಪರ್ಕಪಡಿಸಿ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ಬ್ಲೂಟೂತ್ ಜೋಡಣೆ ಕೋಡ್"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ಅಕ್ಷರಗಳು ಅಥವಾ ಚಿಹ್ನೆಗಳನ್ನು ಪಿನ್‌ ಹೊಂದಿದೆ"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ಜೋಡಣೆ ಕೋಡ್‌ ಟೈಪ್‌ ಮಾಡಿ ತದನಂತರ ರಿಟರ್ನ್‌ ಅಥವಾ ಎಂಟರ್‌ ಒತ್ತಿ."</string>
-    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆ ಜೋಡಿಸಬೇಕೇ?"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆ ಜೋಡಿಸುವುದೇ?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳು ಹಾಗೂ ಕರೆ ಇತಿಹಾಸವನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಸಾಧನವನ್ನು ಅನುಮತಿಸಿ"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"ನಿಮಗೆ ಇತರ ಸಾಧನದಲ್ಲಿ ಈ ಪಿನ್‌ ಟೈಪ್‌ ಮಾಡುವ ಅಗತ್ಯವಿರಬಹುದು."</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"ನಿಮಗೆ ಇತರ ಸಾಧನದಲ್ಲಿ ಈ ಪಾಸ್‌ಕೀಯನ್ನು ಟೈಪ್‌ ಮಾಡುವ ಅಗತ್ಯವಿರಬಹುದು."</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ಡಿಫಾಲ್ಟ್ ಅಧಿಸೂಚನೆ ಧ್ವನಿ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ಡೀಫಾಲ್ಟ್ ಅಲಾರಾಂ ಧ್ವನಿ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ಉಳಿಸಿ"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"ಅಲರ್ಟ್ ಧ್ವನಿಗಳು"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ರಿಂಗ್‌ಟೋನ್, ಅಧಿಸೂಚನೆಗಳು ಮತ್ತು ಅಲಾರಾಂ"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ಪ್ರಖರತೆ"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಕಡಿಮೆ ಬೆಳಕಿಗೆ ಹೊಂದಿಸಿ"</string>
     <string name="units_settings" msgid="402325305096925886">"ಯೂನಿಟ್‌ಗಳು"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ವೇಗ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ದೂರ"</string>
@@ -280,9 +291,9 @@
     <string name="all_applications" msgid="7798210477486822168">"ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್‌ಗಳು"</string>
     <string name="app_permissions" msgid="32799922508313948">"ಆ್ಯಪ್ ಅನುಮತಿಗಳು"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ಅನ್ನು ಬಳಸುವ ಆ್ಯಪ್‌ಗಳು"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"ನಿಮ್ಮ ಡೇಟಾಗೆ ಆ್ಯಪ್ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ಆ್ಯಪ್‍ ಮಾಹಿತಿ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ಬಲವಂತವಾಗಿ ನಿಲ್ಲಿಸಿ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ಸ್ಥಗಿತಗೊಳಿಸಿ"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ಬಲವಂತವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸುವುದೇ?"</string>
     <string name="force_stop_dialog_text" msgid="4354954014318432599">"ಆ್ಯಪ್‍ ಅನ್ನು ಬಲವಂತವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸಿದರೆ, ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
     <string name="disable_text" msgid="4358165448648990820">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ನೀವು ಈ ಆ್ಯಪ್‍ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ Android  ಮತ್ತು ಇತರ ಆ್ಯಪ್‍‌ಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ಆ್ಯಪ್‍‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ಈ ಬಳಕೆದಾರರಿಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿಲ್ಲ"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ಈ ಪ್ರೊಫೈಲ್‌ಗಾಗಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿಲ್ಲ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ಅನುಮತಿಗಳು"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ಸಂಗ್ರಹಣೆ ಮತ್ತು ಕ್ಯಾಷ್"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ಆವೃತ್ತಿ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ನೀಡಲಾಗಿಲ್ಲ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ವಿನಂತಿಸಿಲ್ಲ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">ಬಳಕೆಯಾಗದ <xliff:g id="COUNT_1">%d</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
+      <item quantity="other">ಬಳಕೆಯಾಗದ <xliff:g id="COUNT_1">%d</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ಅನುಮತಿಗಳನ್ನು ತೆಗೆಯಿರಿ, ಸ್ಥಳ ಮುಕ್ತಗೊಳಿಸಿ"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"ಆಂತರಿಕ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ಡೇಟಾ ಬಳಕೆ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ಆ್ಯಪ್‍ ಡೇಟಾ ಬಳಕೆ"</string>
@@ -319,7 +336,7 @@
     <string name="assistant_security_warning" msgid="1844807956967428012">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಗೋಚರಿಸುವ ಅಥವಾ ಆ್ಯಪ್‌ಗಳಲ್ಲಿಯೇ ಪ್ರವೇಶಿಸಬಹುದಾದಂತಹ ಮಾಹಿತಿ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ಸಿಸ್ಟಂನಲ್ಲಿ ಬಳಕೆಯಲ್ಲಿರುವ ಆ್ಯಪ್‌ಗಳ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಓದಲು ಅಸಿಸ್ಟೆಂಟ್‌ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"ಸೇವೆಯನ್ನು ಸೇರಿಸಿ"</string>
-    <string name="app_launch_domain_links_title" msgid="774480184927726651">"ಲಿಂಕ್‍‍ಗಳನ್ನು ತೆರೆಯುವುದು"</string>
+    <string name="app_launch_domain_links_title" msgid="774480184927726651">"ತೆರೆಯುವ ಲಿಂಕ್‍ಗಳು"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲಾದ ಆ್ಯಪ್‌ಗಳು"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"ಬೆಂಬಲಿತ ಲಿಂಕ್‌ಗಳನ್ನು ತೆರೆಯಬೇಡಿ"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"<xliff:g id="DOMAIN">%s</xliff:g> ಅನ್ನು ತೆರೆಯಿರಿ"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ಈ ಆ್ಯಪ್‌ನಲ್ಲಿ ತೆರೆಯಬೇಡಿ"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ಬೆಂಬಲಿತ ಲಿಂಕ್‌ಗಳು"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ಆ್ಯಪ್‌ಗಳು"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ಇತ್ತೀಚೆಗೆ ತೆರೆದಿರುವುದು"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"ಎಲ್ಲಾ %1$d ಆ್ಯಪ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"ಅನುಮತಿ ನಿರ್ವಾಹಕರು"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"ನಿಮ್ಮ ಡೇಟಾಗೆ ಆ್ಯಪ್ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳಿಗಾಗಿ"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ಸಿಸ್ಟಂ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ"</string>
     <string name="special_access" msgid="5730278220917123811">"ಆ್ಯಪ್‌ಗೆ ವಿಶೇಷ ಪ್ರವೇಶ"</string>
     <string name="show_system" msgid="4401355756969485287">"ಸಿಸ್ಟಂ ತೋರಿಸಿ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ಸಿಸ್ಟಂ ಮರೆಮಾಡಿ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ಸಿಸ್ಟಂ ಆ್ಯಪ್‌ಗಳನ್ನು ನಕಲಿಸಿ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್‍ ಮಾರ್ಪಡಿಸಿ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ಈ ಅನುಮತಿಯು ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"ಅಧಿಸೂಚನೆ ಪ್ರವೇಶ"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಸ್ಥಳ ವಿನಂತಿಗಳು ಇಲ್ಲ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ಆ್ಯಪ್‌ ಹಂತದ ಅನುಮತಿಗಳು"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ಸ್ಥಳ ಸೇವೆಗಳು"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ಸ್ಥಳವನ್ನು ಬಳಸಿ"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ಸಿಸ್ಟಂ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳು"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"ಸುಧಾರಿತ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ಕುರಿತು, ಕಾನೂನು ಮಾಹಿತಿ, ರೀಸೆಟ್ ಮತ್ತು ಇನ್ನಷ್ಟು"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ಆವೃತ್ತಿ"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ಭದ್ರತೆ ಪ್ಯಾಚ್ ಮಟ್ಟ"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ಮಾಡೆಲ್ ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್"</string>
@@ -400,7 +430,7 @@
     <string name="show_dev_on" msgid="5339077400040834808">"ಇದೀಗ ನೀವು ಡೆವಲಪರ್‌!"</string>
     <string name="show_dev_already" msgid="1678087328973865736">"ಅಗತ್ಯವಿಲ್ಲ, ನೀವು ಈಗಾಗಲೇ ಡೆವಲಪರ್‌ ಆಗಿರುವಿರಿ."</string>
     <string name="developer_options_settings" msgid="1530739225109118480">"ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು"</string>
-    <string name="reset_options_title" msgid="4388902952861833420">"ರೀಸೆಟ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ಮರುಹೊಂದಿಸುವ ಆಯ್ಕೆಗಳು"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"ನೆಟ್‌ವರ್ಕ್, ಆ್ಯಪ್‌ಗಳು ಅಥವಾ ಸಾಧನಗಳ ಮರುಹೊಂದಿಸುವಿಕೆ"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"ನೆಟ್‌ವರ್ಕ್‌ ಮರುಹೊಂದಿಸಿ"</string>
     <string name="reset_network_desc" msgid="602381374544634925">"ಇದು ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಎಲ್ಲವನ್ನೂ ಮರುಹೊಂದಿಸುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಈ ಮುಂದಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ಇದು ಕೆಳಗಿನವುಗಳ ಎಲ್ಲಾ ಆದ್ಯತೆಗಳನ್ನು ಮರುಹೊಂದಿಸುತ್ತದೆ:\n\n"<li>"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್‌ಗಳು"</li>\n<li>"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್‌ ಅಧಿಸೂಚನೆಗಳು"</li>\n<li>"ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್‌ಗಳು"</li>\n<li>"ಆ್ಯಪ್‌ ಹಿನ್ನೆಲೆ ಡೇಟಾ ನಿರ್ಬಂಧಗಳು"</li>\n<li>"ಯಾವುದೇ ಅನುಮತಿ ನಿರ್ಬಂಧಗಳು"</li>\n\n"ಯಾವುದೇ ಆ್ಯಪ್‌ ಡೇಟಾವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುವುದಿಲ್ಲ."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ಆ್ಯಪ್‍‍ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ಆ್ಯಪ್‍ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸಲಾಗಿದೆ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ಎಲ್ಲಾ ಡೇಟಾ ಅಳಿಸಿ (ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್‌)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ಇವುಗಳು ಸೇರಿದಂತೆ ಇದು ನಿಮ್ಮ ವಾಹನದ ಹೆಡ್ ಯೂನಿಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ:\n\n"<li>"ನಿಮ್ಮ Google ಖಾತೆ"</li>\n<li>"ಸಿಸ್ಟಂ ಮತ್ತು ಆ್ಯಪ್‌ ಡೇಟಾ ಹಾಗೂ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</li>\n<li>"ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಆ್ಯಪ್‌ಗಳು"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ನೀವು ಪ್ರಸ್ತುತವಾಗಿ ಕೆಳಗಿನ ಖಾತೆಗಳಿಗೆ ಸೈನ್ ಇನ್ ಆಗಿರುವಿರಿ:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ಈ ವಾಹನದಲ್ಲಿ ಇತರ ಬಳಕೆದಾರರಿದ್ದಾರೆ."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ವಾಹನವನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ಮರುಹೊಂದಿಸುವುದೇ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ನಿಮ್ಮ ಎಲ್ಲ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ ಮತ್ತು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಬೇಕೇ? ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"ಅಳಿಸಲಾಗುತ್ತಿದೆ"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"ನಿರೀಕ್ಷಿಸಿ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ಡೇಟಾ ಅಳಿಸಿ (ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ಇನ್‌ಫೋಟೈನ್‌ಮೆಂಟ್ ಸಿಸ್ಟಂನ ಎಲ್ಲಾ ಡೇಟಾ ಮತ್ತು ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಿ"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ಇದರಿಂದಾಗಿ ಈ ಕೆಳಗಿನವೂ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ವಾಹನದ ಇನ್‌ಫೋಟೈನ್‌ಮೆಂಟ್ ಸಿಸ್ಟಂನಲ್ಲಿರುವ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ:\n\n"<li>"ನಿಮ್ಮ Google ಖಾತೆ"</li>\n<li>"ಸಿಸ್ಟಂ ಮತ್ತು ಆ್ಯಪ್ ಡೇಟಾ ಹಾಗೂ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</li>\n<li>"ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾದ ಆ್ಯಪ್‌ಗಳು"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ನೀವು ಪ್ರಸ್ತುತವಾಗಿ ಕೆಳಗಿನ ಖಾತೆಗಳಿಗೆ ಸೈನ್ ಇನ್ ಆಗಿರುವಿರಿ:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ಈ ವಾಹನದಲ್ಲಿ ಇತರ ಬಳಕೆದಾರರು ಉಪಸ್ಥಿತರಿದ್ದಾರೆ."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸಿ"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸಬೇಕೇ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ಇದರಿಂದಾಗಿ ಈ ಇನ್‌ಫೋಟೈನ್‌ಮೆಂಟ್ ಸಿಸ್ಟಂನಲ್ಲಿರುವ ನಿಮ್ಮ ಎಲ್ಲಾ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ ಡೇಟಾ, ಖಾತೆಗಳು ಮತ್ತು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾದ ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ.\n\nಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"ಅಳಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"ನಿರೀಕ್ಷಿಸಿ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ದಿನಾಂಕ ಮತ್ತು ಸಮಯ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ದಿನಾಂಕ, ಸಮಯ, ಸಮಯದ ವಲಯದ, ಮತ್ತು ಫರ್ಮ್ಯಾಟ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ಸ್ವಯಂಚಾಲಿತ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ನಿರ್ವಾಹಕರಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ಎಲ್ಲಾ ನಿರ್ವಾಹಕರ ಅನುಮತಿಗಳು"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ನಿರ್ವಹಣೆ ಮಾಡಿ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ಬಳಕೆದಾರರಿಗೆ ಇತರ ನಿರ್ವಾಹಕರು ಸೇರಿದಂತೆ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಮತ್ತು ಸಿಸ್ಟಂ ಅನ್ನು ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"ಈ ಪ್ರೊಫೈಲ್‌ಗೆ ನಿರ್ವಾಹಕರೂ ಸೇರಿದಂತೆ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ ಮತ್ತು ಸಿಸ್ಟಂ ಅನ್ನು ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುವುದಿಲ್ಲ."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ಹೌದು, ನಿರ್ವಹಣೆ ಮಾಡಿ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ಹೊಸ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಿ"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಿ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ಕಾರ್‌ನ ಮೊಬೈಲ್ ಡೇಟಾದ ಮೂಲಕ ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ಹೊಸ ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ಆ್ಯಪ್‌ಗಳನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ಹೊಸ ಬಳಕೆದಾರರು"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸುವುದೇ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ನೀವು ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಬಹುದು."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ಬಳಕೆದಾರರ ಮಿತಿ ತಲುಪಿದೆ"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">ನೀವು <xliff:g id="COUNT">%d</xliff:g> ಬಳಕೆದಾರರವರೆಗೆ ಸೇರಿಸಬಹುದು.</item>
-      <item quantity="other">ನೀವು <xliff:g id="COUNT">%d</xliff:g> ಬಳಕೆದಾರರವರೆಗೆ ಸೇರಿಸಬಹುದು.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ಹೊಸ ಪ್ರೊಫೈಲ್"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"ಹೊಸ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸಬೇಕೇ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ನೀವು ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ತಮ್ಮ ಸ್ಥಳವನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ಯಾವುದೇ ಪ್ರೊಫೈಲ್ ಇತರ ಎಲ್ಲಾ ಪ್ರೊಫೈಲ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಬಲ್ಲದು."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"ಪ್ರೊಫೈಲ್‌ನ ಮಿತಿಯನ್ನು ತಲುಪಿದ್ದೀರಿ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">ನೀವು ಗರಿಷ್ಠ <xliff:g id="COUNT">%d</xliff:g> ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಬಹುದು.</item>
+      <item quantity="other">ನೀವು ಗರಿಷ್ಠ <xliff:g id="COUNT">%d</xliff:g> ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಬಹುದು.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ಈ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸುವುದೇ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ಎಲ್ಲಾ ಆ್ಯಪ್‍‍ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ಹೊಸ ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ಈ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಬೇಕೇ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ಈ ಪ್ರೊಫೈಲ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ನೀವು ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿದಾಗ ಅಥವಾ ವಾಹನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಈ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ವಜಾಗೊಳಿಸಿ"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ಮರುಪ್ರಯತ್ನ"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ಬಳಕೆದಾರನನ್ನು ಅಳಿಸುವುದೇ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ಈ ಕಾರಿಗೆ ಉಳಿದಿರುವ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿದ ನಂತರ, ಹೊಸ ನಿರ್ವಾಹಕ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ಈ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಎಲ್ಲಾ ಡೇಟಾ, ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. ನೀವು ಸಿಸ್ಟಮ್ ಅನ್ನು ಮತ್ತೆ ಹೊಂದಿಸಬೇಕಾಗಿದೆ."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"ಉಳಿದಿರುವ ಕೊನೆಯ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಬೇಕೇ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ನೀವು ಈ ವಾಹನಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಉಳಿದಿರುವ ಏಕೈಕ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಿದರೆ, ಈ ಪ್ರೊಫೈಲ್‌ಗೆ ಸಂಬಂಧಿಸಿರುವ ಎಲ್ಲಾ ಡೇಟಾ, ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ರೀಸೆಟ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಹೊಸ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಬಹುದು."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"ಹೊಸ ನಿರ್ವಾಹಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ನಿಮಗೆ ಕನಿಷ್ಟ ಒಂದು ನಿರ್ವಾಹಕ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದನ್ನು ಅಳಿಸಲು, ಮೊದಲು ಬದಲಿ ಆಯ್ಕೆ ಮಾಡಿ."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ನಿರ್ವಾಹಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"ನೀವು (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ಹೆಸರು"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ಇನ್ನೂ ಸೆಟಪ್‌ ಮಾಡಿಲ್ಲ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ಪ್ರೊಫೈಲ್ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ಫೀಲ್ಡ್ ಖಾಲಿ ಇರುವಂತಿಲ್ಲ."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ನಮೂದಿಸಿದ ಬಳಕೆದಾರರ ಹೆಸರು ಅಮಾನ್ಯವಾಗಿದೆ."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ನಮೂದಿಸಿದ ಪ್ರೊಫೈಲ್ ಹೆಸರು ಅಮಾನ್ಯವಾಗಿದೆ."</string>
     <string name="users_list_title" msgid="770764290290240909">"ಬಳಕೆದಾರರು"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"ಪ್ರೊಫೈಲ್‌ಗಳು"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ಗೆ ಅನುಮತಿಗಳನ್ನು ನೀಡಲಾಗಿದೆ"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ಸಂಗ್ರಹಣೆ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"ಸಂಗೀತ &amp; ಆಡಿಯೋ"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ಆಡಿಯೋ ಫೈಲ್‌ಗಳು"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ಲೆಕ್ಕ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ಆ್ಯಪ್ ಗಾತ್ರ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ಬಳಕೆದಾರರ ಡೇಟಾ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ಪ್ರೊಫೈಲ್ ಡೇಟಾ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ಕ್ಯಾಷ್"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"ಒಟ್ಟು"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ಸಂಗ್ರಹಣೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
@@ -517,7 +550,7 @@
     <string name="no_accounts_added" msgid="5148163140691096055">"ಯಾವುದೇ ಖಾತೆಗಳನ್ನು ಸೇರಿಸಿಲ್ಲ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> ಅವರಿಗಾಗಿ ಖಾತೆಗಳು"</string>
     <string name="account_auto_sync_title" msgid="3238816995364191432">"ಡೇಟಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಿಂಕ್ ಮಾಡಿ"</string>
-    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ಆ್ಯಪ್‌ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೇಟಾವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಲು ಬಿಡಿ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ಆ್ಯಪ್‌ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೇಟಾವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಲಿ"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ಸ್ವಯಂ-ಸಿಂಕ್‌ ಡೇಟಾ ಆನ್‌‌ಮಾಡುವುದೇ?"</string>
     <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ವೆಬ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಖಾತೆಗಳಿಗೆ ಮಾಡಲಾದ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ ನಕಲಿಸಲಾಗುತ್ತದೆ. \n\nಫೋನ್‌ನಲ್ಲಿ ನೀವು ಮಾಡುವ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಕೆಲವು ಖಾತೆಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವೆಬ್‌ಗೆ ನಕಲಿಸುತ್ತವೆ. Google ಖಾತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ರೀತಿ ಇದು."</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ಸ್ವಯಂ-ಸಿಂಕ್‌ ಡೇಟಾ ಆಫ್‌ ಮಾಡುವುದೇ?"</string>
@@ -544,9 +577,18 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ಸಿಂಕ್ ರದ್ದುಗೊಳಿಸಿ"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ಸಿಂಕ್‌ ಪ್ರಸ್ತುತ ಸಮಸ್ಯೆ ಎದುರಿಸುತ್ತಿದೆ. ಶೀಘ್ರದಲ್ಲಿಯೇ ಅದು ಯಥಾಸ್ಥಿತಿಗೆ ಬರಲಿದೆ."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ಗೌಪ್ಯತೆ"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ವಾಹನದ ಡೇಟಾ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"ನಿಮ್ಮ ಸ್ಥಳಕ್ಕೆ ಆ್ಯಪ್ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"ಮೈಕ್ರೋಫೋನ್"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"ಮೈಕ್ರೋಫೋನ್‌ಗೆ ಆ್ಯಪ್‌ನ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ವಾಹನದ ಡೇಟಾ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ಈ ವಾಹನದಲ್ಲಿ ಉಳಿಸಿದ ಚಟುವಟಿಕೆಗಳು ಮತ್ತು ಮಾಹಿತಿಯನ್ನು ನಿರ್ವಹಿಸಿ"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಿ"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ಇನ್‌ಫೋಟೈನ್‌ಮೆಂಟ್ ಸಿಸ್ಟಂನಿಂದ ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಮತ್ತು ಖಾತೆಗಳನ್ನು ಅಳಿಸಿ"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ಗೆ ಈ ಕ್ರಿಯೆ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ಭದ್ರತೆ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ಪರದೆ ಲಾಕ್"</string>
-    <string name="security_lock_none" msgid="1054645093754839638">"ಯಾವುದೂ ಇಲ್ಲ"</string>
+    <string name="security_lock_none" msgid="1054645093754839638">"ಯಾವುದೂ ಅಲ್ಲ"</string>
     <string name="security_lock_pattern" msgid="1174352995619563104">"ಪ್ಯಾಟರ್ನ್"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"ಪಿನ್"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"ಪಾಸ್‌ವರ್ಡ್"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ಸರಿ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ತೆಗೆದುಹಾಕಿ"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ಇದು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಯಾರು ಬೇಕಾದರೂ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ಪ್ರೊಫೈಲ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಿ"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ಸ್ವಯಂಚಾಲಿತ ಅನ್‌ಲಾಕ್ ಮಾಡುವಿಕೆಯನ್ನು ಸೆಟಪ್ ಮಾಡಿ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ನಿಮ್ಮ ಪಿನ್ ನಮೂದಿಸಿ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ಸುರಕ್ಷತೆಗಾಗಿ, ಪಿನ್ ಅನ್ನು ಹೊಂದಿಸಿ"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> ಗಿಂತ ಕಡಿಮೆ ಅಂಕಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ಕೇವಲ 0-9 ಅಂಕಿಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಿರಬೇಕು."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ಇತ್ತೀಚಿನ ಪಿನ್ ಬಳಸಲು ಸಾಧನದ ನಿರ್ವಾಹಕರು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ಸರಳವಾದ ಪಿನ್‌ಗಳನ್ನು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಬೇರೆಯ ಪಿನ್ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ಸರಳವಾದ ಪಿನ್‌ಗಳನ್ನು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಬೇರೆಯ ಪಿನ್ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ಇದು ಅಮಾನ್ಯ ಅಕ್ಷರವನ್ನು ಒಳಗೊಂಡಿರಬಾರದು."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ಪಾಸ್‌ವರ್ಡ್‌ ಅಮಾನ್ಯವಾಗಿದೆ, ಕನಿಷ್ಠ 4 ಅಕ್ಷರಗಳು ಇರಬೇಕು."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ಇತ್ತೀಚಿನ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಲು ಸಾಧನದ ನಿರ್ವಾಹಕರು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"ಪಾಸ್‌ವರ್ಡ್‌ ಉಳಿಸುವಲ್ಲಿ ದೋಷ"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ಸರಳವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಬೇರೆಯ ಪಾಸ್‌ವರ್ಡ್‌ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ಸರಳವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಬೇರೆಯ ಪಾಸ್‌ವರ್ಡ್‌ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ಅಂಕಿಗಳ ಆರೋಹಣ, ಅವರೋಹಣ ಅಥವಾ ಪುನರಾವರ್ತಿತ ಅನುಕ್ರಮವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಆಯ್ಕೆಗಳು"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ದಿನಗಳ ಹಿಂದೆ"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"ಕೀಲಿಯನ್ನು ನಮೂದಿಸಿ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ಡೆಮೊದಿಂದ ನಿರ್ಗಮಿಸಿ"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ಡೆಮೊ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ಇದು ಡೆಮೊ ಖಾತೆಯನ್ನು ಅಳಿಸುತ್ತದೆ ಮತ್ತು ಫ್ಯಾಕ್ಟರಿ ಡೇಟಾ ಸಿಸ್ಟಂ ಅನ್ನು ರಿಸೆಟ್ ಮಾಡುತ್ತದೆ. ಎಲ್ಲಾ ಬಳಕೆದಾರ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ಇದರಿಂದ ಡೆಮೊ ಖಾತೆಯನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸಿಸ್ಟಂ ಅನ್ನು ಫ್ಯಾಕ್ಟರಿ ಡೇಟಾ ರೀಸೆಟ್ ಮಾಡಲಾಗುತ್ತದೆ. ಎಲ್ಲಾ ಪ್ರೊಫೈಲ್ ಡೇಟಾ ಕಳೆದುಹೋಗುತ್ತದೆ."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ಡೆಮೊದಿಂದ ನಿರ್ಗಮಿಸಿ"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ವಜಾಗೊಳಿಸಿ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ಡ್ರೈವ್ ಮಾಡುವಾಗ ಈ ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ಡ್ರೈವ್ ಮಾಡುವಾಗ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"ಡ್ರೈವ್ ಮಾಡುವಾಗ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant ಮತ್ತು ಧ್ವನಿ"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant ಆ್ಯಪ್"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ಸ್ಕ್ರೀನ್‌ನಿಂದ ಪಠ್ಯವನ್ನು ಬಳಸಿ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ಸ್ಕ್ರೀನ್‌ನ ವಿಷಯಗಳನ್ನು ಪ್ರವೇಶಿಸಲು Assistant ಗೆ ಅನುಮತಿಸಿ"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಅನ್ನು ಬಳಸಿ"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Assistant ಗೆ ಸ್ಕ್ರೀನ್ ಚಿತ್ರವನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ಇತ್ತೀಚೆಗೆ ಕಳುಹಿಸಿರುವುದು"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"ಪ್ರೊಫೈಲ್‌ಗಳು ಮತ್ತು ಖಾತೆಗಳು"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ಇತರ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ಒಂದು ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ಈ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅಳಿಸಿ"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index d0618a7..01f4061 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"디스플레이"</string>
     <string name="brightness" msgid="2919605130898772866">"밝기 수준"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"밝기 자동 조절"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"빛의 양에 따라 밝기 수준 최적화"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"화면 밝기를 환경에 맞게 조정"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"야간 조명 켜짐"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"화면, 터치스크린"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"화면 어둡게 하기, 터치스크린, 배터리"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"화면 어둡게 하기, 터치스크린, 배터리"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"화면 어둡게 하기, 밤, 농담 효과"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"야간 모드"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"네트워크 및 인터넷"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"모바일 네트워크"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"데이터 사용 경고 설정"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"데이터 사용 한도"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"설정"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM 네트워크"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s~%3$s에 %1$dMB 사용됨"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"다른 네트워크에 연결"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"네트워크 환경설정"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi 사용 설정 중..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi 사용 중지 중..."</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"네트워크에 연결하지 못했습니다."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"네트워크 추가"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"연결"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"연결 중…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"범위 안에 네트워크가 없음"</string>
     <string name="wifi_password" msgid="5565632142720292397">"비밀번호"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"비밀번호 표시"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"네트워크 이름을 입력하세요."</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"앱에서 헤드유닛이 <xliff:g id="TIMEOUT">%1$d</xliff:g>초 동안 다른 블루투스 기기에 표시되도록 설정하려고 합니다."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 블루투스를 사용 설정하고 헤드유닛이 <xliff:g id="TIMEOUT">%2$d</xliff:g>초 동안 다른 기기에 표시되도록 설정하려고 합니다."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"앱에서 블루투스를 사용 설정하고 헤드유닛이 <xliff:g id="TIMEOUT">%1$d</xliff:g>초 동안 다른 기기에 표시되도록 설정하려고 합니다."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"다른 기기에 %1$s(으)로 표시"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"내 기기"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"이전에 연결됨"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s 연결됨"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s 연결 해제됨"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"블루투스 페어링 요청"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"페어링 및 연결"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"블루투스 페어링 코드"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"기본 알림 소리"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"기본 알람 소리"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"저장"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"경고음"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"벨소리, 알림, 알람"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"밝기"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"어두운 곳에 맞게 화면 조정"</string>
     <string name="units_settings" msgid="402325305096925886">"단위"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"속도"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"거리"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"모든 앱 표시"</string>
     <string name="default_applications" msgid="1558183275638697087">"기본 앱"</string>
     <string name="app_permissions" msgid="32799922508313948">"앱 권한"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>을(를) 사용하는 앱"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"내 데이터에 대한 앱 액세스 권한 제어"</string>
     <string name="applications_settings" msgid="794261395191035632">"앱 정보"</string>
     <string name="force_stop" msgid="2153183697014720520">"강제 종료"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"강제 종료하시겠습니까?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"제거"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"이 앱을 사용 중지하면 Android와 다른 앱이 제대로 작동하지 않을 수도 있습니다."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"앱 사용 중지"</string>
-    <string name="not_installed" msgid="4218816013370552746">"이 사용자에게 설치되지 않음"</string>
+    <string name="not_installed" msgid="4163454337822508007">"이 프로필에 설치되지 않음"</string>
     <string name="permissions_label" msgid="2701446753515612685">"권한"</string>
     <string name="notifications_label" msgid="6586089149665170731">"알림"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"저장용량 및 캐시"</string>
     <string name="application_version_label" msgid="8556889839783311649">"버전: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"부여된 권한이 없습니다."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"요청한 권한이 없습니다."</string>
+    <string name="unused_apps" msgid="648471933781010395">"사용하지 않는 앱"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">사용하지 않는 앱 <xliff:g id="COUNT_1">%d</xliff:g>개</item>
+      <item quantity="one">사용하지 않는 앱 <xliff:g id="COUNT_0">%d</xliff:g>개</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"권한을 삭제하고 여유 공간 확보"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"내부 저장소의 %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"데이터 사용량"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"앱 데이터 사용량"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"항상 확인"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"이 앱에서 열지 않음"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"지원되는 링크"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"앱"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"최근에 연 앱"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"앱 %1$d개 모두 보기"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"권한 관리자"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"내 데이터에 대한 앱 액세스 권한 제어"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"어시스턴트용 기본 앱"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"시스템 및 기타 설정"</string>
     <string name="special_access" msgid="5730278220917123811">"특수 앱 액세스"</string>
     <string name="show_system" msgid="4401355756969485287">"시스템 표시"</string>
     <string name="hide_system" msgid="8845453295584638040">"시스템 숨기기"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"시스템 앱 숨기기"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"시스템 설정 수정"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"이 권한은 앱이 시스템 설정을 수정하도록 허용합니다."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"알림 액세스"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"최근 위치 요청 없음"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"앱 수준 권한"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"위치 서비스"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"위치 사용"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"시스템"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"시스템 업데이트"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"고급"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"정보, 법률 정보, 초기화 등"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 버전"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 보안 패치 수준"</string>
     <string name="hardware_info" msgid="3973165746261507658">"모델 및 하드웨어"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"다음 환경설정이 초기화됩니다.\n\n"<li>"사용 중지된 앱"</li>\n<li>"사용 중지된 앱 알림"</li>\n<li>"작업에 사용하는 기본 애플리케이션"</li>\n<li>"앱의 백그라운드 데이터 제한"</li>\n<li>"그 밖의 권한 제한"</li>\n\n"앱 데이터는 손실되지 않습니다."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"앱 초기화"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"앱 환경설정이 초기화되었습니다."</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"모든 데이터 삭제(초기화)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"초기화하면 다음을 포함한 차량 헤드 유닛의 모든 데이터가 삭제됩니다. \n\n"<li>"Google 계정"</li>\n<li>"시스템과 앱 데이터 및 설정"</li>\n<li>"다운로드한 앱"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"현재 다음 계정에 로그인함:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"이 차량에 다른 사용자가 있습니다."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"차량 초기화"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"초기화하시겠습니까?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"모든 개인 정보와 다운로드한 앱을 삭제하시겠습니까? 삭제한 후에는 작업을 취소할 수 없습니다."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"모두 삭제"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"삭제 중"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"잠시 기다려 주세요..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"모든 데이터 삭제(초기화)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"인포테인먼트 시스템에서 모든 데이터와 프로필 삭제"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"초기화하면 다음을 포함한 인포테인먼트 시스템의 모든 데이터가 삭제됩니다.\n\n"<li>"Google 계정"</li>\n<li>"시스템과 앱 데이터 및 설정"</li>\n<li>"다운로드한 앱"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"현재 로그인한 계정:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"이 차량에 다른 프로필이 있습니다."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"모든 데이터 삭제"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"모든 데이터를 삭제하시겠습니까?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"이 인포테인먼트 시스템의 모든 개인 프로필 데이터, 계정, 다운로드한 앱이 삭제됩니다.\n\n이 작업은 되돌릴 수 없습니다."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"모두 삭제"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"삭제 중"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"잠시 기다려 주세요..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"날짜 및 시간"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"날짜, 시간, 표준시간대 및 형식 설정"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"날짜/시간 자동설정"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"관리자로 로그인했습니다."</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"모든 관리자 권한"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"관리자 권한 부여"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"사용자는 다른 관리자를 포함한 사용자를 삭제하고 시스템을 초기화할 수 있게 됩니다."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"이 프로필은 다른 관리자를 포함한 프로필을 삭제할 수 있고 시스템을 초기화할 수 있습니다."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"이 작업은 되돌릴 수 없습니다."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"관리자 권한 부여"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"새 사용자 만들기"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"새 프로필 만들기"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"전화 걸기"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"자동차의 모바일 데이터를 통해 메시지 보내기"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"새 앱 설치"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"앱 제거"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"사용자 추가"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"새 사용자"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"새 사용자를 추가하시겠습니까?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"모든 사용자는 다른 사용자들을 위하여 앱을 업데이트할 수 있습니다."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"사용자 제한 도달"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">사용자는 <xliff:g id="COUNT">%d</xliff:g>명까지 만들 수 있습니다.</item>
-      <item quantity="one">사용자는 한 명만 만들 수 있습니다.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"프로필 추가"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"새 프로필"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"새 프로필을 추가하시겠습니까?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"추가된 새 프로필의 사용자는 자신만의 공간을 설정해야 합니다."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"모든 프로필에서 다른 프로필을 위해 앱을 업데이트할 수 있습니다."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"최대 프로필 개수에 도달"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">최대 <xliff:g id="COUNT">%d</xliff:g>개의 프로필을 만들 수 있습니다.</item>
+      <item quantity="one">프로필은 1개만 만들 수 있습니다.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"새 사용자를 만들지 못했습니다."</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"이 사용자를 삭제하시겠습니까?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"모든 앱과 데이터가 삭제됩니다."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"사용자를 삭제하지 못했습니다"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"새 프로필을 만들 수 없음"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"프로필을 삭제하시겠습니까?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"이 프로필의 모든 앱과 데이터가 삭제됩니다."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"프로필을 삭제할 수 없음"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"이 프로필은 프로필을 전환하거나 차량을 다시 시작할 때 삭제됩니다"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"닫기"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"재시도"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"마지막 사용자를 삭제하시겠습니까?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"이 자동차의 남은 사용자만 삭제한 후에 새 관리자를 생성합니다."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"이 사용자와 관련된 모든 데이터, 설정 및 앱이 삭제됩니다. 시스템을 다시 설정해야 합니다."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"마지막으로 남은 프로필을 삭제하시겠습니까?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"이 차량의 남은 유일한 프로필을 삭제하면 이 프로필에 연결된 모든 데이터, 설정, 앱이 삭제됩니다."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"초기화 후 새 프로필을 설정할 수 있습니다."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"새 관리자 선택"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"관리자 한 명 이상을 선택해야 합니다. 이 관리자를 삭제하려면 먼저 대체 관리자를 선택하세요."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"관리자 선택"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"사용자(%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"이름"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"설정되지 않음"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"사용자 이름 수정"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"프로필 이름 수정"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"입력란을 비워 둘 수 없습니다."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"입력한 사용자 이름이 올바르지 않습니다."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"입력한 프로필 이름이 올바르지 않습니다."</string>
     <string name="users_list_title" msgid="770764290290240909">"사용자"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"프로필"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s에 부여된 권한"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"저장용량"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"음악 및 오디오"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"오디오 파일"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"계산 중..."</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"앱 크기"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"사용자 데이터"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"프로필 데이터"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"캐시"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"합계"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"저장용량 비우기"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"동기화 취소"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"동기화에 현재 문제가 발생했습니다. 곧 다시 동기화됩니다."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"개인정보 보호"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"차량 데이터"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"위치에 대한 앱 액세스 제어"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"마이크"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"앱의 마이크 액세스 권한 제어"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"차량 데이터"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"차량에 저장된 활동 및 정보 관리"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"프로필 삭제"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"인포테인먼트 시스템에서 프로필과 계정을 삭제"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"이 프로필에서 사용할 수 없는 작업입니다."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"보안"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"화면 잠금"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"없음"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"확인"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"화면 잠금을 삭제하시겠습니까?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"화면 잠금을 삭제하면 누구나 계정에 액세스할 수 있습니다."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"프로필 잠금"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"자동 잠금 해제 설정"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN 입력"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"비밀번호 입력"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"보안을 위해 PIN을 설정하세요."</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>자리 미만이어야 합니다."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"숫자 0~9만 포함해야 합니다."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"기기 관리자가 최근 PIN 사용을 허용하지 않습니다."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT 관리자가 일반적으로 사용되는 PIN을 허용하지 않습니다. 다른 PIN으로 시도해 보세요."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT 관리자가 일반적으로 사용되는 PIN을 허용하지 않습니다. 다른 PIN으로 시도해 보세요."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"잘못된 문자를 포함할 수 없습니다."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"비밀번호는 4자 이상이어야 합니다."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"기기 관리자가 최근 비밀번호 사용을 허용하지 않습니다."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"비밀번호 저장 중 오류 발생"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT 관리자가 일반적으로 사용되는 비밀번호를 허용하지 않습니다. 다른 비밀번호로 시도해 보세요."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT 관리자가 일반적으로 사용되는 비밀번호를 허용하지 않습니다. 다른 비밀번호로 시도해 보세요."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"연속으로 올라가거나 내려가는 숫자 또는 반복되는 숫자의 배열은 허용되지 않습니다."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"화면 잠금 옵션"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g>일 전"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter 키"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"데모 종료"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"데모 모드 종료"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"데모 계정을 삭제하고 시스템을 초기화합니다. 사용자 데이터는 모두 사라집니다."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"데모 계정을 삭제하고 시스템을 초기화합니다. 프로필 데이터는 모두 사라집니다."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"데모 종료"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"닫기"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"운전 중에 사용할 수 없는 기능입니다."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"운전 중에는 사용자를 추가할 수 없습니다."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"운전 중에는 프로필을 추가할 수 없습니다."</string>
     <string name="default_search_query" msgid="3137420627428857068">"검색"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"어시스턴트 및 음성"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"어시스턴트 앱"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"화면의 텍스트 사용"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"어시스턴트가 화면 콘텐츠에 액세스하도록 허용"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"스크린샷 사용"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"어시스턴트가 화면 이미지에 액세스하도록 허용"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"최근에 보냄"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"모든 앱"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"프로필 및 계정"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"다른 프로필 관리"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"프로필 추가"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"이 프로필 삭제"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"프로필 추가"</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3ee7929..d6fbc15 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Экран"</string>
     <string name="brightness" msgid="2919605130898772866">"Жарык деңгээли"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Ыңгайлаштырылуучу жарык"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Жарык деңгээлин учурдагы жарыкка жараша өзгөртүү"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Экрандын жарыктыгын айлана-чөйрөгө жараша тууралоо"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Түнкү режим күйүк"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"экран, сенсордук экран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"күңүрт экран, сенсордук экран, батарея"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"күңүрт экран, сенсордук экран, батарея"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"күңүрт экран, түн, кошумча түс"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Түнкү режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Тармак жана Интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилдик тармак"</string>
@@ -48,7 +44,7 @@
     <string name="sim_change_data_message" msgid="4669775284395549069">"Мобилдик Интернет үчүн <xliff:g id="CARRIER2_0">%2$s</xliff:g> операторун колдонуп жатасыз. Эгер <xliff:g id="CARRIER1">%1$s</xliff:g> операторуна которулсаңыз, <xliff:g id="CARRIER2_1">%2$s</xliff:g> мобилдик Интернет үчүн колдонулбай калат."</string>
     <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> операторун колдонуу"</string>
     <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
-    <string name="roaming_summary" msgid="7476127740259728901">"Роуминг учурунда маалыматтарды өткөрүүчү кызматтарга туташасыз"</string>
+    <string name="roaming_summary" msgid="7476127740259728901">"Роуминг учурунда дайын-даректерди өткөрүүчү кызматтарга туташуу"</string>
     <string name="roaming_alert_title" msgid="4433901635766775763">"Интернет-роумингди иштетесизби?"</string>
     <string name="roaming_warning" msgid="4908184914868720704">"Роуминг акысын төлөп калышыңыз мүмкүн."</string>
     <string name="data_usage_settings" msgid="7877132994777987848">"Маалымат алмашуу"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Интернеттин сарпталышы жөнүндө эскертүү"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Трафикти чектөө"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Коюу"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM тармагы"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d Мб %2$s – %3$s колдонулду"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Башка тармакка кошулуу"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Тармак жөндөөлөрү"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi күйгүзүлүүдө…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi өчүрүлүүдө…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Тармакка туташпай калды"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Тармак кошуу"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Туташуу"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Туташууда…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Тармак тейлөө аймагында эмес"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Сырсөз"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Сырсөздү көрсөтүү"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Тармактын аталышын киргизиңиз"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Колдонмо негизги шайманыңызды башка Bluetooth түзмөктөрүнө <xliff:g id="TIMEOUT">%1$d</xliff:g> секундка көрүнүктүү кылганы жатат."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> Bluetooth\'ду күйгүзүп, негизги шайманыңызды башка түзмөктөр үчүн <xliff:g id="TIMEOUT">%2$d</xliff:g> секундка көрүнүктүү кылганы жатат."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Колдонмо Bluetooth\'ду күйгүзүп, негизги шайманыңызды башка түзмөктөр үчүн <xliff:g id="TIMEOUT">%1$d</xliff:g> секундка көрүнүктүү кылганы жатат."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Башка түзмөктөргө %1$s катары көрүнөт"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Менин түзмөктөрүм"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Мурда туташкан"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s туташты"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ажыратылды"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth жупташтыруу өтүнүчү"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Байланыштыруу жана туташтыруу"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth аркылуу байланыштыруу коду"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Билдирменин демейки үнү"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Ойготкучтун демейки үнү"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Сактоо"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Эскертүүлөрдүн үндөрү"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Рингтон, билдирмелер, ойготкуч"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Жарыктыгы"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Экрандын жарыктыгын күңүрт жерге жараша тууралоо"</string>
     <string name="units_settings" msgid="402325305096925886">"Бирдиктер"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Ылдамдык"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Аралык"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Бардык колдонмолорду көрсөтүү"</string>
     <string name="default_applications" msgid="1558183275638697087">"Демейки колдонмолор"</string>
     <string name="app_permissions" msgid="32799922508313948">"Колдонмонун уруксаттары"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Колдонмолор <xliff:g id="APPS">%1$s</xliff:g> функцияларын пайдаланууда"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Колдонмолордун маалыматты колдонуу мүмкүнчүлүгүн көзөмөлдөө"</string>
     <string name="applications_settings" msgid="794261395191035632">"Колдонмо тууралуу маалымат"</string>
     <string name="force_stop" msgid="2153183697014720520">"Мажбурлап токтотуу"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Токтотулсунбу?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Чыгарып салуу"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Эгер бул колдонмону өчүрсөңүз, Android жана башка колдонмолор талаптагыдай иштебей калышы мүмкүн."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Колдонмону өчүрүү"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Бул колдонуучу үчүн орнотулган эмес"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Бул профилде орнотулган эмес"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Уруксаттар"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Билдирмелер"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Сактагыч жана кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версиясы: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Бир да уруксат берилген жок"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Бир да уруксат суралган жок"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Иштетилбеген колдонмолор"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> иштетилбеген колдонмо</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> иштетилбеген колдонмо</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Уруксаттарды өчүрүп, орун бошотуңуз"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"Ички сактагычтын %s ээлеп турат"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Маалымат алмашуу"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Колдонмолордун трафиги"</string>
@@ -311,8 +328,8 @@
     <string name="assist_access_context_title" msgid="8034851731390785301">"Экрандагы текстти колдонуу"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"Көмөкчү колдонмого экрандагы текстти колдонууга уруксат берүү"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Скриншотту колдонуу"</string>
-    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Көмөкчү колдонмого экрандагы сүрөттү көрүүгө уруксат бересиз"</string>
-    <string name="voice_input_settings_title" msgid="3238707827815647526">"Айтып киргизүү"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Көмөкчү колдонмого экрандагы сүрөттү көрүү мүмкүнчүлүгүн бересиз"</string>
+    <string name="voice_input_settings_title" msgid="3238707827815647526">"Оозеки киргизүү"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Автотолтуруу кызматы"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Жок"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Тандалды"</string>
@@ -326,7 +343,7 @@
     <string name="domain_urls_summary_some" msgid="5523153458016701725">"<xliff:g id="DOMAIN">%s</xliff:g> жана башка URL\'дер ачылат"</string>
     <string name="app_launch_title" msgid="3442601467010363057">"Демейки боюнча ачуу"</string>
     <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"Башка демейкилер"</string>
-    <string name="auto_launch_disable_text" msgid="3595315315092716391">"Демейки маанилер коюлган жок."</string>
+    <string name="auto_launch_disable_text" msgid="3595315315092716391">"Демейкилер коюлган жок."</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"Бул колдонмо айрым аракеттер үчүн абалкы болуп орнотулган"</string>
     <string name="auto_launch_reset_text" msgid="590439611312092392">"Демейкилерди тазалоо"</string>
     <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Колдоого алынган шилтемелерди ачуу"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Ар дайым суралсын"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Бул колдонмодо ачылбасын"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Колдоого алынган шилтемелер"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Колдонмолор"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Жакында ачылган колдонмолор"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Бардык %1$d колдонмону көрүү"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Уруксаттарды башкаргыч"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Колдонмолордун маалыматты колдонуу мүмкүнчүлүгүн көзөмөлдөө"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Жардамчы жана башкалар үчүн"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Тутум жана башка жөндөөлөргө"</string>
     <string name="special_access" msgid="5730278220917123811">"Колдонмонун атайын уруксаты"</string>
     <string name="show_system" msgid="4401355756969485287">"Тутум процесстерин көрсөтүү"</string>
-    <string name="hide_system" msgid="8845453295584638040">"Системдик процесстерди жашыруу"</string>
+    <string name="hide_system" msgid="8845453295584638040">"Системалык процесстерди жашыруу"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Тутум колдонмолорун жашыруу"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Системанын жөндөөлөрүн өзгөртүү"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Колдонмо системанын жөндөөлөрүн өзгөртө алат."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Билдирмелерди угуу"</string>
@@ -345,8 +370,8 @@
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Эгер <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> үчүн билдирмени угуу уруксатын өчүрсөңүз, анын \"Тынчымды алба\" режимине да уруксаты жок болуп калышы мүмкүн."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Өчүрүү"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Жок"</string>
-    <string name="premium_sms_access_title" msgid="1409118461646148686">"Акы алынуучу SMS жөнөтүүгө уруксат"</string>
-    <string name="premium_sms_access_description" msgid="7119026067677052169">"Акы алынуучу SMS үчүн сизден акы алынып, ал операторуңуздун эсептерине кошулушу мүмкүн. Эгер кайсы бир колдонмого уруксат берсеңиз, ошол колдонмо аркылуу акы алынуучу SMS жөнөтө аласыз."</string>
+    <string name="premium_sms_access_title" msgid="1409118461646148686">"Артыкчылыктуу SMS жөнөтүүгө уруксат"</string>
+    <string name="premium_sms_access_description" msgid="7119026067677052169">"Артыкчылыктуу SMS үчүн сизден акы алынып, ал операторуңуздун эсептерине кошулушу мүмкүн. Эгер кайсы бир колдонмого уруксат берсеңиз, ошол колдонмо аркылуу артыкчылыктуу SMS жөнөтө аласыз."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"Колдонуу таржымалын көрүү"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"Колдонуу таржымалы аркылуу кайсы колдонмолор канчалык көп колдонула турганын, ошондой эле байланыш операторуңузду, тил жөндөөлөрүн жана башка параметрлерди көрө аласыз."</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi\'ды көзөмөлдөө"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Жакында изделген жерлер жок"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Колдонмонун уруксаттары"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Жайгашкан жерди аныктоо кызматтары"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Жайгашкан жерди колдонуу"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Тутум"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Системанын жаңыртуулары"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Өркүндөтүлгөн"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Маалымат, юридикалык маалымат, баштапкы абалга келтирүү жана башкалар"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android версиясы"</string>
     <string name="security_patch" msgid="4794276590178386903">"Коопсуздук тутумун жаңыртуу:"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Үлгү жана аппараттык камсыздоо"</string>
@@ -388,7 +418,7 @@
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Спутниктик сүрөттөр:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"Үлгү"</string>
     <string name="status_serial_number" msgid="9158889113131907656">"Сериялык номер"</string>
-    <string name="hardware_revision" msgid="5713759927934872874">"Аппараттын версиясы"</string>
+    <string name="hardware_revision" msgid="5713759927934872874">"Аппараттык камсыздоонун версиясы"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Үчүнчү тараптын уруксаттамалары"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Уруксаттамалар жүктөлүп жатканда көйгөй келип чыкты."</string>
@@ -417,19 +447,20 @@
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Жөндөөлөрдү кайра коюу"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Тармак жөндөөлөрү кайра коюлду"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"Колдонмонун жөндөөлөрүн баштапкы абалга келтирүү"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ушуну менен, төмөнкүлөр кайра жөндөлөт:\n\n"<li>"Өчүрүлгөн колдонмолор"</li>\n<li>"Өчүрүлгөн колдонмолордун билдирмелери"</li>\n<li>"Демейки колдонмолордун аракеттери"</li>\n<li>"Колдонмолордун Фондук режиминдеги чектөөлөрү"</li>\n<li>"Бардык уруксаттарды чектөөлөрs"</li>\n\n"Колдонмонун бардык маалыматтары сакталып калат."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ушуну менен, төмөнкүлөрдүн жөндөөлөрү баштапкы абалга келтирилет:\n\n"<li>"Өчүрүлгөн колдонмолор"</li>\n<li>"Өчүрүлгөн колдонмолордун билдирмелери"</li>\n<li>"Демейки колдонмолордун аракеттери"</li>\n<li>"Колдонмолордун Фондук режиминдеги чектөөлөрү"</li>\n<li>"Бардык уруксаттарды чектөөлөрs"</li>\n\n"Колдонмонун бардык дайындары сакталып калат."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Баштапкы абалга келтирүү"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Колдонмонун жөндөөлөрү баштапкы абалга келтирилди"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Бардык нерселерди өчүрүү"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Унааңыздын негизги тутумундагы бардык нерселер өчүрүлөт, тактап айтканда:\n\n"<li>"Google аккаунтуңуз"</li>\n<li>"Тутумдун жана колдонмолордун жөндөөлөрү жана дайындары"</li>\n<li>"Жүктөлүп алынган колдонмолор"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Учурда төмөнкү аккаунттарга кирип турасыз:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Бул унаада башка колдонуучулар бар."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Унааны баштапкы абалга келтирүү"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Кайра коесузбу?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Жеке маалыматыңыз менен жүктөп алган колдонмолоруңузду өчүрөсүзбү? Аларды кайра калыбына келтире албайсыз."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Баарын тазалоо"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Тазаланууда"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Күтө туруңуз…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Бардык дайындарды өчүрүү (демейки жөндөөлөргө кайтаруу)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Инфозоок тутумундагы бардык маалыматты жана профилдерди өчүрүү"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Унааңыздын инфозоок тутумундагы бардык маалымат өчүрүлөт, тактап айтканда:\n\n"<li>"Google аккаунтуңуз"</li>\n<li>"Тутумдун жана колдонмолордун жөндөөлөрү жана дайындары"</li>\n<li>"Жүктөлүп алынган колдонмолор"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Учурда төмөнкү аккаунттарга кирип турасыз:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Бул унаада башка профилдер бар."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Бардык маалыматты өчүрүү"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Бардык дайындар тазалансынбы?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ушуну менен жеке профилиңиздеги бардык маалымат, аккаунттар жана жүктөлүп алынган колдонмолор инфозоок тутумунан өчүрүлөт.\n\nБул аракетти артка кайтарууга болбойт."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Баарын тазалоо"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Өчүрүлүүдө"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Күтө туруңуз…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Күн жана убакыт"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Күндү, убакытты, убакыт алкагын, жана форматтарды жөндөө"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Тармактын күнү жана убакыты"</string>
@@ -452,35 +483,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Администратор катары кирдиңиз"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Администратордун бардык уруксаттары"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Админ кылуу"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Колдонуучу башка Админдерди жана колдонуучуларды өчүрүп, тутумду баштапкы жөндөөлөргө кайтара алат."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Профиль башка Админдерди жана профилдерди өчүрүп, тутумду баштапкы жөндөөлөргө кайтара алат."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Бул аракетти кайтарууга болбойт."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ооба, админ кылуу"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Жаңы колдонуучуларды түзүү"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Жаңы профилдерди түзүү"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефон чалуу"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Унаадагы Интернет аркылуу жазышуу"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Жаңы колдонмолорду орнотуу"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Колдонмолорду чыгарып салуу"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Колдонуучу кошуу"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңы колдонуучу"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Колдонуучуну кошосузбу?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Жаңы колдонуучу кошулганда, ал өзүнүн профилин жөндөп алышы керек."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Колдонмолорду бир колдонуучу жаңыртканда, ал калган бардык колдонуучулар үчүн да жаңырат."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Дагы колдонуучу кошууга болбойт"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> колдонуучуга чейин кошууга болот.</item>
-      <item quantity="one">Бир колдонуучуну гана кошууга болот.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Профиль кошуу"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Жаңы профиль"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Жаңы профиль кошулсунбу?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Жаңы профиль кошулганда, ал өзүнүн профилин жөндөп алышы керек."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Профилдерди бир профиль жаңыртканда, ал калган бардык колдонуучулар үчүн да жаңырат."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Профилдердин саны чекке жетти"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> профилге чейин гана түзүүгө болот.</item>
+      <item quantity="one">Бир профилди гана түзүүгө болот.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Жаңы колдонуучу кошулбай калды"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Бул колдонуучуну өчүрөсүзбү?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Бардык колдонмолор жана алардагы нерселер өчүрүлөт."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Колдонуучу өчүрүлгөн жок."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Жаңы профиль түзүлгөн жок"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Бул профиль жок кылынсынбы?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Бул профилдеги бардык колдонмолор жана маалыматтар өчүрүлөт"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Профиль жок кылынбай калды."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Профилдерди которуштуруп же унааны өчүрүп күйгүзгөнүңүздө, бул профиль өчүрүлөт."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Четке кагуу"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Кайталоо"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Акыркы колдонуучу өчүрүлсүнбү?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Бул унаанын жалгыз колдонуучусун өчүргөндөн кийин, жаңы администратордун профили түзүлөт."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Бул колдонуучуга байланышкан бардык дайындар, жөндөөлөр жана колдонмолор өчүрүлөт. Тутумду кайрадан жөндөшүңүз керек болот."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Акыркы профиль өчүрүлсүнбү?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Эгер бул унаадагы акыркы профилди өчүрсөңүз, ал профиль менен байланышкан бардык маалымат, жөндөөлөр жана колдонмолор өчүрүлөт."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Баштапкы абалга келтирилгенден кийин жаңы профилди жөндөп алсаңыз болот."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Жаңы администраторду тандоо"</string>
-    <string name="choose_new_admin_message" msgid="7468286545352043354">"Жок дегенде бир администраторуңуз болушу керек. Бул администраторду өчүрүү үчүн биринчиден ордуна башка бирөөнү тандаңыз."</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Жок дегенде бир администраторуңуз болушу керек. Бул администраторду өчүрүү үчүн, биринчиден ордуна башка бирөөнү тандаңыз."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Администраторду тандоо"</string>
     <string name="user_guest" msgid="3465399481257448601">"Конок"</string>
     <string name="start_guest_session" msgid="4438752398760283201">"Конок"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Сиз (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Колдонуучунун аты"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Түзүлгөн жок"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Колдонуучунун атын өзгөртүү"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Профилдин аталышын түзөтүү"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Талаа бош болбошу керек."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Киргизилген колдонуучунун аты жараксыз."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Киргизилген профилдин аталышы туура эмес."</string>
     <string name="users_list_title" msgid="770764290290240909">"Колдонуучулар"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профилдер"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Төмөнкү колдонуучунун уруксаттары: %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Сактагыч"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музыка жана аудио"</string>
@@ -502,11 +535,11 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудио файлдар"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Эсептелүүдө…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Колдонмонун көлөмү"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Колдонуучунун нерселери"</string>
-    <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Профилдин маалыматы"</string>
+    <string name="storage_cache_size_label" msgid="6361308766707419555">"Кэш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Жалпы"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Сактагычты тазалоо"</string>
-    <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Кешти тазалоо"</string>
+    <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Кэшти тазалоо"</string>
     <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Колдонмонун дайындары өчүрүлсүнбү?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Бул колдонмодогу файлдар, жөндөөлөр, аккаунттар жана маалымат базасы сыяктуу бардык нерселер биротоло өчүрүлөт."</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Колдонмонун сактагычы тазаланган жок."</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Шайкештирүүнү жокко чыгаруу"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Учурда шайкештирүү көйгөйгө дуушар болууда. Ал бир аздан кийин калыбына келет."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Купуялык"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Унаа тууралуу маалымат"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Колдонмолордун кайда жүргөнүңүздү көрүү мүмкүнчүлүгүн көзөмөлдөйсүз"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Колдонмолордун микрофонго болгон мүмкүнчүлүгүн көзөмөлдөө"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Унаа тууралуу маалымат"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Бул унаадагы аракеттерди жана сакталган маалыматты башкаруу"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Профилди жок кылуу"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Инфозоок тутумундагы бардык профилдерди жана аккаунттарды өчүрүү"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Бул аракет профилиңизде жеткиликсиз"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Коопсуздук"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Экран кулпусу"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Жок"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Жарайт"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Экранды кулпулабайсызбы?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Аккаунтуңузга каалаган киши кире берет"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Профилди кулпулоо"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Кулпусун автоматтык түрдө ачууну жөндөө"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN кодуңузду киргизиңиз"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Сырсөзүңүздү киргизиңиз"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Коопсуздук үчүн PIN код коюп алыңыз"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> сандан ашпашы керек"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"0-9 сандарынан гана турушу керек."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Түзмөктүн администратору акыркы PIN кодду колдонууга тыюу салган"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Жөнөкөй PIN-коддорду коюу IT администраторуңуз тарабынан бөгөттөлгөн. Татаалыраак PIN-кодду коюп көрүңүз."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Жөнөкөй PIN-коддорду коюу IT администраторуңуз тарабынан бөгөттөлгөн. Татаалыраак PIN-кодду коюп көрүңүз."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Бул жерде жараксыз белги камтылбашы керек."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Сырсөз жараксыз, кеминде 4 белгиден турушу керек."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Түзмөктүн администратору акыркы сырсөздү колдонууга тыюу салган"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Сырсөздү сактоо катасы"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Жөнөкөй сырсөздөрү коюу IT администраторуңуз тарабынан бөгөттөлгөн. Татаалыраак сырсөздү коюп көрүңүз."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Жөнөкөй сырсөздөрү коюу IT администраторуңуз тарабынан бөгөттөлгөн. Татаалыраак сырсөздү коюп көрүңүз."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандар чоңойгон, кичирейген же кайталанган ыраатта болбошу керек."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды кулпулоо ыкмалары"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн мурун"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter баскычы"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Демо режимден чыгуу"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Демо режимден чыгасызбы?"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ушуну менен демо аккаунт жок кылынып, тутум кайра башынан жөндөлөт. Колдонуучунун бардык маалыматтары өчүрүлөт."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ушуну менен демо аккаунт жок кылынып, тутум кайра башынан жөндөлөт. Профилдин бардык дайындары өчүрүлөт."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Демо режимден чыгуу"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЧЕТКЕ КАГУУ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Унаа айдаганда бул функция жеткиликтүү эмес"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Унаа айдап баратканда колдонуучуну кошууга болбойт"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Унаа айдап баратканда профиль кошууга болбойт"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Издөө"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Жардамчы жана үн"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Жардамчы колдонмо"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Экрандагы текстти колдонуу"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Жардамчыга экрандагы мазмунду колдонууга уруксат берүү"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Скриншотту колдонуу"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Жардамчыга экрандагы сүрөттү колдонууга уруксат берүү"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Акыркы жолу жөнөткөндөр"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Бардык колдонмолор"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профилдер жана аккаунттар"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Башка профилдерди башкаруу"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Профиль кошуу"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Бул профилди өчүрүү"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Профиль кошуу"</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index c7350dd..a56e71f 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ການສະແດງຜົນ"</string>
     <string name="brightness" msgid="2919605130898772866">"ລະດັບຄວາມສະຫວ່າງ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ຄວາມສະຫວ່າງແບບປັບອັດຕະໂນມັດ"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ປັບລະດັບຄວາມສະຫວ່າງໃຫ້ເໝາະສົມກັບແສງທີ່ມີ"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ປັບຄວາມສະຫວ່າງຂອງໜ້າຈໍຕາມສະພາບແວດລ້ອມ"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ເປີດແສງກາງຄືນແລ້ວ"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ໜ້າຈໍ, ໜ້າຈໍສຳພັດ"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ໜ້າຈໍມືດລົງ, ໜ້າຈໍສຳຜັດ, ແບັດເຕີຣີ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ໜ້າຈໍມືດລົງ, ໜ້າຈໍສຳຜັດ, ແບັດເຕີຣີ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ໜ້າຈໍມືດລົງ, ກາງຄືນ, ສີອ່ອນ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ໂໝດກາງຄືນ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ເຄືອຂ່າຍມືຖື"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ຕັ້ງຄ່າຄຳເຕືອນການນຳໃຊ້ຂໍ້ມູນ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ຕັ້ງຄ່າຂີດຈຳກັດການນຳໃຊ້ຂໍ້ມູນ"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ຕົກລົງ"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"ເຄືອຂ່າຍ OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"ໃຊ້ແລ້ວ %1$d MB ແຕ່ວັນທີ %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"ເຂົ້າຮ່ວມເຄືອຂ່າຍອື່ນ"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ການຕັ້ງຄ່າເຄືອຂ່າຍ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ກຳລັງເປີດ Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ກຳລັງປິດ Wi-Fi..."</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ເຊື່ອມຕໍ່ເຄືອຂ່າຍບໍ່ສຳເລັດ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ເພີ່ມເຄືອຂ່າຍ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ເຊື່ອມຕໍ່"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ກຳລັງເຊື່ອມຕໍ່…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ເຄືອຂ່າຍບໍ່ຢູ່ໃນໄລຍະ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ລະຫັດຜ່ານ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ສະແດງລະຫັດຜ່ານ"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ກະລຸນາປ້ອນຊື່ເຄືອຂ່າຍ"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ມີແອັບຕ້ອງການເຮັດໃຫ້ອຸປະກອນ Bluetooth ອື່ນເບິ່ງເຫັນລະບົບເຄື່ອງສຽງຂອງທ່ານໄດ້ເປັນເວລາ <xliff:g id="TIMEOUT">%1$d</xliff:g> ວິນາທີ."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ຕ້ອງການເປີດ Bluetooth ແລະ ເຮັດໃຫ້ອຸປະກອນອື່ນເບິ່ງເຫັນລະບົບເຄື່ອງສຽງຂອງທ່ານໄດ້ເປັນເວລາ <xliff:g id="TIMEOUT">%2$d</xliff:g> ວິນາທີ."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ມີແອັບຕ້ອງການເປີດໃຊ້ Bluetooth ແລະ ເຮັດໃຫ້ອຸປະກອນອື່ນເບິ່ງເຫັນລະບົບເຄື່ອງສຽງຂອງທ່ານໄດ້ເປັນເວລາ <xliff:g id="TIMEOUT">%1$d</xliff:g> ວິນາທີ."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"ອຸປະກອນອື່ນເຫັນເປັນ %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ອຸປະກອນຂອງຂ້ອຍ"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ເຊື່ອມຕໍ່ກ່ອນໜ້ານີ້"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"ເຊື່ອມຕໍ່ %1$s ແລ້ວ"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"ຕັດການເຊື່ອມຕໍ່ %1$s ແລ້ວ"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ຄຳຂໍຈັບຄູ່ Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ຈັບຄູ່ ແລະ ເຊື່ອມຕໍ່"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ລະຫັດຈັບຄູ່ Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ສຽງການແຈ້ງເຕືອນເລີ່ມຕົ້ນ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ສຽງ​ໂມງ​ປຸກ​ຕາມຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ບັນທຶກ"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"ສຽງແຈ້ງເຕືອນ"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ສຽງຣິງໂທນ, ການແຈ້ງເຕືອນ, ໂມງປຸກ"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ຄວາມສະຫວ່າງ"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ປັບໜ້າຈໍສຳລັບແສງນ້ອຍ"</string>
     <string name="units_settings" msgid="402325305096925886">"ຫົວໜ່ວຍ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ຄວາມໄວ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ໄລຍະທາງ"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"ສະແດງແອັບທັງໝົດ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ແອັບເລີ່ມຕົ້ນ"</string>
     <string name="app_permissions" msgid="32799922508313948">"ການອະນຸຍາດແອັບ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"ແອັບທີ່ກຳລັງໃຊ້ <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"ຄວບຄຸມສິດເຂົ້າເຖິງແອັບທີ່ມີຕໍ່ຂໍ້ມູນຂອງທ່ານ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ຂໍ້ມູນແອັບ"</string>
     <string name="force_stop" msgid="2153183697014720520">"ບັງຄັບຢຸດ"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ບັງຄັບປິດບໍ?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"ຖອນການຕິດຕັ້ງ"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ຖ້າທ່ານປິດນຳໃຊ້ແອັບນີ້, Android ແລະ ແອັບອື່ນອາດບໍ່ເຮັດວຽກຕາມທີ່ຖືກອອກແບບມາໄດ້."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ປິດນຳໃຊ້ແອັບ"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ບໍ່ໄດ້ຕິດຕັ້ງສຳລັບຜູ້ໃຊ້ນີ້"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ບໍ່ໄດ້ຕິດຕັ້ງສຳລັບໂປຣໄຟລ໌ນີ້"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ການອະນຸຍາດ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ການແຈ້ງເຕືອນ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ບ່ອນຈັດເກັບຂໍ້ມູນ ແລະ ແຄສ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ເວີຊັນ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ບໍ່ໄດ້ໃຫ້ການອະນຸຍາດໃດ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ບໍ່ມີການຮ້ອງຂໍການອະນຸຍາດໃດ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ແອັບທີ່ບໍ່ໄດ້ໃຊ້"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ແອັບທີ່ບໍ່ໄດ້ໃຊ້</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ແອັບທີ່ບໍ່ໄດ້ໃຊ້</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ລຶບການອະນຸຍາດອອກ ແລະ ຂະຫຍາຍພື້ນທີ່ຫວ່າງ"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s ໃນພື້ນທີ່ຈັດເກັບພາຍໃນ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ການໃຊ້ຂໍ້ມູນ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ການໃຊ້ຂໍ້ມູນແອັບ"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ຖາມທຸກເທື່ອ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ຢ່າເປີດໃນແອັບນີ້"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ລິ້ງທີ່ຮອງຮັບ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ແອັບ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ເປີດຫຼ້າສຸດ"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"ເບິ່ງ %1$d ແອັບທັງໝົດ"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"ຕົວຈັດການສິດອະນຸຍາດ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"ຄວບຄຸມສິດເຂົ້າເຖິງແອັບທີ່ມີຕໍ່ຂໍ້ມູນຂອງທ່ານ"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"ສຳລັບຜູ້ຊ່ວຍ ແລະ ອື່ນໆ"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ໄປຍັງລະບົບ ແລະ ການຕັ້ງຄ່າອື່ນ"</string>
     <string name="special_access" msgid="5730278220917123811">"ສິດການເຂົ້າເຖິງແອັບພິເສດ"</string>
     <string name="show_system" msgid="4401355756969485287">"ສະແດງລະບົບ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ເຊື່ອງລະບົບ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ເຊື່ອງແອັບລະບົບໄວ້"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"ແກ້ໄຂການຕັ້ງຄ່າລະບົບ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ການອະນຸຍາດນີ້ອະນຸຍາດໃຫ້ແອັບແກ້ໄຂການຕັ້ງຄ່າລະບົບໄດ້."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"ການເຂົ້າເຖິງການແຈ້ງເຕືອນ"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ບໍ່ມີຄຳຂໍຂໍ້ມູນສະຖານທີ່ຫຼ້າສຸດ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ການອະນຸຍາດລະດັບແອັບ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ການບໍລິການສະຖານທີ່"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ໃຊ້ສະຖານທີ່"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ລະບົບ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"ການອັບເດດລະບົບ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"ຂັ້ນສູງ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ກ່ຽວກັບ, ຂໍ້ມູນທາງກົດໝາຍ, ຣີເຊັດ ແລະ ອື່ນໆ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"ເວີຊັນ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"ລະດັບໂປຣແກຣມແກ້ໄຂຄວາມປອດໄພ Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ຮຸ່ນ ແລະ ຮາດແວ"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ນີ້ຈະຣີເຊັດການຕັ້ງຄ່າທັງໝົດສຳລັບ:\n\n"<li>"ແອັບທີ່ປິດນຳໃຊ້"</li>\n<li>"ການແຈ້ງເຕືອນແອັບທີ່ປິດນຳໃຊ້"</li>\n<li>"ແອັບພລິເຄຊັນເລີ່ມຕົ້ນສຳລັບຄຳສັ່ງຕ່າງໆ"</li>\n<li>"ການຈຳກັດຂໍ້ມູນໃນພື້ນຫຼັງສຳລັບແອັບ"</li>\n<li>"ການຈຳກັດການອະນຸຍາດຕ່າງໆ"</li>\n\n"ທ່ານຈະບໍ່ເສຍຂໍ້ມູນແອັບໃດໆ."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ຣີເຊັດແອັບ"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ຣີເຊັດການຕັ້ງຄ່າແອັບແລ້ວ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ລຶບຂໍ້ມູນທັງໝົດ (ຣີເຊັດເປັນຄ່າຈາກໂຮງງານ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ນີ້ຈະລຶບຂໍ້ມູນທັງໝົດອອກຈາກລະບົບເຄື່ອງສຽງໃນພາຫານະຂອງທ່ານ, ຮວມທັງ:\n\n"<li>"ບັນຊີ Google ຂອງທ່ານ"</li>\n<li>"ຂໍ້ມູນ ແລະ ການຕັ້ງຄ່າຂອງລະບົບ ແລະ ແອັບ"</li>\n<li>"ແອັບທີ່ດາວໂຫຼດ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ປັດຈຸບັນທ່ານຢູ່ໃນລະບົບບັນຊີຕໍ່ໄປນີ້:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ມີຜູ້ໃຊ້ອື່ນປາກົດໃນພາຫານະນີ້."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ຣີເຊັດພາຫານະ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ຣີເຊັດບໍ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ລຶບຂໍ້ມູນສ່ວນຕົວ ແລະ ແອັບທີ່ດາວໂຫຼດມາທັງໝົດຂອງທ່ານບໍ? ທ່ານບໍ່ສາມາດຍົກເລີກຄຳສັ່ງນີ້ໄດ້!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ລຶບທຸກຢ່າງ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"ກຳລັງລຶບ"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"ກະລຸນາລໍຖ້າ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ລຶບຂໍ້ມູນທັງໝົດ (ຣີເຊັດເປັນຄ່າຈາກໂຮງງານ)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ລຶບຂໍ້ມູນ ແລະ ໂປຣໄຟລ໌ທັງໝົດຈາກລະບົບສາລະບັນເທີງ"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ນີ້ຈະລຶບຂໍ້ມູນທັງໝົດອອກຈາກລະບົບສາລະບັນເທີງຂອງພາຫານະຂອງທ່ານ, ຮວມທັງ:\n\n"<li>"ບັນຊີ Google ຂອງທ່ານ"</li>\n<li>"ຂໍ້ມູນ ແລະ ການຕັ້ງຄ່າຂອງລະບົບ ແລະ ແອັບ"</li>\n<li>"ແອັບທີ່ດາວໂຫຼດ"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ປັດຈຸບັນທ່ານຢູ່ໃນລະບົບບັນຊີຕໍ່ໄປນີ້:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ມີຜູ້ໃຊ້ອື່ນປະກົດໃນພາຫານະນີ້."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ລຶບຂໍ້ມູນທັງໝົດ"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ລຶບຂໍ້ມູນທັງໝົດບໍ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ນີ້ຈະລຶບຂໍ້ມູນໂປຣໄຟລ໌ສ່ວນຕົວ, ບັນຊີ ແລະ ແອັບທີ່ດາວໂຫຼດຂອງທ່ານທັງໝົດໃນລະບົບສາລະບັນເທີງ. \n\nທ່ານບໍ່ສາມາດຍົກເລີກຄຳສັ່ງນີ້ໄດ້."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ລຶບທຸກຢ່າງ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"ກຳລັງລຶບ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"ກະລຸນາລໍຖ້າ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ວັນທີ ແລະ ເວລາ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ຕັ້ງວັນທີ, ເວລາ, ເຂດ ແລະ ຮູບແບບເວລາ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ວັນທີ ແລະ ເວລາອັດຕະໂນມັດ"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ເຂົ້າສູ່ລະບົບເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ການອະນຸຍາດຂອງຜູ້ເບິ່ງແຍງລະບົບທັງໝົດ"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ຕັ້ງໃຫ້ເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ຜູ້ໃຊ້ນີ້ຈະສາມາດລຶບຜູ້ໃຊ້ອື່ນ ຮວມທັງຜູ້ເບິ່ງແຍງລະບົບອື່ນ ແລະ ຣີເຊັດລະບົບເປັນຄ່າໂຮງງານໄດ້."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"ໂປຣໄຟລ໌ຈະສາມາດລຶບໂປຣໄຟລ໌, ຮວມທັງຜູ້ເບິ່ງແຍງລະບົບອື່ນ ແລະ ຣີເຊັດລະບົບເປັນຄ່າຈາກໂຮງງານ."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ຄຳສັ່ງນີ້ບໍ່ສາມາດຍົກເລີກໄດ້."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ແມ່ນ, ຕັ້ງໃຫ້ເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ສ້າງຜູ້ໃຊ້ໃໝ່"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ສ້າງໂປຣໄຟລ໌ໃໝ່"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ໂທລະສັບ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ການຮັບສົ່ງຂໍ້ຄວາມຜ່ານອິນເຕີເນັດມືຖືຂອງລົດ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ຕິດຕັ້ງແອັບໃໝ່"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ຖອນຕິດຕັ້ງແອັບ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ເພີ່ມຜູ້ໃຊ້"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ຜູ້ໃຊ້ໃໝ່"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ເພີ່ມຜູ້ໃຊ້ໃໝ່ບໍ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈຳເປັນຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ຜູ້ໃຊ້ຕ່າງໆສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ອື່ນທັງໝົດໄດ້."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ຮອດຂີດຈຳກັດຜູ້ໃຊ້ແລ້ວ"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">ທ່ານສາມາດສ້າງຜູ້ໃຊ້ໄດ້ບໍ່ເກີນ <xliff:g id="COUNT">%d</xliff:g> ຄົນ.</item>
-      <item quantity="one">ສາມາດສ້າງຜູ້ໃຊ້ໄດ້ໜຶ່ງຄົນເທົ່ານັ້ນ.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"ເພີ່ມໂປຣໄຟລ໌"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ໂປຣໄຟລ໌ໃໝ່"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"ເພີ່ມໂປຣໄຟລ໌ໃໝ່ບໍ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈຳເປັນຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າ."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ໂປຣໄຟລ໌ສາມາດອັບເດດແອັບຈາກໂປຣໄຟລ໌ອື່ນທັງໝົດ."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"ຮອດຂີດຈຳກັດໂປຣໄຟລ໌ແລ້ວ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">ທ່ານສາມາດສ້າງໄດ້ບໍ່ເກີນ <xliff:g id="COUNT">%d</xliff:g> ໂປຣໄຟລ໌.</item>
+      <item quantity="one">ສາມາດສ້າງໄດ້ພຽງໂປຣໄຟລ໌ດຽວເທົ່ານັ້ນ.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ສ້າງຜູ້ໃຊ້ໃໝ່ບໍ່ສຳເລັດ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ລຶບຜູ້ໃຊ້ນີ້ບໍ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ແອັບ ແລະ ຂໍ້ມູນທັງໝົດຈະຖືກລຶບ."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ລຶບຜູ້ໃຊ້ບໍ່ສຳເລັດ."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ສ້າງໂປຣໄຟລ໌ໃໝ່ບໍ່ສຳເລັດ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ລຶບໂປຣໄຟລ໌ນີ້ບໍ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ແອັບ ແລະ ຂໍ້ມູນທັງໝົດສຳລັບໂປຣໄຟລ໌ນີ້ຈະຖືກລຶບ."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ລຶບໂປຣໄຟລ໌ບໍ່ສຳເລັດ."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ໂປຣໄຟລ໌ນີ້ຈະຖືກລຶບເມື່ອທ່ານປ່ຽນໂປຣໄຟລ໌ ຫຼື ຣິສະຕາດພາຫານະ."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ປິດໄວ້"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ລອງໃໝ່"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ລຶບຜູ້ໃຊ້ສຸດທ້າຍບໍ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ຫຼັງຈາກລຶບຜູ້ໃຊ້ທີ່ຍັງເຫຼືອໜຶ່ງດຽວສຳລັບລົດນີ້ອອກ, ຜູ້ໃຊ້ທີ່ເປັນຜູ້ເບິ່ງແຍງລະບົບໃໝ່ຈະຖືກສ້າງຂຶ້ນ."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ຂໍ້ມູນ, ການຕັ້ງຄ່າ ແລະ ແອັບທັງໝົດທີ່ກ່ຽວຂ້ອງກັບຜູ້ໃຊ້ນີ້ຈະຖືກລຶບ. ທ່ານຈະຈຳເປັນຕ້ອງຕັ້ງຄ່າລະບົບອີກຄັ້ງ."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"ລຶບໂປຣໄຟລ໌ທີ່ຍັງເຫຼືອສຸດທ້າຍບໍ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ຖ້າທ່ານລຶບໂປຣໄຟລ໌ທີ່ຍັງເຫຼືອເທົ່ານັ້ນສຳລັບພາຫະນະນີ້, ຂໍ້ມູນ, ການຕັ້ງຄ່າ ແລະ ແອັບທັງໝົດທີ່ເຊື່ອມໂຍງກັບໂປຣໄຟລ໌ໃໝ່ຈະຖືກລຶບ."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ຫຼັງຈາກຣີເຊັດແລ້ວ, ທ່ານສາມາດຕັ້ງຄ່າໂປຣໄຟລ໌ໃໝ່."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"ເລືອກຜູ້ເບິ່ງແຍງລະບົບໃໝ່"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ທ່ານຈຳເປັນຕ້ອງມີຜູ້ເບິ່ງແຍງລະບົບຢ່າງໜ້ອຍໜຶ່ງຄົນ. ເພື່ອລຶບຜູ້ເບິ່ງແຍງລະບົບນີ້ອອກ, ກະລຸນາເລືອກຜູ້ປ່ຽນແທນກ່ອນ."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ເລືອກຜູ້ເບິ່ງແຍງລະບົບ"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"ທ່ານ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ຊື່"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ບໍ່ໄດ້ຕັ້ງຄ່າ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ແກ້ໄຊຊື່ຜູ້ໃຊ້"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ແກ້ໄຂຊື່ໂປຣໄຟລ໌"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ຊ່ອງຂໍ້ມູນບໍ່ສາມາດຫວ່າງເປົ່າໄດ້."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ຊື່ຜູ້ໃຊ້ທີ່ປ້ອນເຂົ້າບໍ່ຖືກຕ້ອງ."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ຊື່ໂປຣໄຟລ໌ທີ່ປ້ອນບໍ່ຖືກຕ້ອງ."</string>
     <string name="users_list_title" msgid="770764290290240909">"ຜູ້ໃຊ້"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"ໂປຣໄຟລ໌"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"ໃຫ້ການອະນຸຍາດແກ່ %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ບ່ອນຈັດເກັບຂໍ້ມູນ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"ເພງ ແລະ ສຽງ"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ໄຟລ໌ສຽງ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ກຳລັງຄິດໄລ່…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ຂະໜາດແອັບ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ຂໍ້ມູນຜູ້ໃຊ້"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ຂໍ້ມູນໂປຣໄຟລ໌"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ແຄສ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"ທັງໝົດ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ລຶບລ້າງບ່ອນຈັດເກັບຂໍ້ມູນ"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ຍົກເລີກການຊິ້ງຂໍ້ມູນ"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ການຊິ້ງຂໍ້ມູນກຳລັງປະສົບບັນຫາຢູ່ໃນປັດຈຸບັນ. ມັນຈະກັບມາໃຊ້ໄດ້ໃນໄວໆນີ້."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ຄວາມເປັນສ່ວນຕົວ"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ຂໍ້ມູນພາຫະນະ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"ຄວບຄຸມສິດເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໂດຍແອັບ"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"ໄມໂຄຣໂຟນ"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"ຄວບຄຸມສິດເຂົ້າເຖິງໄມໂຄຣໂຟນຂອງແອັບ"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ຂໍ້ມູນພາຫະນະ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ຈັດການກິດຈະກຳ ແລະ ຂໍ້ມູນທີ່ບັນທຶກໄວ້ໃນພາຫະນະນີ້"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"ລຶບໂປຣໄຟລ໌ຂອງທ່ານ"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ລຶບໂປຣໄຟລ໌ ແລະ ບັນຊີຂອງທ່ານຈາກລະບົບສາລະບັນເທີງ"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ຄຳສັ່ງນີ້ບໍ່ມີໃຫ້ສຳລັບໂປຣໄຟລ໌ຂອງທ່ານ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ຄວາມປອດໄພ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ການລັອກໜ້າຈໍ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ບໍ່ມີ"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ຕົກລົງ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ລຶບການລັອກໜ້າຈໍອອກບໍ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ນີ້ຈະອະນຸຍາດໃຫ້ທຸກຄົນເຂົ້າເຖິງບັນຊີຂອງທ່ານໄດ້"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ລັອກໂປຣໄຟລ໌"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ຕັ້ງການປົດລັອກອັດຕະໂນມັດ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ປ້ອນ PIN ຂອງທ່ານ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ປ້ອນລະຫັດຜ່ານຂອງທ່ານ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ເພື່ອຄວາມປອດໄພ, ກະລຸນາຕັ້ງລະຫັດ PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ຈະຕ້ອງມີໜ້ອຍກວ່າ <xliff:g id="NUMBER">%d</xliff:g> ຕົວເລກ"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ຕ້ອງມີຕົວເລກ 0 ຫາ 9 ເທົ່ານັ້ນ."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນບໍ່ອະນຸຍາດໃຫ້ໃຊ້ລະຫັດ PIN ເມື່ອບໍ່ດົນມານີ້"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"PIN ທີ່ມັກໃຊ້ທົ່ວໄປຖືກບລັອກໄວ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບໄອທີຂອງທ່ານ. ກະລຸນາລອງໃຊ້ PIN ອື່ນ."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"PIN ທີ່ມັກໃຊ້ທົ່ວໄປຖືກບລັອກໄວ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບໄອທີຂອງທ່ານ. ກະລຸນາລອງໃຊ້ PIN ອື່ນ."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ນີ້ບໍ່ສາມາດຮວມມີອັກຂະລະທີ່ບໍ່ຖືກຕ້ອງໄດ້."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ລະຫັດຜ່ານໃຊ້ບໍ່ໄດ້, ຕ້ອງມີຢ່າງໜ້ອຍ 4 ຕົວອັກສອນ."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນບໍ່ອະນຸຍາດໃຫ້ໃຊ້ລະຫັດຜ່ານເມື່ອບໍ່ດົນມານີ້"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"ເກີດຄວາມຜິດພາດໃນການບັນທຶກລະຫັດຜ່ານ"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ລະຫັດຜ່ານທີ່ມັກໃຊ້ທົ່ວໄປຖືກບລັອກໄວ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບໄອທີຂອງທ່ານ. ກະລຸນາລອງໃຊ້ລະຫັດອື່ນ."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ລະຫັດຜ່ານທີ່ມັກໃຊ້ທົ່ວໄປຖືກບລັອກໄວ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບໄອທີຂອງທ່ານ. ກະລຸນາລອງໃຊ້ລະຫັດອື່ນ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຊຸດຕົວເລກລຽງກັນແຕ່ນ້ອຍຫາໃຫຍ່, ໃຫຍ່ຫານ້ອຍ ຫຼື ຊຸດຕົວເລກຊ້ຳກັນ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ຕົວເລືອກການລັອກໜ້າຈໍ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ມື້ກ່ອນ"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"ປຸ່ມເອັນເທີ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ອອກຈາກໂໝດສາທິດ"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ອອກຈາກໂໝດສາທິດ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ນີ້ຈະລຶບບັນຊີສາທິດ ແລະ ຣີເຊັດລະບົບເປັນຂໍ້ມູນໂຮງງານ. ຂໍ້ມູນຜູ້ໃຊ້ທັງໝົດຈະເສຍໄປ."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ນີ້ຈະລຶບບັນຊີສາທິດ ແລະ ຣີເຊັດລະບົບເປັນການຕັ້ງຄ່າຈາກໂຮງງານ. ຂໍ້ມູນໂປຣໄຟລ໌ທັງໝົດຈະເສຍໄປ."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ອອກຈາກໂໝດສາທິດ"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ປິດໄວ້"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ຄຸນສົມບັດບໍ່ສາມາດໃຊ້ໄດ້ໃນເວລາຂັບລົດ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ບໍ່ສາມາດເພີ່ມຜູ້ໃຊ້ໃນຂະນະທີ່ຂັບລົດໄດ້"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"ບໍ່ສາມາດເພີ່ມໂປຣໄຟລ໌ໃນຂະນະທີ່ຂັບລົດໄດ້"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ຊອກຫາ"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"ຜູ້ຊ່ວຍ ແລະ ສຽງ"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"ແອັບຜູ້ຊ່ວຍ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ໃຊ້ຂໍ້ຄວາມຈາກໜ້າຈໍ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ອະນຸຍາດໃຫ້ຜູ້ຊ່ວຍເຂົ້າເຖິງເນື້ອຫາໜ້າຈໍ"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ໃຊ້ພາບໜ້າຈໍ"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ອະນຸຍາດໃຫ້ຜູ້ຊ່ວຍເຂົ້າເຖິງຮູບໜ້າຈໍ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ສົ່ງຫຼ້າສຸດ"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"ແອັບທັງໝົດ"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"ໂປຣໄຟລ໌ ແລະ ບັນຊີ"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ຈັດການໂປຣໄຟລ໌ອື່ນ"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ເພີ່ມໂປຣໄຟລ໌"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ລຶບໂປຣໄຟລ໌ນີ້"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"ເພີ່ມໂປຣໄຟລ໌"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 82c5b21..7d312f1 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekranas"</string>
     <string name="brightness" msgid="2919605130898772866">"Šviesumo lygis"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prisitaikantis šviesumas"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizuoti šviesumo lygį pagal esamą šviesą"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Koreguokite ekrano šviesumą pagal aplinką"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nakties šviesa įjungta"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekranas, jutiklinis ekranas"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"pritemdyti ekraną, jutiklinis ekranas, akumuliatorius"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"pritemdyti ekraną, jutiklinis ekranas, akumuliatorius"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"pritemdyti ekraną, įjungti nakties rodinį, suteikti atspalvį"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Naktinis režimas"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Tinklas ir internetas"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiliojo ryšio tinklas"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Nustatyti duomenų naudojimo įspėjimą"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Nustatyti duomenų naudojimo apribojimą"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Nustatyti"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OĮG tinklas"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Išnaudota duomenų: %1$d, %2$s–%3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Prisijungti prie kito tinklo"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Tinklo nuostatos"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"„Wi-Fi“ įjungiama…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"„Wi-Fi“ išjungiama…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Jungiantis prie tinklo įvyko klaida."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pridėti tinklą"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Prisijungti"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Prisijungiama…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Tinklas ne diapazone"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Slaptažodis"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Rodyti slaptažodį"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Įveskite tinklo pavadinimą"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Programa nori nustatyti, kad pagrindinį įtaisą <xliff:g id="TIMEOUT">%1$d</xliff:g> sek. galėtų aptikti kiti „Bluetooth“ įrenginiai."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ nori įjungti „Bluetooth“ ir nustatyti, kad pagrindinį įtaisą <xliff:g id="TIMEOUT">%2$d</xliff:g> sek. galėtų aptikti kiti įrenginiai."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Programa nori įjungti „Bluetooth“ ir nustatyti, kad pagrindinį įtaisą <xliff:g id="TIMEOUT">%1$d</xliff:g> sek. galėtų aptikti kiti įrenginiai."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Rodoma kaip „%1$s“ kitiems įrenginiams"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mano įrenginiai"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Anksčiau susieti"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"„%1$s“ įrenginys prijungtas"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"„%1$s“ įrenginys atjungtas"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"„Bluetooth“ susiejimo užklausa"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Susieti ir jungti"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"„Bluetooth“ susiejimo kodas"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Numatytasis pranešimo garsas"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Numatytasis signalo garsas"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Išsaugoti"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Įspėjimų garsai"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Skambėjimo tonas, pranešimai, signalas"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Šviesumas"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Koreguokite ekrano šviesumą esant prastam apšvietimui"</string>
     <string name="units_settings" msgid="402325305096925886">"Vienetai"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Greitis"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Atstumas"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Rodyti visas programas"</string>
     <string name="default_applications" msgid="1558183275638697087">"Numatytosios programos"</string>
     <string name="app_permissions" msgid="32799922508313948">"Programų leidimai"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Programos, kurios naudoja: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Valdykite programų prieigą prie duomenų"</string>
     <string name="applications_settings" msgid="794261395191035632">"Programų informacija"</string>
     <string name="force_stop" msgid="2153183697014720520">"Priverstinai sustabdyti"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Priverstinai sustabdyti?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Pašalinti"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jei išjungsite šią programą, „Android“ ir kitos programos gali neveikti, kaip numatyta."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Išjungti programą"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Neįdiegta šiam naudotojui"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Neįdiegta šiame profilyje"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Leidimai"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Pranešimai"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Saugykla ir talpykla"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nėra suteiktų leidimų"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nėra užklausų dėl leidimų"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nenaudojamos programos"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nenaudojama programa</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nenaudojamos programos</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nenaudojamos programos</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nenaudojamų programų</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Pašalinti leidimus ir atlaisvinti vietos"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s vidinėje atmintyje"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Duomenų naudojimas"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Progr. duomenų naudojimas"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Klausti kaskart"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Neatidaryti šioje programoje"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Palaikomos nuorodos"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Programos"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Neseniai atidarytos"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Peržiūrėti visas programas (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Leidimų tvarkytuvė"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Valdykite programų prieigą prie duomenų"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Padėjėjas ir kt."</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Sistemos ir kiti nustatymai"</string>
     <string name="special_access" msgid="5730278220917123811">"Speciali programų prieiga"</string>
     <string name="show_system" msgid="4401355756969485287">"Rodyti sistemą"</string>
     <string name="hide_system" msgid="8845453295584638040">"Slėpti sistemą"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Slėpti sistemos programas"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Sistemos nustatymų keitimas"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Programai bus leidžiama keisti sistemos nustatymus."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Prieiga prie pranešimų"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nėra jokių pastarųjų vietovių užklausų"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Programos lygio leidimai"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Vietovės paslaugos"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Naudoti vietovę"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Sistemos naujiniai"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Išplėstiniai"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Skiltis „Apie“, teisinė informacija, nustatymas iš naujo ir kt."</string>
     <string name="firmware_version" msgid="8491753744549309333">"„Android“ versija"</string>
     <string name="security_patch" msgid="4794276590178386903">"„Android“ saugos pataisos lygis"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelis ir aparatinė įranga"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Bus iš naujo nustatytos visos nurodytų elementų nuostatos:\n\n"<li>"išjungtos programos;"</li>\n<li>"išjungti programų pranešimai;"</li>\n<li>"numatytosios veiksmų programos;"</li>\n<li>"programų foninių duomenų apribojimai;"</li>\n<li>"visi leidimų apribojimai."</li>\n\n"Neprarasite jokių programų duomenų."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Iš naujo nustatyti programas"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Programų nuostatos nustatytos iš naujo"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Ištr. visus duom. (atk. gamykl. duom.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tai atlikus bus ištrinti visi duomenys iš pagrindinio transporto priemonės įtaiso, įskaitant:\n\n"<li>"„Google“ paskyrą;"</li>\n<li>"sistemos ir programų duomenis bei nustatymus;"</li>\n<li>"atsisiųstas programas."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Šiuo metu esate prisijungę prie toliau nurodytų paskyrų."</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Šioje transporto priemonėje yra kitų naudotojų."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Nustatyti tr. priem. iš naujo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Nustatyti iš naujo?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ištrinti visą asmens informaciją ir atsisiųstas programas? Šio veiksmo negalėsite anuliuoti!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ištrinti viską"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ištrinama"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Palaukite..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Ištr. visus duom. (atk. gamykl. nustat.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ištrinkite visus duomenis ir profilius iš informacinės pramoginės sistemos"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Tai atlikus bus ištrinti visi duomenys iš transporto priemonės informacinės pramoginės sistemos, įskaitant:\n\n"<li>"„Google“ paskyrą;"</li>\n<li>"sistemos ir programų duomenis bei nustatymus;"</li>\n<li>"atsisiųstas programas."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Šiuo metu esate prisijungę prie toliau nurodytų paskyrų."</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Šioje transporto priemonėje yra kitų profilių."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Ištrinti visus duomenis"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Ištrinti visus duomenis?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Tai atlikus bus ištrinti visi asmeninio profilio duomenys, paskyros ir atsisiųstos programos iš šios informacinės pramoginės sistemos.\n\nNegalite anuliuoti šio veiksmo."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Ištrinti viską"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Ištrinama"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Palaukite..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data ir laikas"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nustatyti datą, laiką, laiko juostą ir formatus"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatinė data ir laikas"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Esate prisij. kaip administrator."</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Visi administratoriaus leidimai"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nustatyti kaip administratorių"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Naudotojas galės ištrinti naudotojus, įskaitant administratorius, ir atkurti gamyklinius sistemos duomenis."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profilio naudotojas galės ištrinti profilius, įskaitant kitus administratorius, ir atkurti gamyklinius sistemos nustatymus."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Šio veiksmo atšaukti negalima."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Taip, nustatyti kaip administratorių"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Kurti naujus naudotojus"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Kurti naujus profilius"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Skambinti"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Susir. naud. automob. mob. r. duom."</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Įdiegti naujas programas"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Pašalinti programas"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridėti naudotoją"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Naujas naudotojas"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Pridėti naują naudotoją?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bet kuris naudotojas gali atnaujinti visų kitų naudotojų programas."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Pasiekta naudotojų riba"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojo.</item>
-      <item quantity="few">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojų.</item>
-      <item quantity="many">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojo.</item>
-      <item quantity="other">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojų.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Pridėti profilį"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Naujas profilis"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Pridėti naują profilį?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kai pridedate naują profilį, naujas naudotojas turi nustatyti savo profilį."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Bet kurio profilio naudotojas gali atnaujinti visų kitų profilių programas."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Pasiektas profilių limitas"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Galite sukurti ne daugiau nei <xliff:g id="COUNT">%d</xliff:g> profilį.</item>
+      <item quantity="few">Galite sukurti ne daugiau nei <xliff:g id="COUNT">%d</xliff:g> profilius.</item>
+      <item quantity="many">Galite sukurti ne daugiau nei <xliff:g id="COUNT">%d</xliff:g> profilio.</item>
+      <item quantity="other">Galite sukurti ne daugiau nei <xliff:g id="COUNT">%d</xliff:g> profilių.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Nepavyko sukurti naujo naudotojo"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Ištrinti šį naudotoją?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Visos programos ir duomenys bus ištrinti."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Nepavyko ištrinti naudotojo."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nepavyko sukurti naujo profilio"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Ištrinti šį profilį?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Bus ištrintos visos šio profilio programos ir duomenys"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Nepavyko ištrinti profilio."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Šis profilis bus ištrintas, kai perjungsite profilius ar paleiskite transporto priemonę iš naujo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Atsisakyti"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Bandyti dar kartą"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ištrinti pask. naudotoją?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Ištrynus vienintelį likusį šio automobilio naudotoją, bus sukurtas naujas administratoriaus teises turintis naudotojas."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Visi su šiuo naudotoju susiję duomenys, nustatymai ir programos bus ištrinti. Turėsite nustatyti sistemą iš naujo."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Ištrinti paskutinį likusį profilį?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Jei ištrinsite vienintelį likusį šios transporto priemonės profilį, bus ištrinti visi su šiuo profiliu susieti duomenys, nustatymai ir programos."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Pasibaigus nustatymo iš naujo procesui, galite nustatyti naują profilį."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Naujo administratoriaus pasirinkimas"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Jums reikalingas bent vienas administratorius. Kad galėtumėte ištrinti šį, pirmiausia pasirinkite kitą administratorių."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Pasir. administratorių"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Jūs (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Vardas"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nenustatyta"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Naudotojo vardo redagavimas"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Redaguoti profilio pavadinimą"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Laukas negali būti tuščias."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Įvestas naudotojo vardas yra netinkamas."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Įvestas netinkamas profilio pavadinimas."</string>
     <string name="users_list_title" msgid="770764290290240909">"Naudotojai"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiliai"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Leidimai suteikti naudot. %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Saugykla"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzika ir garso įrašai"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Garso failai"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Skaičiuojama…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Programos dydis"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Naudotojo duomenys"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profilio duomenys"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Talpykla"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Iš viso"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Išvalyti saugyklą"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Atšaukti sinchronizavimą"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Šiuo metu iškilo sinchronizavimo problemų. Greitai jis vėl veiks."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatumas"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Transporto priemonės duomenys"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Valdyti programų prieigą prie vietovės"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofonas"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Valdykite programų prieigą prie mikrofono"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Transporto priemonės duomenys"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Šioje transporto priemonėje išsaugotų veiklos ir informacijos tvarkymas"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Ištrinti profilį"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ištrinkite savo profilį ir paskyras iš informacinės pramoginės sistemos"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Šis veiksmas jūsų paskyroje nepasiekiamas"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sauga"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekrano užraktas"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nėra"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"Gerai"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Pašalinti ekrano užraktą?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Tai atlikus visi žmonės galės pasiekti jūsų paskyrą"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profilio užraktas"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Nustatykite automatinį atrakinimą"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Įveskite PIN kodą"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Įveskite slaptažodį"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Saugumo PIN kodo nustatymas"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Turi būti mažiau nei <xliff:g id="NUMBER">%d</xliff:g> skaitm."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Turi būti sudarytas tik iš skaitmenų 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Įrenginio administratorius neleidžia naudoti pastarojo PIN kodo"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Dažnai naudojamus PIN kodus užblokavo IT administratorius. Bandykite naudoti kitą PIN kodą."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Dažnai naudojamus PIN kodus užblokavo IT administratorius. Bandykite naudoti kitą PIN kodą."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Čia negali būti netinkamų simbolių."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Slaptažodis netinkamas, jį turi sudaryti bent 4 simboliai."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Įrenginio administratorius neleidžia naudoti pastarojo slaptažodžio"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Klaida išsaugant slaptažodį"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Dažnai naudojamus slaptažodžius užblokavo IT administratorius. Bandykite naudoti kitą slaptažodį."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Dažnai naudojamus slaptažodžius užblokavo IT administratorius. Bandykite naudoti kitą slaptažodį."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Didėjanti, mažėjanti ar pasikartojanti skaitmenų seka neleidžiama."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrano užrakto parinktys"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: prieš <xliff:g id="NUM_DAYS">%3$s</xliff:g> d."</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Klavišas „Enter“"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Išeiti iš dem. režimo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Išeiti iš demonstrac. režimo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tai atlikus bus ištrinta demonstracinė paskyra ir atkurti gamykliniai sistemos duomenys. Visi naudotojo duomenys bus prarasti."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Tai atlikus bus ištrinta demonstracinė paskyra ir atkurti gamykliniai sistemos duomenys. Visi profilio duomenys bus prarasti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Išeiti iš dem. režimo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ATSISAKYTI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcija nepasiekiama vairuojant"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Negalima pridėti naudotojo vairuojant"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Negalima pridėti profilio vairuojant"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Paieška"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Padėjėjas ir balsas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Padėjėjo programa"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Naudoti tekstą iš ekrano"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Leiskite Padėjėjui pasiekti ekrano turinį"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Naudoti ekrano kopiją"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Leiskite Padėjėjui pasiekti ekrano vaizdą"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Neseniai išsiųsta"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Visos programos"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiliai ir paskyros"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Tvarkyti kitus profilius"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Pridėti profilį"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Ištrinti šį profilį"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Pridėti profilį"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index eb90d35..b06b35c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Displejs"</string>
     <string name="brightness" msgid="2919605130898772866">"Spilgtuma līmenis"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptīvs spilgtums"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizēt spilgtuma līmeni atbilstoši pieejamajam apgaismojumam"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Pielāgojiet ekrāna spilgtumu videi"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nakts režīms ir ieslēgts"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekrāns, skārienekrāns"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"aptumšot ekrānu, skārienekrāns, akumulators"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"aptumšot ekrānu, skārienekrāns, akumulators"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"aptumšot ekrānu, nakts, tonējums"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nakts režīms"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Tīkls un internets"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilais tīkls"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Datu lietojuma brīdinājuma iestatīšana"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Datu lietojuma ierobežojuma iestatīšana"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Iestatīt"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM tīkls"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Izmantoti %1$d MB šādā laika periodā: %2$s–%3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Izveidot savienojumu ar citu tīklu"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Tīkla preferences"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Notiek Wi-Fi ieslēgšana…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Notiek Wi-Fi izslēgšana…"</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Neizdevās izveidot savienojumu ar tīklu."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pievienot tīklu"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Savienot"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Notiek savienošana…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Tīkls nav sasniedzamības zonā."</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parole"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Rādīt paroli"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Lūdzu, ievadiet tīkla nosaukumu."</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Kādā lietotnē tiek mēģināts uz <xliff:g id="TIMEOUT">%1$d</xliff:g> sekundēm padarīt jūsu stereosistēmas paneli redzamu citām Bluetooth ierīcēm."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g> tiek mēģināts uz <xliff:g id="TIMEOUT">%2$d</xliff:g> sekundēm ieslēgt Bluetooth savienojumu un padarīt jūsu stereosistēmas paneli redzamu citām ierīcēm."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Kādā lietotnē tiek mēģināts uz <xliff:g id="TIMEOUT">%1$d</xliff:g> sekundēm ieslēgt Bluetooth savienojumu un padarīt jūsu stereosistēmas paneli redzamu citām ierīcēm."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Redzama citām ierīcēm kā %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Manas ierīces"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Ierīces, ar kurām iepriekš tika izveidots savienojums"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Savienojums ar %1$s izveidots"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Savienojums ar %1$s pārtraukts"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pieprasījums savienošanai pārī"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Savienot pārī un izveidot savienojumu"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth kods savienošanai pārī"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Paziņojuma noklusējuma skaņa"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Modinātāja noklusējuma skaņa"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Saglabāt"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Brīdinājumu signāli"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Zvana signāls, paziņojumi, modinātājs"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Spilgtums"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Pielāgojiet ekrānu vājam apgaismojumam"</string>
     <string name="units_settings" msgid="402325305096925886">"Mērvien."</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Ātrums"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Attālums"</string>
@@ -282,7 +293,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Rādīt visas lietotnes"</string>
     <string name="default_applications" msgid="1558183275638697087">"Noklusējuma lietotnes"</string>
     <string name="app_permissions" msgid="32799922508313948">"Lietotņu atļaujas"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Lietotnes, kurām piešķirta atļauja: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Pārvaldiet lietotņu piekļuvi jūsu datiem"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informācija par lietotni"</string>
     <string name="force_stop" msgid="2153183697014720520">"Veikt piespiedu apturēšanu"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vai veikt piespiedu apturēšanu?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Atinstalēt"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ja atspējosiet šo lietotni, Android un citas lietotnes, iespējams, vairs nedarbosies, kā paredzēts."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Atspējot lietotni"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nav instalēta šim lietotājam"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nav instalēta šim profilam"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Atļaujas"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Paziņojumi"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Krātuve un kešatmiņa"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nav piešķirta neviena atļauja."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nav pieprasīta neviena atļauja."</string>
+    <string name="unused_apps" msgid="648471933781010395">"Neizmantotās lietotnes"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> neizmantotu lietotņu</item>
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> neizmantota lietotne</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> neizmantotas lietotnes</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Noņemt atļaujas un atbrīvot vietu"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s: iekšējā atmiņa"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datu lietojums"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Lietotnes datu lietojums"</string>
@@ -337,9 +355,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Vaicāt katru reizi"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Neatvērt šajā lietotnē"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Atbalstītās saites"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Lietotnes"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nesen atvērtās"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Skatīt visas lietotnes (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Atļauju pārvaldnieks"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Pārvaldiet lietotņu piekļuvi jūsu datiem"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Asistentam un citām lietotnēm"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Sistēmai un citiem iestatījumiem"</string>
     <string name="special_access" msgid="5730278220917123811">"Īpaša piekļuve lietotnēm"</string>
     <string name="show_system" msgid="4401355756969485287">"Rādīt sistēmas lietotnes"</string>
     <string name="hide_system" msgid="8845453295584638040">"Slēpt sistēmas lietotnes"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Slēpt sistēmas lietotnes"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Sistēmas iestatījumu pārveide"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Ar šo atļauju lietotne var pārveidot sistēmas iestatījumus."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Piekļuve paziņojumiem"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nav nesenu atrašanās vietu pieprasījumu"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Lietotnes līmeņa atļaujas"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Atrašanās vietu pakalpojumi"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Izmantot atrašanās vietu"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistēma"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Sistēmas atjauninājumi"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Papildu"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Par, juridiskā informācija, atiestatīšana un citi iestatījumi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versija"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android drošības ielāpa līmenis"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelis un aparatūra"</string>
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Šādi tiks atiestatītas visas preferences, kas saistītas ar:\n\n"<li>"atspējotām lietotnēm;"</li>\n<li>"atspējotu lietotņu paziņojumiem;"</li>\n<li>"darbībām paredzētām noklusējuma lietojumprogrammām;"</li>\n<li>"lietotņu fona datu ierobežojumiem;"</li>\n<li>"visiem atļauju ierobežojumiem."</li>\n\n"Jūs nezaudēsiet lietotņu datus."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Atiestatīt lietotnes"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Lietotņu preferences ir atiestatītas"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Notīrīt visus datus (atiestatīt ierīci)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tādējādi tiks izdzēsti visi transportlīdzekļa sistēmas panelī esošie dati, tostarp:\n\n"<li>"jūsu Google konts;"</li>\n<li>"sistēmas un lietotņu dati un iestatījumi;"</li>\n<li>"lejupielādētās lietotnes."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Jūs pašlaik esat pierakstījies šādos kontos:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Šo transportlīdzekli izmanto vēl citi lietotāji."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Atiestatīt transportlīdzekli"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vai atiestatīt?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vai dzēst visu jūsu personisko informāciju un lejupielādētās lietotnes? Šo darbību nevarēs atsaukt."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Dzēst visu"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Notiek dzēšana"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lūdzu, uzgaidiet…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Dzēst visu (atiestatīt rūpnīcas datus)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Dzēst visus datus un profilus no informatīvi izklaidējošās sistēmas"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Tādējādi tiks dzēsti visi dati no jūsu transportlīdzekļa informatīvi izklaidējošās sistēmas:\n\n"<li>"jūsu Google konts;"</li>\n<li>"sistēmas un lietotņu dati un iestatījumi;"</li>\n<li>"lejupielādētās lietotnes."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Jūs pašlaik esat pierakstījies tālāk norādītajos kontos."</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Šī transportlīdzekļa sistēmā ir vēl citi profili."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Dzēst visus datus"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vai dzēst visus datus?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Tādējādi tiks dzēsti visi jūsu personīgā profila dati, konti un lejupielādētās lietotnes no šīs informatīvi izklaidējošās sistēmas.\n\nŠo darbību nevar atsaukt."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Dzēst visu"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Notiek dzēšana"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Lūdzu, uzgaidiet…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datums un laiks"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Iestatīt datumu, laiku, laika joslu un formātus"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automātisks datums un laiks"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Pierakstījies kā administrators"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Visas administratora atļaujas"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Iestatīt kā administratoru"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Attiecīgais lietotājs varēs dzēst lietotājus, tostarp citus administratorus, kā arī veikt sistēmas rūpnīcas datu atiestatīšanu."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Izmantojot šo profilu, varēs dzēst profilus, tostarp citus administratorus, kā arī veikt sistēmas rūpnīcas datu atiestatīšanu."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Šī darbība ir neatgriezeniska."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Jā, iestatīt kā administratoru"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Jaunu lietotāju izveide"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Izveidot jaunus profilus"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Tālruņa zvanu veikšana"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Ziņojumi, lietojot auto mob. datus"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Jaunu lietotņu instalēšana"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Lietotņu atinstalēšana"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lietotāja pievienošana"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Jauns lietotājs"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Jauns lietotājs"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido savs profils."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ikviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Sasniegts lietotāju ierobežojums"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="zero">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotājus.</item>
-      <item quantity="one">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotāju.</item>
-      <item quantity="other">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotājus.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Pievienot profilu"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Jauns profils"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vai pievienot jaunu profilu?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kad pievienojat jaunu profilu, attiecīgajai personai ir jāizveido sava vide."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Izmantojot jebkuru profilu, var atjaunināt lietotnes visiem pārējiem profiliem."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Sasniegts profilu ierobežojums"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="zero">Var izveidot <xliff:g id="COUNT">%d</xliff:g> profilus.</item>
+      <item quantity="one">Var izveidot <xliff:g id="COUNT">%d</xliff:g> profilu.</item>
+      <item quantity="other">Var izveidot <xliff:g id="COUNT">%d</xliff:g> profilus.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Neizdevās izveidot jaunu lietotāju"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vai dzēst šo lietotāju?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tiks dzēstas visas lietotnes un dati."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Neizdevās izdzēst lietotāju"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Neizdevās izveidot jaunu profilu"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vai dzēst šo profilu?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Tiks dzēstas visas šī profila lietotnes un dati."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Neizdevās izdzēst profilu"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Šis profils tiks izdzēsts, kad pārslēgsiet profilus vai atkārtoti iedarbināsiet transportlīdzekli"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Noraidīt"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Mēģināt vēlreiz"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Dzēst pēdējo lietotāju?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Kad šai automašīnai tiks izdzēsts pēdējais atlikušais lietotājs, tiks izveidots jauns administratīvais lietotājs."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tiks dzēsti visi ar šo lietotāju saistītie dati, iestatījumi un lietotnes. Jums būs vēlreiz jāiestata sistēma."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vai dzēst pēdējo atlikušo profilu?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ja dzēsīsiet vienīgo atlikušo profilu šim transportlīdzeklim, tiks dzēsti visi ar šo profilu saistītie dati, iestatījumi un lietotnes."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Pēc atiestatīšanas varēsiet iestatīt jaunu profilu."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Jauna administratora izvēle"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Nepieciešams vismaz viens administrators. Lai dzēstu šo administratoru, vispirms izvēlieties aizvietotāju."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Izvēlēties administratoru"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Jūs (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Vārds"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nav iestatīts"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Lietotāja vārda rediģēšana"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profila nosaukuma rediģēšana"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Lauks nedrīkst būt tukšs."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Ievadītais lietotājvārds nav derīgs."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Ievadītais profila nosaukums nav derīgs."</string>
     <string name="users_list_title" msgid="770764290290240909">"Lietotāji"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Lietotāja %1$s atļaujas"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Krātuve"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Mūzika un audio"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio faili"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Notiek aprēķināšana…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Lietotnes lielums"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Lietotāja dati"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profila dati"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Kešatmiņa"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Kopā"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Notīrīt krātuvi"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Atcelt sinhronizāciju"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Pašlaik ir sinhronizācijas problēmas. Drīz šī darbība atkal būs pieejama."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Konfidencialitāte"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Transportlīdzekļa dati"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Pārvaldiet lietotņu piekļuvi jūsu atrašanās vietas informācijai"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofons"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Pārvaldiet lietotņu piekļuvi mikrofonam"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Transportlīdzekļa dati"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Pārvaldīt šajā transportlīdzeklī saglabātās darbības un informāciju"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Dzēst jūsu profilu"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Dzēst jūsu profilu un kontus no informatīvi izklaidējošās sistēmas"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Šī darbība nav pieejama jūsu profilam."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Drošība"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekrāna bloķēšana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nav"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"Labi"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Vai noņemt ekrāna bloķēšanu?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Tādējādi ikviens varēs piekļūt jūsu kontam."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profila bloķēšana"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Iestatiet automātisku atbloķēšanu"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN ievade"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Ievadiet savu paroli"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Drošības nolūkos iestatiet PIN."</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Ir jābūt mazāk nekā <xliff:g id="NUMBER">%d</xliff:g> cipariem."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Ir jāietver tikai cipari no 0 līdz 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Ierīces administrators neļauj izmantot nesen izveidotu PIN."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Jūsu IT administrators ir bloķējis pārāk vienkāršus PIN. Izmēģiniet sarežģītāku PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Jūsu IT administrators ir bloķējis pārāk vienkāršus PIN. Izmēģiniet sarežģītāku PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Nedrīkst ietvert nederīgu rakstzīmi."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Parole nav derīga; tajā jābūt vismaz 4 rakstzīmēm."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Ierīces administrators neļauj izmantot nesen izveidotu paroli."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Saglabājot paroli, radās kļūda."</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Jūsu IT administrators ir bloķējis pārāk vienkāršas paroles. Izmēģiniet sarežģītāku paroli."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Jūsu IT administrators ir bloķējis pārāk vienkāršas paroles. Izmēģiniet sarežģītāku paroli."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nav atļauta augoša, dilstoša vai atkārtota ciparu secība."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrāna bloķēšanas opcijas"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pirms <xliff:g id="NUM_DAYS">%3$s</xliff:g> dienām"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Ievadīšanas taustiņš"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Iziet no demonstr. režīma"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Iziešana no demonstr. režīma"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tādējādi tiks dzēsts demonstrācijas konts un sistēmā tiks atiestatīti rūpnīcas dati. Visi lietotāja dati tiks zaudēti."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Tādējādi tiks dzēsts demonstrācijas konts un sistēmā tiks atiestatīti rūpnīcas dati. Visi profila dati tiks zaudēti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Iziet no demonstr. režīma"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"NERĀDĪT"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcija nav pieejama braukšanas laikā."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Nevar pievienot lietotāju braukšanas laikā."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Nevar pievienot profilu braukšanas laikā."</string>
     <string name="default_search_query" msgid="3137420627428857068">"Meklēt"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistents un balss vadība"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Asistenta lietotne"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Izmantot ekrānā redzamo tekstu"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Atļaujiet Asistentam piekļūt ekrāna saturam"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Izmantot ekrānuzņēmumu"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Atļaujiet Asistentam piekļūt ekrāna attēlam"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nesen nosūtīti"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Visas lietotnes"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili un konti"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Pārvaldīt citus profilus"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Pievienot profilu"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Dzēst šo profilu"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Pievienot profilu"</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 922b1f9..8daaa2b 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -21,13 +21,9 @@
     <string name="more_settings_label" msgid="3867559443480110616">"Повеќе"</string>
     <string name="display_settings" msgid="5325515247739279185">"Приказ"</string>
     <string name="brightness" msgid="2919605130898772866">"Ниво на осветленост"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"Адаптивна осветленост"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Оптимизирање ниво на осветленост според достапното светло"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"Приспособлива осветленост"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Приспособи ја осветленоста на екранот на средината"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Ноќното светло е вклучено"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"екран, екран на допир"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"затемни екран, екран на допир, батерија"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затемни екран, екран на допир, батерија"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"затемнет екран, ноќ, обојување"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ноќен режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
@@ -51,12 +47,12 @@
     <string name="roaming_summary" msgid="7476127740259728901">"Поврзувај се со интернет-услуги во роаминг"</string>
     <string name="roaming_alert_title" msgid="4433901635766775763">"Да се дозволи ли интернет-роаминг?"</string>
     <string name="roaming_warning" msgid="4908184914868720704">"Може да ви се наплати за роаминг."</string>
-    <string name="data_usage_settings" msgid="7877132994777987848">"Потрошен интернет"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Потрошен сообраќај"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"Примарен сообраќај"</string>
-    <string name="data_used_formatted" msgid="6684557577780068339">"Потрошен интернет: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
-    <string name="cell_data_warning" msgid="8997739664336571149">"Предупредување за потрошен интернет: <xliff:g id="ID_1">^1</xliff:g>"</string>
-    <string name="cell_data_limit" msgid="6862164869877993009">"Ограничување за интернет: <xliff:g id="ID_1">^1</xliff:g>"</string>
-    <string name="cell_data_warning_and_limit" msgid="5003954080814312475">"Предупредување за потрошен интернет: <xliff:g id="ID_1">^1</xliff:g>/Ограничување за интернет: <xliff:g id="ID_2">^2</xliff:g>"</string>
+    <string name="data_used_formatted" msgid="6684557577780068339">"Потрошен сообраќај: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
+    <string name="cell_data_warning" msgid="8997739664336571149">"Предупредување за потрошен сообраќај: <xliff:g id="ID_1">^1</xliff:g>"</string>
+    <string name="cell_data_limit" msgid="6862164869877993009">"Ограничување на сообраќајот: <xliff:g id="ID_1">^1</xliff:g>"</string>
+    <string name="cell_data_warning_and_limit" msgid="5003954080814312475">"Предупредување за потрошен сообраќај: <xliff:g id="ID_1">^1</xliff:g>/Ограничување на сообраќајот: <xliff:g id="ID_2">^2</xliff:g>"</string>
     <plurals name="billing_cycle_days_left" formatted="false" msgid="9163059632851951402">
       <item quantity="one">Уште %d ден</item>
       <item quantity="other">Уште %d дена</item>
@@ -68,22 +64,26 @@
     <string name="carrier_and_update_now_text" msgid="9058821833613481573">"Ажурирано од <xliff:g id="ID_1">^1</xliff:g> пред малку"</string>
     <string name="no_carrier_update_now_text" msgid="5953142546373783189">"Се ажурираше пред малку"</string>
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Прикажи го планот"</string>
-    <string name="app_data_usage" msgid="3878609885080232877">"Потрошен интернет од апликации"</string>
+    <string name="app_data_usage" msgid="3878609885080232877">"Сообраќај на апликациите"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"ограничено"</string>
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Датум на ресетирање на циклусот на користење"</string>
-    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Датум во месецот:"</string>
+    <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Датум за секој месец:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Постави"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Предупредување/ограничување на интернет"</string>
-    <string name="app_usage_cycle" msgid="8445927080245880296">"Циклус на потрошен интернет од апликации"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Циклус на потрошен сообраќај од апликац."</string>
     <string name="set_data_warning" msgid="6628236612886588097">"Поставете предупр. за интернет"</string>
     <string name="data_warning" msgid="116776633806885370">"Предупредување за интернетот"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"Поставете огранич. на интернет"</string>
-    <string name="data_limit" msgid="227338836292511425">"Ограничување за интернет"</string>
-    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничување за потрошен интернет"</string>
-    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Главната единица на возилото ќе го исклучи мобилниот интернет откако ќе се достигне ограничувањето што сте го поставиле.\n\nСо оглед на тоа дека главната единица го мери потрошениот интернет, а операторот може да го мери поинаку, размислете за поставување пониско ограничување."</string>
-    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Поставете предупредување за потрошен интернет"</string>
-    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Поставете ограничување за потрошен интернет"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ограничување на интернетот"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничување на потрошениот сообраќај"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Главната единица на возилото ќе го исклучи мобилниот интернет откако ќе се достигне ограничувањето што сте го поставиле.\n\nСо оглед на тоа дека главната единица го мери потрошениот сообраќај, а операторот може да го мери поинаку, размислете за поставување пониско ограничување."</string>
+    <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Поставете предупредување за потрошен сообраќај"</string>
+    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Поставете ограничување за потрошен сообраќај"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Постави"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-мрежа"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Искористено: %1$d MB од %2$s до %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Придружи се на друга мрежа"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Поставки за мрежа"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Вклучување Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Исклучување Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не успеа да се поврзе со мрежата"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додајте мрежа"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Поврзи"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Се поврзува…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Мрежата не е во опсег"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Лозинка"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Прикажи ја лозинката"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Внесете име на мрежа"</string>
@@ -133,7 +135,7 @@
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Вклучи"</string>
     <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Скенирањето Wi‑Fi е вклучено"</string>
     <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Автоматски префрли се на мобилен интернет"</string>
-    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Користете мобилен интернет кога Wi‑Fi нема пристап до интернет. Може да ви се наплати за потрошениот интернет."</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Користете мобилен интернет кога Wi‑Fi нема пристап до интернет. Може да ви се наплати за потрошениот сообраќај."</string>
     <string name="learn_more" msgid="8214605928933358604">"Дознајте повеќе"</string>
     <string name="wifi_hotspot_name_title" msgid="8844779338692535356">"Точка на пристап"</string>
     <string name="wifi_hotspot_name_summary_connecting" msgid="5262510450498600038">"Се вклучува <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g>..."</string>
@@ -190,9 +192,14 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aпликација сака да ја направи главната единица видлива за други уреди со Bluetooth за <xliff:g id="TIMEOUT">%1$d</xliff:g> секунди."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> сака да вклучи Bluetooth и со тоа да ја направи главната единица видлива за други уреди за <xliff:g id="TIMEOUT">%2$d</xliff:g> секунди."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Апликација сака да вклучи Bluetooth и со тоа да ја направи главната единица видлива за други уреди за <xliff:g id="TIMEOUT">%1$d</xliff:g> секунди."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Видлив како %1$s за другите уреди"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Мои уреди"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Претходно поврзани"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Уредот %1$s е поврзан"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Уредот %1$s не е поврзан"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Барање за спарување преку Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Спари и поврзи"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код за спарување преку Bluetooth"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код за спарување на Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-от содржи букви или симболи"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Внесете го кодот за спарување, а потоа притиснете Врати или Внеси"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Дали да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандарден звук за известување"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандарден звук за аларм"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Зачувај"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Звуци на предупредување"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Мелодија, известувања, аларм"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Осветленост"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Приспособи го екранот за слаба светлина"</string>
     <string name="units_settings" msgid="402325305096925886">"Мерни единици"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Брзина"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Растојание"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Прикажи ги сите апликации"</string>
     <string name="default_applications" msgid="1558183275638697087">"Стандардни апликации"</string>
     <string name="app_permissions" msgid="32799922508313948">"Дозволи за апликацијата"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Апликации што користат <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Контролира пристап на апликациите до податоците"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информации за апликациите"</string>
     <string name="force_stop" msgid="2153183697014720520">"Исклучи присилно"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Исклучи присилно?"</string>
@@ -290,16 +301,22 @@
     <string name="uninstall_text" msgid="277907956072833012">"Деинсталирај"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако ја оневозможите оваа апликација, Android и другите апликации можеби веќе нема да функционираат како што треба."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Оневозможи ја апликацијата"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Не е инсталирано за корисников"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Не е инсталирана за профилов"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволи"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Известувања"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Капацитет и кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Верзија %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Не се доделени дозволи"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Не се побарани дозволи"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Некористени апликации"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> некористена апликација</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> некористени апликации</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Отстранувај дозволи за повеќе простор"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s во внатрешен капацитет"</string>
-    <string name="data_usage_summary_title" msgid="4368024763485916986">"Потрошен интернет"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Потрошен интернет од апл."</string>
+    <string name="data_usage_summary_title" msgid="4368024763485916986">"Потрошен сообраќај"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Сообраќај на апликациите"</string>
     <string name="computing_size" msgid="5791407621793083965">"Пресметување…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дополнителна дозвола</item>
@@ -312,13 +329,13 @@
     <string name="assist_access_context_summary" msgid="2374281280599443774">"Дозволи апликацијата за помош да пристапи до содржините на екранот како текст"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Користи ја сликата од екранот"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Дозволи апликацијата за помош да пристапи до слика од екранот"</string>
-    <string name="voice_input_settings_title" msgid="3238707827815647526">"Гласовно внесување"</string>
+    <string name="voice_input_settings_title" msgid="3238707827815647526">"Гласовен запис"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Услуга за автоматско пополнување"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Нема"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Избрана"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"Помошникот ќе може да чита информации за апликациите што се користат во системот, вклучувајќи ги информациите што се видливи на екранот или до коишто може се пристапи во апликациите."</string>
     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"Додајте услуга"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Додај услуга"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Отворање линкови"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Инсталирани апликации"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"Не отворај поддржани линкови"</string>
@@ -331,18 +348,26 @@
     <string name="auto_launch_reset_text" msgid="590439611312092392">"Избришете ги стандардните вредности"</string>
     <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Отворај поддржани линкови"</string>
     <string name="app_link_open_always" msgid="5783167184335545230">"Отвори во апликацијава"</string>
-    <string name="app_link_open_ask" msgid="7242075065136237456">"Прашувај секогаш"</string>
+    <string name="app_link_open_ask" msgid="7242075065136237456">"Секогаш прашувај"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Не отворај во апликацијава"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Поддржани линкови"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Апликации"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Неодамна отворени"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Прикажи ги сите %1$d апликации"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Управник со дозволи"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Контролира пристап на апликациите до податоците"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"За „Помошникот“ и друго"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"До системот и други поставки"</string>
     <string name="special_access" msgid="5730278220917123811">"Посебен пристап за апликации"</string>
     <string name="show_system" msgid="4401355756969485287">"Прикажи го системот"</string>
     <string name="hide_system" msgid="8845453295584638040">"Сокриј го системот"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Сокриј ги системските апликации"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Менување системски поставки"</string>
-    <string name="modify_system_settings_description" msgid="5295023124419592452">"Оваа дозвола ѝ овозможува на апликацијата да менува системски поставки."</string>
+    <string name="modify_system_settings_description" msgid="5295023124419592452">"Оваа дозвола овозможува апликацијата да менува поставки на системот."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Пристап до известувања"</string>
-    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Да се дозволи пристап на <xliff:g id="SERVICE">%1$s</xliff:g> до известувањата?"</string>
+    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Дозволи пристап до известувања за <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ќе може да ги чита сите известувања, вклучувајќи лични информации, како што се имињата на контактите и текстот од пораките што ги добивате. Ќе може и да отфрла известувања или да активира копчиња за дејство што ги содржат.\n\nИсто така, ќе ѝ овозможи на апликацијата да го вклучува и исклучува „Не вознемирувај“ и да ги менува поврзаните поставки."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ако го исклучите пристапот на <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> до известувањата, пристапот до „Не вознемирувај“ може исто така да се исклучи."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ако го исклучите пристапот до известувањата за <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, пристапот до „Не вознемирувај“ може исто така да се исклучи."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Исклучи"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Откажи"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Пристап до премиум SMS"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема неодамнешни барања за локација"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволи на ниво на апликација"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Услуги според локација"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Користи ја локацијата"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања на системот"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Напредни"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"За, правни информации, ресетирање и друго"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Верзија на Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво на безбедносна лепенка на Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Модел и хардвер"</string>
@@ -399,7 +429,7 @@
     </plurals>
     <string name="show_dev_on" msgid="5339077400040834808">"Сега сте програмер!"</string>
     <string name="show_dev_already" msgid="1678087328973865736">"Нема потреба, веќе сте програмер."</string>
-    <string name="developer_options_settings" msgid="1530739225109118480">"Програмерски опции"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Опции за програмери"</string>
     <string name="reset_options_title" msgid="4388902952861833420">"Опции за ресетирање"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"Мрежа, апликации или ресетирање на уредот"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"Ресетирај ја мрежата"</string>
@@ -417,19 +447,20 @@
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ресетирај поставки"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Мрежните поставки се ресетирани"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"Ресетирај ги поставките за апликациите"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"Со ова ќе се ресетираат сите поставки за:\n\n"<li>"оневозможените апликации"</li>\n<li>"оневозможените известувања за апликации"</li>\n<li>"стандардните апликации за дејства"</li>\n<li>"ограничувањата за интернет во заднина за апликациите"</li>\n<li>"сите ограничувања за дозволите"</li>\n\n"Нема да изгубите никакви податоци во апликациите."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Со ова ќе се ресетираат сите поставки за:\n\n"<li>"оневозможените апликации;"</li>\n<li>"оневозможените известувања за апликации;"</li>\n<li>"стандардните апликации за дејства;"</li>\n<li>"ограничувањата за интернет во заднина за апликациите;"</li>\n<li>"сите ограничувања за дозволите."</li>\n\n"Нема да изгубите никакви податоци од апликациите."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ресетирај апликации"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Параметрите за апликацијата се ресетирани"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Избриши ги сите податоци"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Ова ќе ги избрише сите податоци од главниот уред на возилото, заедно со:\n\n"<li>"вашата сметка на Google"</li>\n<li>"податоците и поставките на системот и апликациите"</li>\n<li>"преземените апликации"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Моментално сте најавени на следниве сметки:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Присутни се и други корисници на возилово."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Ресетирај го возилото"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Ресетирај?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Дали да се избришат сите ваши лични податоци и преземени апликации? Не може да го вратите ова дејство!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Избриши сѐ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Се брише"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Почекајте…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Избриши ги сите податоци"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Избриши ги сите податоци и профили од системот за информации и забава"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Ова ќе ги избрише сите податоци од системот за информации и забава на возилото, заедно со:\n\n"<li>"вашата сметка на Google"</li>\n<li>"податоците и поставките на системот и апликациите"</li>\n<li>"преземените апликации"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Моментално сте најавени на следниве сметки:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"На возилово се присутни и други профили."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Избриши ги сите податоци"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Да се избришат сите податоци?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Ова ќе ги избрише сите ваши податоци од личниот профил, сметките и преземените апликации во овој систем за информации и забава.\n\nОва дејство не може да се врати."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Избриши сѐ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Се брише"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Почекајте…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Датум и време"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Постави датум, време, временска зона и формати"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Автоматски датум и време"</string>
@@ -441,7 +472,7 @@
     <string name="date_time_set_time_title" msgid="5884883050656937853">"Време"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"Постави време"</string>
     <string name="date_time_set_timezone_title" msgid="3001779256157093425">"Часовна зона"</string>
-    <string name="date_time_set_timezone" msgid="4759353576185916944">"Изберете часовна зона"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"Избери временска зона"</string>
     <string name="date_time_set_date_title" msgid="6834785820357051138">"Датум"</string>
     <string name="date_time_set_date" msgid="2537494485643283230">"Постави датум"</string>
     <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"Подреди по азбучен ред"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Најавени сте како администратор"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Сите администраторски дозволи"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Направи го администратор"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Корисникот ќе може да брише други корисници (вклучително и други администратори) и фабрички да го ресетира системот."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Профилот ќе може да брише други профили (вклучително и други администратори) и фабрички да го ресетира системот."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ова дејство не може да се врати."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, направи го администратор"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Создавање нови корисници"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Создавање нови профили"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефонирање"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Пораки преку интернет на автомобил"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталирање нови апликации"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталирање апликации"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисник"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нов корисник"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Да се додаде нов корисник?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Кога додавате нов корисник, тоа лице треба да го постави својот простор."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Секој корисник може да ажурира апликации за сите други корисници."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнато ограничување на корисник"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> корисник.</item>
-      <item quantity="other">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> корисници.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Додај профил"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Нов профил"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Да се додаде нов профил?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Кога додавате нов профил, тоа лице треба да го постави својот простор."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Секој профил може да ажурира апликации за сите други профили."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Достигнат е максимален број профили"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> профил.</item>
+      <item quantity="other">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> профили.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Не успеа да создаде нов корисник"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Да се избрише корисникот?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Ќе се избришат сите апликации и податоци."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Не успеа да се избрише корисникот."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Не успеа да се создаде нов профил"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Да се избрише профилов?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Ќе се избришат сите апликации и податоци за профилов."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Неуспешно бришење на профилот."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Профилов ќе се избрише кога ќе промените профил или ќе го рестартирате возилото."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Отфрли"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторно"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Избриши последен корисник?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"По бришењето на единствениот преостанат корисник за автомобилов, ќе се создаде нов корисник-администратор."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Ќе се избришат сите податоци, поставки и апликации поврзани со корисников. Ќе треба повторно да го поставите системот."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Да се избрише преостанатиот профил?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ако го избришете последниот профил за возилово, ќе се избришат сите податоци, поставки и апликации поврзани со него."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"По ресетирањето, може да поставите нов профил."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Избирање нов администратор"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Треба да имате најмалку еден администратор. За да го избришете постоечкиот, прво изберете замена."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Изберете администратор"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Вие (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не е поставен"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Изменување на корисничкото име"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Изменете го името на профилот"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Полето не може да биде празно."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Внесеното корисничко име е неважечко."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Внесеното име за профилот е погрешно."</string>
     <string name="users_list_title" msgid="770764290290240909">"Корисници"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профили"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Дадени се дозволи на %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Капацитет"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музика и аудио"</string>
@@ -501,8 +534,8 @@
     <string name="storage_detail_dialog_system" msgid="796365720531622361">"Системот опфаќа датотеки што се користат за извршување на верзијата <xliff:g id="VERSION">%s</xliff:g> на Android"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудиодатотеки"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Се пресметува…"</string>
-    <string name="storage_application_size_label" msgid="1146156683170661354">"Големина на апликацијата"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Кориснички податоци"</string>
+    <string name="storage_application_size_label" msgid="1146156683170661354">"Големина на апликација"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Податоци од профилот"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Вкупно"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Избриши го капацитетот"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Откажи синхронизација"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Синхронизацијата има проблеми во моментов. Ќе се врати наскоро."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Приватност"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Податоци зачувани во возилото"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Контролирајте го пристапот на апликациите до вашата локација"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Контролирајте го пристапот на апликациите до микрофонот"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Податоци зачувани во возилото"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Управувајте со активностите и информациите зачувани во возилово"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Избришете го профилот"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Избришете го вашиот профил и сметките од системот за информации и забава"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Дејствово е недостапно за вашиот профил"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безбедност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Заклучување екран"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нема"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Во ред"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Отстрани заклучување екран?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Ова ќе овозможи секој да пристапува до вашата сметка"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Заклучување на профилот"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Поставете автоматско отклучување"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Внесете го PIN-кодот"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Внесете ја лозинката"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"За безбедност, поставете PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Мора да содржи помалку од <xliff:g id="NUMBER">%d</xliff:g> цифри"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Мора да содржи само цифри од 0 до 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Администраторот на уредот не дозволува користење на неодамнешен PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Обичните PIN-кодови се блокирани од вашиот IT-администратор. Обидете се со друг PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Обичните PIN-кодови се блокирани од вашиот IT-администратор. Обидете се со друг PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Лозинката не може да содржи неважечки знак."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Лозинката е неважечка, мора да има најмалку 4 знаци."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,18 +675,18 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Администраторот на уредот не дозволува користење на неодамнешна лозинка"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Грешка при зачувување на лозинката"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Обичните лозинки се блокирани од вашиот IT-администратор. Обидете се со друга лозинка."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Обичните лозинки се блокирани од вашиот IT-администратор. Обидете се со друга лозинка."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Не е дозволена низа на цифри со растечки, опаѓачки или повторлив редослед."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заклучување на екранот"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пред <xliff:g id="NUM_DAYS">%3$s</xliff:g> дена"</string>
-    <string name="credentials_reset" msgid="873900550885788639">"Бришење акредитиви"</string>
-    <string name="credentials_reset_summary" msgid="6067911547500459637">"Отстрани ги сите сертификати"</string>
+    <string name="credentials_reset" msgid="873900550885788639">"Избриши акредитиви"</string>
+    <string name="credentials_reset_summary" msgid="6067911547500459637">"Отстрани ги сите акредитиви"</string>
     <string name="credentials_reset_hint" msgid="3459271621754137661">"Дали да се отстранат сите содржини?"</string>
     <string name="credentials_erased" msgid="2515915439705550379">"Меморијата на акредитиви е избришана."</string>
     <string name="credentials_not_erased" msgid="6118567459076742720">"Меморијата на акредитиви не може да се избрише."</string>
     <string name="forget" msgid="3971143908183848527">"Избриши го"</string>
     <string name="connect" msgid="5861699594602380150">"Поврзи"</string>
-    <string name="disconnect" msgid="6140789953324820336">"Прекини врска"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Исклучи"</string>
     <string name="delete_button" msgid="5840500432614610850">"Избриши"</string>
     <string name="remove_button" msgid="6664656962868194178">"Да"</string>
     <string name="cancel" msgid="750286395700355455">"Откажи"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Копче Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Излези од демо-режим"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Излез од демо-режим"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ова ќе ја избрише демо-сметката и ќе ги ресетира фабричките податоци на системот. Сите податоци на корисникот ќе се изгубат."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ова ќе ја избрише демо-сметката и ќе ги ресетира фабричките податоци на системот. Сите податоци на профилот ќе се изгубат."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Излези од демо-режим"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОТФРЛИ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Функцијата не е достапна при возење"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Не може да се додаде корисник додека возите"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Не може да се профил корисник додека возите"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Пребарување"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"„Помошник“ и Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Апликацијата „Помошник“"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Користи го текстот од екранот"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Дозволете „Помошникот“ да пристапува до содржините на екранот"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Користи ја сликата од екранот"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Дозволете „Помошникот“ да пристапува до слика од екранот"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Неодамна испратени"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Сите апликации"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профили и сметки"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Управувајте со други профили"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Додај профил"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Избриши го профилов"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Додај профил"</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 9c1c4e2..6121cea 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ഡി‌സ്‌പ്ലേ"</string>
     <string name="brightness" msgid="2919605130898772866">"തെളിച്ചനില"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"അനുയോജ്യമായ തെളിച്ചം"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"പ്രകാശ ലഭ്യതയനുസരിച്ച് തെളിച്ചം ക്രമീകരിക്കുക"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"സ്ക്രീനിന്റെ തെളിച്ചം ചുറ്റുപാടിനനുസരിച്ച് ക്രമീകരിക്കുക"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"നൈറ്റ് ലൈറ്റ് ഓണാണ്"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"സ്ക്രീൻ, ടച്ച്സ്ക്രീൻ"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"മങ്ങിയ സ്‌ക്രീൻ, ടച്ച്‌സ്‌ക്രീൻ, ബാറ്ററി"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"മങ്ങിയ സ്‌ക്രീൻ, ടച്ച്‌സ്‌ക്രീൻ, ബാറ്ററി"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"മങ്ങിയ സ്ക്രീൻ, രാത്രി, ടിന്റ്"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"നൈറ്റ് മോഡ്"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"മൊബൈൽ നെറ്റ്‌വർക്ക്"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ഡാറ്റാ ഉപയോഗ മുന്നറിയിപ്പ് സജ്ജീകരിക്കുക"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ഡാറ്റാ ഉപയോഗ പരിധി സജ്ജീകരിക്കുക"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"സജ്ജീകരിക്കുക"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM നെറ്റ്‌വർക്ക്"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB ഉപയോഗിച്ചു %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"മറ്റൊരു നെറ്റ്‌വർക്കിൽ ചേരുക"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"നെറ്റ്‌വർക്ക് മുൻഗണനകൾ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"വൈഫൈ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"വൈഫൈ ഓണാക്കുന്നു…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"വൈഫൈ ഓഫാക്കുന്നു…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"നെറ്റ്‌വർക്കിൽ കണക്‌റ്റ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"നെറ്റ്‌വർക്ക് ചേർക്കുക"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"കണക്റ്റ് ചെയ്യൂ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"കണക്റ്റ് ചെയ്യുന്നു…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"നെറ്റ്‌വർക്ക് പരിധിയിലില്ല"</string>
     <string name="wifi_password" msgid="5565632142720292397">"പാസ്‌വേഡ്"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"പാസ്‌വേഡ് കാണിക്കുക"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"നെറ്റ്‌വർക്ക് പേര് നൽകുക"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ഒരു ആപ്പ് <xliff:g id="TIMEOUT">%1$d</xliff:g> സെക്കൻഡ് നേരത്തേക്ക് നിങ്ങളുടെ ഹെഡ്‌യൂണിറ്റ് മറ്റ് Bluetooth ഉപകരണങ്ങൾക്ക് ദൃശ്യമാക്കാൻ താൽപ്പര്യപ്പെടുന്നു."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Bluetooth ഓണാക്കി <xliff:g id="TIMEOUT">%2$d</xliff:g> സെക്കൻഡ് നേരത്തേക്ക് നിങ്ങളുടെ ഹെഡ്‌യൂണിറ്റ് മറ്റ് ഉപകരണങ്ങൾക്ക് ദൃശ്യമാക്കാൻ <xliff:g id="APP_NAME">%1$s</xliff:g> താൽപ്പര്യപ്പെടുന്നു."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ഒരു ആപ്പ് Bluetooth ഓണാക്കി <xliff:g id="TIMEOUT">%1$d</xliff:g> സെക്കൻഡ് നേരത്തേക്ക് നിങ്ങളുടെ ഹെഡ്‌യൂണിറ്റ് മറ്റ് ഉപകരണങ്ങൾക്ക് ദൃശ്യമാക്കാൻ താൽപ്പര്യപ്പെടുന്നു."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"മറ്റ് ഉപകരണങ്ങളിൽ %1$s ആയി ദൃശ്യമാണ്"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"എന്റെ ഉപകരണങ്ങൾ"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"മുമ്പ് കണക്‌റ്റ് ചെയ്തിട്ടുള്ളവ"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s കണക്റ്റ് ചെയ്തു"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s വിച്ഛേദിച്ചു"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth ജോടിയാക്കൽ അഭ്യർത്ഥന"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ജോടിയാക്കി കണ‌ക്‌റ്റ് ചെയ്യുക"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth ജോടിയാക്കൽ കോഡ്"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ഡിഫോൾട്ടായ അറിയിപ്പ് ശബ്‌ദം"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ഡിഫോൾട്ടായ അലാറം ശബ്‌ദം"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"സംരക്ഷിക്കുക"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"മുന്നറിയിപ്പ് ശബ്‌ദങ്ങൾ"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"റിംഗ്‌ടോൺ, അറിയിപ്പുകൾ, അലാറം എന്നിവ"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"തെളിച്ചം"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"കുറഞ്ഞ വെളിച്ചത്തിനനുസരിച്ച് സ്ക്രീൻ ക്രമീകരിക്കുക"</string>
     <string name="units_settings" msgid="402325305096925886">"യൂണിറ്റുകൾ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"വേഗത"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ദൂരം"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"എല്ലാ ആപ്പുകളും കാണിക്കൂ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ഡിഫോൾട്ട് ആപ്പുകൾ"</string>
     <string name="app_permissions" msgid="32799922508313948">"ആപ്പ് അനുമതികൾ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ഉപയോഗിക്കുന്ന ആപ്പുകൾ"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"നിങ്ങളുടെ ഡാറ്റയിലേക്കുള്ള ആപ്പ് ആക്‌സസ് നിയന്ത്രിക്കുക"</string>
     <string name="applications_settings" msgid="794261395191035632">"ആപ്പ് വിവരം"</string>
     <string name="force_stop" msgid="2153183697014720520">"നിർബന്ധിതമായി നിർത്തുക"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"നിർബന്ധിതമായി നിർത്തണോ?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"അൺഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കിയാൽ, Android-ഉം മറ്റ് ആപ്പുകളും ഇനി ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ആപ്പ് പ്രവർത്തനരഹിതമാക്കുക"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ഈ ഉപയോക്താവിനായി ഇൻസ്‌റ്റാൾ ചെയ്‌തിട്ടില്ല"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ഈ പ്രൊഫൈലിന് ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല"</string>
     <string name="permissions_label" msgid="2701446753515612685">"അനുമതികൾ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"അറിയിപ്പുകൾ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"സ്‌റ്റോറേജും കാഷെയും"</string>
     <string name="application_version_label" msgid="8556889839783311649">"പതിപ്പ്: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"അനുമതികളൊന്നും അനുവദിച്ചില്ല"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"അനുമതികളൊന്നും അഭ്യർത്ഥിച്ചില്ല"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ഉപയോഗിക്കാത്ത ആപ്പുകൾ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">ഉപയോഗിക്കാത്ത <xliff:g id="COUNT_1">%d</xliff:g> ആപ്പുകൾ</item>
+      <item quantity="one">ഉപയോഗിക്കാത്ത <xliff:g id="COUNT_0">%d</xliff:g> ആപ്പ്</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"അനുമതികൾ നീക്കം ചെയ്‌ത് ഇടം സൃഷ്‌ടിക്കുക"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"ഉള്ളിലെ മെമ്മറിയിൽ %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ഡാറ്റ ഉപയോഗം"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ആപ്പ് ഡാറ്റ ഉപയോഗം"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"എപ്പോഴും ചോദിക്കുക"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ഈ ആപ്പിൽ തുറക്കരുത്"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"പിന്തുണയ്‌ക്കുന്ന ലിങ്കുകൾ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ആപ്പുകൾ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"അടുത്തിടെ തുറന്നത്"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"എല്ലാ %1$d ആപ്പുകളും കാണുക"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"അനുമതി മാനേജർ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"നിങ്ങളുടെ ഡാറ്റയിലേക്കുള്ള ആപ്പ് ആക്‌സസ് നിയന്ത്രിക്കുക"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant-നും മറ്റും"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"സിസ്റ്റത്തിലേക്കും മറ്റ് ക്രമീകരണത്തിലേക്കും"</string>
     <string name="special_access" msgid="5730278220917123811">"പ്രത്യേക ആപ്പ് ആക്‌സസ്"</string>
     <string name="show_system" msgid="4401355756969485287">"സിസ്‌റ്റം കാണിക്കുക"</string>
     <string name="hide_system" msgid="8845453295584638040">"സിസ്‌‌റ്റം മറയ്‌ക്കുക"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"സിസ്‌റ്റം ആപ്പുകൾ മറയ്‌ക്കുക"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"സിസ്‌റ്റം ക്രമീകരണം പരിഷ്‌ക്കരിക്കൂ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"സിസ്‌റ്റം ക്രമീകരണം പരിഷ്‌ക്കരിക്കുന്നതിന് ഈ അനുമതി ആപ്പിനെ അനുവദിക്കുന്നു."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"അറിയിപ്പ് ആക്‌സസ്"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"അടുത്തിടെയുള്ള ലൊക്കേഷൻ അഭ്യർത്ഥനകളൊന്നുമില്ല"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ആപ്പ്-തല അനുമതികൾ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ലൊക്കേഷൻ സേവനങ്ങൾ"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ലൊക്കേഷൻ ഉപയോഗിക്കുക"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"സിസ്റ്റം"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"സി‌സ്‌റ്റം അപ്‌ഡേറ്റുകൾ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"വിപുലമായത്"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ആമുഖം, നിയമ വിവരങ്ങൾ, റീസെറ്റ് ചെയ്യൽ എന്നിവയും മറ്റും"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android പതിപ്പ്"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android സുരക്ഷാ പാച്ച് നില"</string>
     <string name="hardware_info" msgid="3973165746261507658">"മോഡലും ഹാർഡ്‌വെയറും"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ഇത് ഇനിപ്പറയുന്നവയ്‌ക്കുള്ള എല്ലാ മുൻഗണനകളും പുനഃസജ്ജീകരിക്കും:\n\n"<li>"പ്രവർത്തനരഹിതമാക്കിയ ആപ്പുകൾ"</li>\n<li>"പ്രവർത്തനരഹിതമാക്കിയ ആപ്പ് അറിയിപ്പുകൾ"</li>\n<li>"പ്രവർത്തനങ്ങൾക്കുള്ള ഡിഫോൾട്ട് ആപ്പുകൾ"</li>\n<li>"ആപ്പുകൾക്കുള്ള പശ്ചാത്തല ഡാറ്റാ നിയന്ത്രണങ്ങൾ"</li>\n<li>"ഏതെങ്കിലും അനുമതി നിയന്ത്രണങ്ങൾ"</li>\n\n"നിങ്ങൾക്ക് ഏതെങ്കിലും ആപ്പ് ഡാറ്റ നഷ്‌ടമാവില്ല."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ആപ്പുകൾ പുനഃസജ്ജീകരിക്കുക"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ആപ്പ് മുൻഗണനകൾ പുനഃസജ്ജീകരിച്ചു"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"എല്ലാ ഡാറ്റയും മായ്‌ക്കുക (ഫാക്‌ടറി റീസെറ്റ്)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ഇവയുൾപ്പെടെ നിങ്ങളുടെ വാഹനത്തിൻ്റെ ഹെഡ് യൂണിറ്റിൽ നിന്നുള്ള എല്ലാ ഡാറ്റയും ഇത് മായ്‌ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റത്തിൻ്റെയും ആപ്പിൻ്റെയും ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"നിലവിൽ നിങ്ങൾ ഇനിപ്പറയുന്ന അക്കൗണ്ടുകളിലേക്ക് സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ഈ വാഹനത്തിൽ മറ്റ് ഉപയോക്താക്കളുണ്ട്."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"വാഹനത്തിലെ ക്രമീകരണം പുനഃസജ്ജീകരിക്കുക"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"പുനഃസജ്ജീകരിക്കണോ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"നിങ്ങളുടെ എല്ലാ വ്യക്തിപരമായ വിവരങ്ങളും ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകളും മായ്‌ക്കണോ? നിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാനാകില്ല!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"എല്ലാം മായ്ക്കുക"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"മായ്‌ക്കുന്നു"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"കാത്തിരിക്കുക..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"എല്ലാ ഡാറ്റയും മായ്ക്കൂ (ഫാക്‌ടറി റീസെറ്റ്)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ഇൻഫോറ്റേയിൻമെന്റ് സി‌സ്‌റ്റത്തിൽ നിന്ന് എല്ലാ ഡാറ്റയും പ്രൊഫൈലുകളും മായ്‌ക്കുക"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ഇനിപ്പറയുന്നവ ഉൾപ്പെടെ നിങ്ങളുടെ വാഹനത്തിന്റെ ഇൻഫോറ്റേയിൻമെന്റ് സി‌സ്റ്റത്തിൽ നിന്നുള്ള എല്ലാ ഡാറ്റയും ഇത് മായ്‌ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റത്തിന്റെയും ആപ്പിന്റെയും ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"നിലവിൽ നിങ്ങൾ ഇനിപ്പറയുന്ന അക്കൗണ്ടുകളിലേക്ക് സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ഈ വാഹനത്തിൽ മറ്റ് പ്രൊഫൈലുകളുണ്ട്."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"എല്ലാ ഡാറ്റയും മായ്ക്കുക"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"എല്ലാ ഡാറ്റയും മായ്‌ക്കണോ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ഈ ഇൻഫോറ്റേയിൻമെന്റ് സി‌സ്‌റ്റത്തിലെ വ്യക്തിപരമായ പ്രൊഫൈൽ ഡാറ്റയും അക്കൗണ്ടുകളും ഡൗൺലോഡ് ചെയ്ത ആപ്പുകളും ഇത് മായ്ക്കും.\n\nഈ പ്രവർത്തനം പഴയപടിയാക്കാനാകില്ല."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"എല്ലാം മായ്ക്കുക"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"മായ്‌ക്കുന്നു"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"കാത്തിരിക്കുക..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"തീയതിയും സമയവും"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"തീയതി, സമയം, സമയ മേഖല, ഫോർമാറ്റുകൾ എന്നിവ സജ്ജീകരിക്കുക"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"സ്വയമേവ ഉള്ള തീയതിയും സമയവും"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"അഡ്‌മിൻ ആയി സൈൻ ഇൻ ചെയ്‌തു"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"എല്ലാ അഡ്‌മിൻ അനുമതികളും"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"അഡ്‌മിൻ അനുമതി നൽകുക"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ഉപയോക്താവിന് മറ്റ് അഡ്‌മിനുകൾ ഉൾപ്പെടെയുള്ള ഉപയോക്താക്കളെ ഇല്ലാതാക്കാനും സിസ്‌റ്റത്തിന്റെ ഫാക്‌ടറി പുനഃസജ്ജീകരിക്കാനും കഴിയും."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"പ്രൊഫൈലിന് മറ്റ് അഡ്‌മിനുകൾ ഉൾപ്പെടെയുള്ള പ്രൊഫൈലുകൾ ഇല്ലാതാക്കാനും സിസ്‌റ്റത്തിന്റെ ഫാക്‌ടറി റീസെറ്റ് നടത്താനും കഴിയും."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ഈ പ്രവൃത്തി പഴയപടിയാക്കാനാവില്ല."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ഉവ്വ്, അഡ്‌മിൻ അനുമതി നൽകുക"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"പുതിയ ഉപയോക്താക്കളെ സൃഷ്‌ടിക്കുക"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"പുതിയ പ്രൊഫൈലുകൾ സൃഷ്‌ടിക്കുക"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ഫോൺ കോളുകൾ വിളിക്കുക"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"കാറിന്റെ മൊബൈൽ ഡാറ്റ വഴി സന്ദേശമയയ്ക്കലും സ്വീകരിക്കലും"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"പുതിയ ആപ്പുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ആപ്പുകൾ അൺ ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ഉപയോക്താവിനെ ചേര്‍ക്കുക"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"പുതിയ ഉപയോക്താവ്"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"പുതിയ ഉപയോക്താവിനെ ചേർക്കണോ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"നിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തം ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ഏതൊരു ഉപയോക്താവിനും മറ്റെല്ലാ ഉപയോക്താക്കൾക്കുമായി ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്യാനാവും."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ഉപയോക്തൃ പരിധി എത്തി"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">നിങ്ങൾക്ക് <xliff:g id="COUNT">%d</xliff:g> ഉപയോക്താക്കളെ വരെ സൃഷ്‌ടിക്കാനാവും.</item>
-      <item quantity="one">ഒരു ഉപയോക്താവിന് മാത്രമേ സൃഷ്‌ടിക്കാനാവൂ.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"പ്രൊഫൈൽ ചേർക്കുക"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"പുതിയ പ്രൊഫൈൽ"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"പുതിയ പ്രൊഫൈൽ ചേർക്കണോ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"നിങ്ങളൊരു പുതിയ പ്രൊഫൈൽ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തം ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ഏതൊരു പ്രൊഫൈലിനും മറ്റ് എല്ലാ പ്രൊഫൈലുകൾക്കുമായി ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്യാനാകും."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"അനുവദിച്ച പ്രൊഫൈൽ പരിധിയെത്തി"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">നിങ്ങൾക്ക് <xliff:g id="COUNT">%d</xliff:g> പ്രൊഫൈലുകൾ വരെ സൃഷ്‌ടിക്കാം.</item>
+      <item quantity="one">ഒരു പ്രൊഫൈൽ മാത്രമേ സൃഷ്ടിക്കാനാകൂ.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"പുതിയ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാനായില്ല"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ഈ ഉപയോക്താവിനെ ഇല്ലാതാക്കണോ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കപ്പെടും."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ഉപയോക്താവിനെ ഇല്ലാതാക്കാനായില്ല."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ഒരു പുതിയ പ്രൊഫൈൽ സൃഷ്‌ടിക്കാനായില്ല"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ഈ പ്രൊഫൈൽ ഇല്ലാതാക്കണോ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ഈ പ്രൊഫൈലിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"പ്രൊഫൈൽ ഇല്ലാതാക്കാനായില്ല."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"പ്രൊഫൈലുകൾ പരസ്‌പരം മാറുമ്പോഴോ വാഹനം റീസ്റ്റാർട്ട് ചെയ്യുമ്പോഴോ ഈ പ്രൊഫൈൽ ഇല്ലാതാക്കപ്പെടും."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ഡിസ്‌മിസ്സ് ചെയ്യുക"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"അവസാന ഉപയോക്താവിനെ ഇല്ലാതാക്കണോ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ഈ കാറിന്റെ ബാക്കിയുള്ള ഒരേയൊരു ഉപയോക്താവിനെ ഇല്ലാതാക്കിയ ശേഷം, ഒരു പുതിയ അഡ്‌മിൻ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കും."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ഈ ഉപയോക്താവുമായി ബന്ധപ്പെട്ട എല്ലാ ഡാറ്റയും ക്രമീകരണവും ആപ്പുകളും ഇല്ലാതാക്കപ്പെടും. നിങ്ങൾ സിസ്‌റ്റം വീണ്ടും സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"ശേഷിക്കുന്ന അവസാന പ്രൊഫൈൽ ഇല്ലാതാക്കണോ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ഈ വാഹനത്തിനായി ശേഷിക്കുന്ന ഒരേയൊരു പ്രൊഫൈൽ നിങ്ങൾ ഇല്ലാതാക്കുകയാണെങ്കിൽ, ഈ പ്രൊഫൈലുമായി ബന്ധപ്പെട്ട എല്ലാ ഡാറ്റയും ക്രമീകരണവും ആപ്പുകളും മായ്ക്കും."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"റീസെറ്റ് ചെയ്ത ശേഷം, നിങ്ങൾക്ക് പുതിയ ഒരു പ്രൊഫൈൽ സജ്ജീകരിക്കാം."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"പുതിയ അഡ്‌മിനെ തിരഞ്ഞെടുക്കുക"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ഒരു അഡ്‌മിൻ എങ്കിലും നിങ്ങൾക്ക് ആവശ്യമുണ്ട്. ഇത് ഇല്ലാതാക്കാൻ, നിലവിലുള്ളതിന്റെ ഒരു മാറ്റി സ്ഥാപിക്കൽ ആദ്യം തിരഞ്ഞെടുക്കുക."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"അഡ്‌മിനെ തിരഞ്ഞെടുക്കുക"</string>
@@ -488,21 +520,22 @@
     <string name="current_user_name" msgid="3813671533249316823">"നിങ്ങൾ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"പേര്"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ഉപയോക്തൃ നാമം എഡിറ്റ് ചെയ്യുക"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"പ്രൊഫൈൽ പേര് എഡിറ്റ് ചെയ്യൂ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ഫീൽഡ് ശൂന്യമായിടരുത്."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"നൽകിയ ഉപയോക്തൃനാമം അസാധുവാണ്."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"നൽകിയ പ്രൊഫൈൽ പേര് അസാധുവാണ്."</string>
     <string name="users_list_title" msgid="770764290290240909">"ഉപയോക്താക്കള്‍"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"പ്രൊഫൈലുകള്‍‌"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ന് അനുമതികൾ നൽകി"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"സ്‌റ്റോറേജ്"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"സംഗീതവും ഓഡിയോയും"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"മറ്റ് ആപ്പുകൾ"</string>
     <string name="storage_files" msgid="6382081694781340364">"Files"</string>
     <string name="storage_system" msgid="1271345630248014010">"സിസ്‌റ്റം"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"സിസ്‌റ്റത്തിൽ Android <xliff:g id="VERSION">%s</xliff:g> പതിപ്പ് റൺ ചെയ്യാൻ ഉപയോഗിച്ച ഫയലുകളും ഉൾപ്പെടുന്നു"</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"സിസ്‌റ്റത്തിൽ Android പതിപ്പ് <xliff:g id="VERSION">%s</xliff:g> റൺ ചെയ്യാൻ ഉപയോഗിച്ച ഫയലുകളും ഉൾപ്പെടുന്നു"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ഓഡിയോ ഫയലുകൾ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"കണക്കാക്കുന്നു…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ആപ്പിന്റെ വലുപ്പം"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ഉപയോക്തൃ ഡാറ്റ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"പ്രൊഫൈൽ ഡാറ്റ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"കാഷെ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"മൊത്തം"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"സ്‌റ്റോറേജ് മായ്‌ക്കുക"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"സമന്വയിപ്പിക്കൽ റദ്ദാക്കുക"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"സമന്വയം നിലവിൽ പ്രശ്‌നങ്ങൾ നേരിടുകയാണ്. ഇത് ഉടൻ ശരിയാകും."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"സ്വകാര്യത"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"വാഹന ഡാറ്റ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"നിങ്ങളുടെ ലൊക്കേഷനിലേക്കുള്ള ആപ്പ് ആക്‌സസ് നിയന്ത്രിക്കുക"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"മൈക്രോഫോൺ"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"മൈക്രോഫോണിലേക്കുള്ള ആപ്പ് ആക്‌സസ് നിയന്ത്രിക്കുക"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"വാഹന ഡാറ്റ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ഈ വാഹനത്തിൽ സംരക്ഷിച്ച ആക്റ്റിവിറ്റികളും വിവരങ്ങളും മാനേജ് ചെയ്യുക"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"നിങ്ങളുടെ പ്രൊഫൈൽ ഇല്ലാതാക്കുക"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ഇൻഫോറ്റേയിൻമെന്റ് സി‌സ്‌റ്റത്തിൽ നിന്ന് നിങ്ങളുടെ പ്രൊഫൈലും അക്കൗണ്ടുകളും മായ്‌ക്കുക"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ഈ പ്രവർത്തനം നിങ്ങളുടെ പ്രൊഫൈലിൽ ലഭ്യമല്ല"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"സുരക്ഷ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"സ്ക്രീൻ ലോക്ക്"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ഒന്നുമില്ല"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ശരി"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"സ്‌ക്രീൻ ലോക്ക് നീക്കം ചെയ്യണോ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ഇത് നിങ്ങളുടെ അക്കൗണ്ട് ആർക്കും ആക്‌സസ് ചെയ്യാൻ അനുവദിക്കും"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"പ്രൊഫൈൽ ലോക്ക്"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"സ്വയമേവയുള്ള അൺലോക്ക് ചെയ്യൽ സജ്ജീകരിക്കുക"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"പിൻ നൽകുക"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"നിങ്ങളുടെ പാസ്‌വേഡ് നല്‍‌കുക"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"സുരക്ഷയ്‌ക്കായി, ഒരു പിൻ സജ്ജമാക്കുക"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> അക്കങ്ങളേക്കാൾ കുറവായിരിക്കണം"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"0 മുതൽ 9 വരെയുള്ള അക്കങ്ങൾ മാത്രം അടങ്ങിയിരിക്കണം."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ഉപകരണ അഡ്‌മിൻ സമീപകാലത്തുള്ള പിൻ ഉപയോഗിക്കുന്നത് അനുവദിക്കുന്നില്ല"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"നിങ്ങളുടെ ഐടി അഡ്‌മിൻ സാധാരണ പിന്നുകൾ ബ്ലോക്ക് ചെയ്‌തിട്ടുണ്ട്. മറ്റൊരു പിൻ പരീക്ഷിക്കുക."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"നിങ്ങളുടെ ഐടി അഡ്‌മിൻ സാധാരണ പിന്നുകൾ ബ്ലോക്ക് ചെയ്‌തിട്ടുണ്ട്. മറ്റൊരു പിൻ പരീക്ഷിക്കുക."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ഇതിൽ അസാധുവായൊരു പ്രതീകം ഉണ്ടായിരിക്കാൻ പാടില്ല."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"പാസ്‌‌വേഡ് അസാധുവാണ്, കുറഞ്ഞത് 4 പ്രതീകങ്ങളെങ്കിലും ഉണ്ടായിരിക്കണം."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ഒരു സമീപകാല പാസ്‌വേഡ് ഉപയോഗിക്കാൻ ഉപകരണ അഡ്‌മിൻ അനുവദിക്കുന്നില്ല"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"പാസ്‌വേഡ് സംരക്ഷിക്കുന്നതിൽ പിശക്"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"നിങ്ങളുടെ IT അഡ്‌മിൻ സാധാരണ പാസ്‍വേഡുകൾ ബ്ലോക്ക് ചെയ്‌തിട്ടുണ്ട്. മറ്റൊരു പാസ്‍വേഡ് പരീക്ഷിക്കുക."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"നിങ്ങളുടെ IT അഡ്‌മിൻ സാധാരണ പാസ്‍വേഡുകൾ ബ്ലോക്ക് ചെയ്‌തിട്ടുണ്ട്. മറ്റൊരു പാസ്‍വേഡ് പരീക്ഷിക്കുക."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"അക്കങ്ങൾ ആരോഹണ ക്രമത്തിലോ അവരോഹണ ക്രമത്തിലോ അനുക്രമമായോ നൽകുന്നത് അനുവദനീയമല്ല."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"സ്‌ക്രീൻ ലോക്ക് ഓപ്ഷനുകള്‍"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ദിവസം മുമ്പ്"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter കീ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ഡെമോയിൽ നിന്ന് പുറത്തുകടക്കുക"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ഡെമോ മോഡിൽ നിന്ന് പുറത്തുകടക്കുക"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ഇത് ഡെമോ അക്കൗണ്ട് ഇല്ലാതാക്കുകയും സിസ്‌റ്റം ഫാക്‌ടറി ഡാറ്റ പുനഃക്രമീകരിക്കുകയും ചെയ്യും. എല്ലാ ഉപയോക്തൃ ഡാറ്റയും നഷ്‌ടമാവും."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ഇത് ഡെമോ അക്കൗണ്ട് ഇല്ലാതാക്കുകയും സിസ്‌റ്റത്തിന്റെ ഫാക്‌ടറി റീസെറ്റ് നടത്തുകയും ചെയ്യും. എല്ലാ പ്രൊഫൈൽ ഡാറ്റയും നഷ്‌ടമാകും."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ഡെമോയിൽ നിന്ന് പുറത്തുകടക്കുക"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ഡ്രൈവ് ചെയ്യുമ്പോൾ ഫീച്ചർ ലഭ്യമല്ല"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ഡ്രൈവ് ചെയ്യുമ്പോൾ ഉപയോക്താവിനെ ചേർക്കാനാവില്ല"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"ഡ്രൈവ് ചെയ്യുമ്പോൾ പ്രൊഫൈൽ ചേർക്കാനാകില്ല"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant ആപ്പ്"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"സ്ക്രീനിലെ ടെക്‌സ്‌റ്റ് ഉപയോഗിക്കുക"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"സ്ക്രീനിലെ ഉള്ളടക്കങ്ങൾ ആക്‌സസ് ചെയ്യാൻ Assistant-നെ അനുവദിക്കുക"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"സ്ക്രീൻഷോട്ട് ഉപയോഗിക്കുക"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"സ്ക്രീൻ ചിത്രം ആക്‌സസ് ചെയ്യാൻ Assistant-നെ അനുവദിക്കുക"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"അടുത്തിടെ അയച്ചവ"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"എല്ലാ ആപ്പുകളും"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"പ്രൊഫൈലുകളും അക്കൗണ്ടുകളും"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"മറ്റ് പ്രൊഫൈലുകൾ മാനേജ് ചെയ്യുക"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ഒരു പ്രൊഫൈൽ ചേര്‍ക്കുക"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ഈ പ്രൊ‌ഫൈൽ ഇല്ലാതാക്കുക"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"പ്രൊഫൈൽ ചേർക്കുക"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 9e9b189..4381d33 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Дэлгэц"</string>
     <string name="brightness" msgid="2919605130898772866">"Гэрэлтүүлгийн түвшин"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Дасан зохицох боломжтой гэрэлтүүлэг"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Боломжтой гэрлийн гэрэлтүүлгийн түвшнийг оновчлох"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Дэлгэцийн гэрэлтүүлгийг орчинтой тохируулах"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Шөнийн гэрэл асаалттай байна"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"дэлгэц, мэдрэмтгий дэлгэц"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"бүдэг гэрэлтэй дэлгэц, мэдрэмтгий дэлгэц, батерей"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"бүдэг гэрэлтэй дэлгэц, мэдрэмтгий дэлгэц, батерей"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"бүдэг гэрэлтэй дэлгэц, шөнө, уусгалт"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Шөнийн горим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Сүлжээ &amp; интернэт"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобайл сүлжээ"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Дата ашиглалтын анхааруулга тохируулах"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Дата ашиглалтын хязгаар тохируулах"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Тохируулах"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM сүлжээ"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s-д %1$d МБ ашигласан"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Бусад сүлжээнд нэгдэх"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Сүлжээний тохиргоо"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi-г асааж байна…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi-г унтрааж байна…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Сүлжээнд холбогдож чадсангүй"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Сүлжээ нэмэх"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Холбох"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Холбогдож байна…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Сүлжээ хүрээнд алга"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Нууц үг"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Нууц үгийг харуулах"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Сүлжээний нэр оруулна уу"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Апп таны машины дэлгэцийг бусад Bluetooth төхөөрөмжид <xliff:g id="TIMEOUT">%1$d</xliff:g> секундийн турш харуулах хүсэлтэй байна."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> Bluetooth-г асааж, таны машины дэлгэцийг бусад төхөөрөмжид <xliff:g id="TIMEOUT">%2$d</xliff:g> секундийн турш харуулах хүсэлтэй байна."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Апп Bluetooth-г асааж, таны машины дэлгэцийг бусад төхөөрөмжид <xliff:g id="TIMEOUT">%1$d</xliff:g> секундийн турш харуулах хүсэлтэй байна."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Бусад төхөөрөмжид %1$s-р харагдана"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Миний төхөөрөмжүүд"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Өмнө нь холбогдсон"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s холбогдсон"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s салсан"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-г хослуулах хүсэлт"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Хослуулах &amp; холбох"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-н хослуулах код"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Мэдэгдлийн өгөгдмөл ая"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Сэрүүлгийн өгөгдмөл ая"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Хадгалах"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Сэрэмжлүүлгийн дуу"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Хонхны ая, мэдэгдэл, сэрүүлэг"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Гэрэлтүүлэг"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Дэлгэцийг бүдэг гэрэлд тохируулах"</string>
     <string name="units_settings" msgid="402325305096925886">"Нэгж"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Хурд"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Зай"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Бүх аппыг харуулах"</string>
     <string name="default_applications" msgid="1558183275638697087">"Өгөгдмөл апп"</string>
     <string name="app_permissions" msgid="32799922508313948">"Аппын зөвшөөрөл"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>-г ашиглаж буй аппууд"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Өгөгдлийнхөө аппын хандалтыг хянах"</string>
     <string name="applications_settings" msgid="794261395191035632">"Аппын мэдээлэл"</string>
     <string name="force_stop" msgid="2153183697014720520">"Хүчээр зогсоох"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Хүчээр зогсоох уу?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Устгах"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Та энэ аппыг идэвхгүй болгосон тохиолдолд Андройд болон бусад аппын хэвийн ажиллагаа тасалдаж болзошгүй."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Aппыг идэвхгүй болгох"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Энэ хэрэглэгчид зориулан суулгаагүй"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Энэ профайлд суулгаагүй"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Зөвшөөрлүүд"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Мэдэгдэл"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Хадгалах сан болон завсрын санах ойд хадгалах"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Хувилбар: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Зөвшөөрөл олгоогүй байна"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ямар ч зөвшөөрөл хүсээгүй байна"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ашиглаагүй апп"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">Ашиглаагүй <xliff:g id="COUNT_1">%d</xliff:g> апп</item>
+      <item quantity="one">Ашиглаагүй <xliff:g id="COUNT_0">%d</xliff:g> апп</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Зөвшөөрөл хасаж, сул зай гаргах"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s-н дотоод сан"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Дата ашиглалт"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Аппын дата ашиглалт"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Тухай бүрд асуух"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Энэ аппад битгий нээ"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Дэмждэг холбоос"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Аппууд"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Саяхан нээсэн"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Бүх %1$d аппыг харах"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Зөвшөөрлийн менежер"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Өгөгдлийнхөө аппын хандалтыг хянах"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Туслах болон бусдад"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Систем болон бусад тохиргоонд"</string>
     <string name="special_access" msgid="5730278220917123811">"Аппын тусгай хандалт"</string>
     <string name="show_system" msgid="4401355756969485287">"Систем харуулах"</string>
     <string name="hide_system" msgid="8845453295584638040">"Систем нуух"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Системийн аппуудыг нуух"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Системийн тохиргоог өөрчлөх"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Энэ зөвшөөрөл аппад системийн тохиргоог өөрчлөхийг зөвшөөрдөг."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Мэдэгдлийн хандалт"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Саяхны байршлын хүсэлт алга"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Аппын түвшний зөвшөөрөл"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Байршлын үйлчилгээ"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Байршлыг ашиглах"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Системийн шинэчлэлт"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Дэвшилтэт"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Тухай, хуулийн мэдээлэл, шинэчлэх болон бусад"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Андройд хувилбар"</string>
     <string name="security_patch" msgid="4794276590178386903">"Андройдын аюулгүй байдлын засварын түвшин"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Загвар, техник хангамж"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Энэ нь бүх тохиргоог шинэчлэх болно:\n\n"<li>" Идэвхгүй болгосон аппууд"</li>" \n"<li>"Идэвхгүй болгосон аппын мэдэгдлүүд "</li>\n" "<li>" Үйлдлийн өгөгдмөл аппууд"</li>\n<li>" Аппуудын арын датаны хязгаарлалт"</li>\n<li>" Дурын зөвшөөрлийн хязгаарлалт"</li>\n\n"Та аппын ямар ч өгөгдөл алдахгүй."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Аппуудыг шинэчлэх"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Аппын тохиргоог шинэчиллээ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Бүх өгөгдлийг устгах (үйлдвэрийн тохиргоо руу шинэчлэх)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Энэ нь таны тээврийн хэрэгслийн үндсэн нэгжээс\n\n"<li>"таны Google бүртгэл"</li>",\n"<li>"Систем, аппын өгөгдөл болон тохиргоо"</li>",\n"<li>"татаж авсан аппууд"</li>" зэрэг бүх өгөгдлийг устгана"</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Та одоогоор дараах бүртгэлд нэвтэрсэн байна:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Энэ тээврийн хэрэгсэл дээр өөр хэрэглэгч байна."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Тээврийн хэрэгслийг дахин тохируулах"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Дахин тохируулах уу?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Бүх хувийн мэдээллээ болон татаж авсан аппаа устгах уу? Та энэ үйлдлийг буцаах боломжгүй!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Бүгдийг устгах"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Устгаж байна"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Түр хүлээнэ үү..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Бүх өгөгдлийг устгах (үйлдвэрийн тохиргоонд шинэчлэх)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Бүх өгөгдөл, профайлыг инфотэйнмент системээс устгах"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Энэ нь таны тээврийн хэрэгслийн инфотэйнмент системийн бүх өгөгдлийг устгана. Үүнд:\n\n"<li>"Таны Google Бүртгэл"</li>\n<li>"Систем, аппын өгөгдөл болон тохиргоо"</li>\n<li>"Татсан аппууд"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Та одоогоор дараах бүртгэлүүдэд нэвтэрсэн байна:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Энэ тээврийн хэрэгсэл дээр өөр профайл байна."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Бүх өгөгдлийг устгах"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Бүх өгөгдлийг устгах уу?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Энэ нь таны инфотэйнмент систем дээрх бүх хувийн профайлын өгөгдөл, бүртгэл болон татсан аппыг устгана.\n\nТа энэ үйлдлийг болих боломжгүй."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Бүгдийг устгах"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Устгаж байна"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Түр хүлээнэ үү..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Огноо &amp; цаг"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Огноо, цаг, цагийн бүс &amp; форматуудыг тохируулах"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Автомат огноо &amp; цаг"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Админаар нэвтэрсэн"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Бүх админы зөвшөөрөл"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Админ болгоно уу"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Тус хэрэглэгч бусад Aдмин зэрэг хэрэглэгчдийг устгах болон системийг үйлдвэрийн тохиргоонд шинэчлэх боломжтой болно."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Профайл нь бусад админ зэрэг профайлыг устгах болон системийг үйлдвэрийн тохиргоонд шинэчлэх боломжтой болно."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Энэ үйлдлийг буцаах боломжгүй."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Тийм, админ болгоно уу"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Шинэ хэрэглэгчид үүсгэх"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Шинэ профайл үүсгэх"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Утасны дуудлагууд хийх"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Машины утасны датанаас мессеж бичих"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Шинэ аппууд суулгах"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Аппууд устгах"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Хэрэглэгч нэмэх"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Шинэ хэрэглэгч"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Шинэ хэрэглэгч нэмэх үү?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Таныг шинэ хэрэглэгч нэмэх үед тухайн хэрэглэгч хувийн орон зайгаа тохируулах шаардлагатай."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Бусад бүх хэрэглэгчийн аппуудыг дурын хэрэглэгч шинэчлэх боломжтой."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Хэрэглэгчийн хязгаарт хүрсэн"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Та <xliff:g id="COUNT">%d</xliff:g> хүртэлх хэрэглэгч үүсгэх боломжтой.</item>
-      <item quantity="one">Зөвхөн нэг хэрэглэгч үүсгэх боломжтой.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Профайл нэмэх"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Шинэ профайл"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Шинэ профайл нэмэх үү?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Таныг шинэ профайл нэмэх үед тухайн хүн хувийн орон зайгаа тохируулах шаардлагатай."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Аль ч профайл бусад бүх профайлын аппыг шинэчлэх боломжтой."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Профайлын хязгаарт хүрсэн"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Зөвхөн <xliff:g id="COUNT">%d</xliff:g> профайл үүсгэх боломжтой.</item>
+      <item quantity="one">Зөвхөн нэг профайл үүсгэх боломжтой.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Шинэ хэрэглэгч үүсгэж чадсангүй"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Энэ хэрэглэгчийг устгах уу?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Бүх апп болон өгөгдлийг устгах болно."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Хэрэглэгчийг устгаж чадсангүй."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Шинэ профайл үүсгэж чадсангүй"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Энэ профайлыг устгах уу?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Энэ профайлын бүх апп болон өгөгдлийг устгана"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Профайлыг устгаж чадсангүй."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Таныг профайлыг сэлгэх эсвэл тээврийн хэрэгслийг дахин эхлүүлэх үед энэ профайлыг устгах болно."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Үл хэрэгсэх"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Дахин оролдох"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Сүүлийн хэрэглэгчийг устгах уу?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Энэ машинд үлдсэн хэрэглэгчийг устгасны дараа шинэ админ хэрэглэгч үүсгэх болно."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Энэ хэрэглэгчтэй холбоотой бүх өгөгдөл, тохиргоо болон аппыг устгах болно. Та системийг дахин тохируулах шаардлагатай болно."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Сүүлийн үлдсэн профайлыг устгах уу?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Хэрэв та энэ тээврийн хэрэгсэлд үлдсэн ганц профайлыг устгавал энэ профайлтай холбоотой бүх өгөгдөл, тохиргоо, аппыг устгана."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Шинэчилсний дараа та шинэ профайл тохируулах боломжтой."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Шинэ админ сонгох"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Танд хамгийн багадаа нэг админ шаардлагатай. Үүнийг устгахын тулд эхлээд орлуулалтыг сонгоно уу."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Админ сонгох"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Та (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Нэр"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Тохируулаагүй"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Хэрэглэгчийн нэрийг засах"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Профайлын нэрийг засах"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Талбар хоосон байж болохгүй."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Оруулсан хэрэглэгчийн нэр буруу байна."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Оруулсан профайлын нэр буруу байна."</string>
     <string name="users_list_title" msgid="770764290290240909">"Хэрэглэгчид"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профайл"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Зөвшөөрлийг %1$s-д олгосон"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Хадгалах сан"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Хөгжим &amp; аудио"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудио файл"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Тооцоолж байна…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Аппын хэмжээ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Хэрэглэгчийн өгөгдөл"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Профайлын өгөгдөл"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Завсрын санах ой"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Нийт"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Хадгалах санг цэвэрлэх"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Синк хийхийг цуцлах"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Одоогоор синк хийхэд асуудал үүсээд байна. Удахгүй зүгээр болно."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Нууцлал"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Тээврийн хэрэгслийн өгөгдөл"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Байршлынхаа аппын хандалтыг хянах"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Микрофоны аппын хандалтыг хянах"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Тээврийн хэрэгслийн өгөгдөл"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Энэ тээврийн хэрэгсэлд хадгалсан үйл ажиллагаа болон мэдээллийг удирдах"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Профайлаа устгах"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Профайл, бүртгэлээ инфотэйнмент системээс устгах"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Энэ үйлдэл таны профайлд боломжгүй"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Нууцлал"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Дэлгэцийн түгжээ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Байхгүй"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ОК"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Дэлгэцийн түгжээг хасах уу?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Ингэснээр хүн бүхэн таны бүртгэлд хандах боломжтой болно"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Профайлын түгжээ"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Автоматаар түгжээ тайлахыг тохируулах"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ПИН кодоо оруулна уу"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Нууц үгээ оруулна уу"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Аюулгүй байдлын үүднээс ПИН тохируулах"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>-с цөөн цифртэй байх ёстой"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Зөвхөн 0-9-н цифр агуулах шаардлагатай."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Төхөөрөмжийн админ саяхны ПИН-г ашиглахыг зөвшөөрдөггүй"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Таны IT админ түгээмэл ПИН-г блоклосон байна. Өөр ПИН оруулна уу."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Таны IT админ түгээмэл ПИН-г блоклосон байна. Өөр ПИН оруулна уу."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Үүнд буруу тэмдэгт агуулах боломжгүй."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Нууц үг буруу байна. Хамгийн багадаа 4 тэмдэгттэй байх ёстой."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Төхөөрөмжийн админ саяхны нууц үг ашиглахыг зөвшөөрдөггүй"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Нууц үгийг хадгалахад алдаа гарлаа"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Таны IT админ түгээмэл нууц үгийг блоклосон байна. Өөр нууц үг оруулна уу."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Таны IT админ түгээмэл нууц үгийг блоклосон байна. Өөр нууц үг оруулна уу."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Өсөж буй, буурч буй эсвэл давхардсан цифрийг зөвшөөрдөггүй."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Дэлгэцийн түгжээний сонголтууд"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> өдрийн өмнө"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Oруулах түлхүүр"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Туршилтаас гарах"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Туршилтын горимоос гарах"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Энэ нь туршилтын бүртгэлийг устгах бөгөөд системийг үйлдвэрээс гарсан төлөвт шинэчилнэ. Хэрэглэгчийн бүх өгөгдөл устах болно."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Энэ нь демо бүртгэлийг устгах ба системийг үйлдвэрийн өгөгдлийн төлөвт шинэчилнэ. Профайлын бүх өгөгдөл устана."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Туршилтаас гарах"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ҮЛ ХЭРЭГСЭХ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Жолоо барьж байх үед онцлог боломжгүй"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Жолоо барьж байх үед хэрэглэгч нэмэх боломжгүй"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Жолоо барьж байх үед профайл нэмэх боломжгүй"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Хайх"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Туслах, дуу хоолой"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Туслах апп"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Дэлгэцийн текстийг ашиглах"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Туслахад дэлгэцийн контентод хандахыг зөвшөөрөх"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Дэлгэцийн агшныг ашиглах"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Туслахад дэлгэцийн зурагт хандахыг зөвшөөрөх"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Саяхан илгээсэн"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Бүх апп"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профайл, бүртгэл"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Бусад профайлыг удирдах"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Профайл нэмэх"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Энэ профайлыг устгах"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Профайл нэмэх"</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 95e99d2..19034f7 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"डिस्प्ले"</string>
     <string name="brightness" msgid="2919605130898772866">"ब्राइटनेस पातळी"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"अनुकूल चकाकी"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"उपलब्ध प्रकाशासाठी चकाकी पातळी ऑप्टिमाइझ करा"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"रात्रीचा प्रकाश सुरू आहे"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"स्क्रीन, टचस्क्रीन"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"मंद स्क्रीन, टचस्क्रीन, बॅटरी"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"मंद स्क्रीन, टचस्क्रीन, बॅटरी"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"मंद स्क्रीन, रात्र, रंगछटा"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"नाइट मोड"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क आणि इंटरनेट"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"डेटा वापर चेतावणी सेट करा"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"डेटा वापर मर्यादा सेट करा"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"सेट करा"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"वाय-फाय"</string>
     <string name="wifi_starting" msgid="473253087503153167">"वाय-फाय सुरू करत आहे…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"वाय-फाय बंद करत आहे…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्कशी कनेक्‍ट करता आले नाही"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क जोडा"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"कनेक्ट करा"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"कनेक्ट करत आहे…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"नेटवर्क रेंजमध्ये नाही"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड दाखवा"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"कृपया नेटवर्कचे नाव एंटर करा"</string>
@@ -166,7 +173,7 @@
     <string name="progress_scanning" msgid="7191583064717479795">"शोधत आहे"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लूटूथ"</string>
     <string name="bluetooth_device" msgid="3178478829314083240">"निनावी डिव्हाइस"</string>
-    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"पेअर केलेली डिव्हाइस"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"पेअर केलेले डिव्हाइस"</string>
     <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नवीन डिव्हाइस पेअर करा"</string>
     <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"पेअर करण्यासाठी ब्लूटूथ सुरू होईल"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"डिव्हाइस डिस्‍कनेक्‍ट करायचे?"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"एका अ‍ॅपला तुमचे हेडयुनिट इतर ब्लूटूथ डिव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता दृश्यमान करायचे आहे."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ला ब्लूटूथ सुरू करायचे आहे आणि तुमचे हेडयुनिट इतर डिव्हाइससाठी <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांकरिता दृश्‍यमान करायचे आहे."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"एका अ‍ॅपला ब्लूटूथ सुरू करायचे आहे आणि तुमचे हेडयुनिट इतर डिव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता दृश्यमान बनवायचे आहे."</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लूटूथ पेअरिंग विनंती"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"पेअर करा आणि कनेक्ट करा"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्लूटूथ पेअरिंग कोड"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"डीफॉल्ट सूचना आवाज"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्मचा डीफॉल्ट आवाज"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"सेव्ह करा"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"युनिट"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"वेग"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"अंतर"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"सर्व अ‍ॅप्स दाखवा"</string>
     <string name="default_applications" msgid="1558183275638697087">"डीफॉल्ट अ‍ॅप्स"</string>
     <string name="app_permissions" msgid="32799922508313948">"अ‍ॅप परवानग्या"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> वापरणारी अ‍ॅप्स"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"ॲप माहिती"</string>
     <string name="force_stop" msgid="2153183697014720520">"सक्तीने थांबवा"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"सक्तीने थांबवायचे आहे का?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"अनइंस्टॉल करा"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"तुम्ही हे अ‍ॅप बंद केल्यास, Android आणि इतर अ‍ॅप्स कदाचित यापुढे अपेक्षेप्रमाणे कार्य करू शकणार नाहीत."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"अ‍ॅप बंद करा"</string>
-    <string name="not_installed" msgid="4218816013370552746">"या वापरकर्त्यासाठी इंस्टॉल केले नाही"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"परवानग्या"</string>
     <string name="notifications_label" msgid="6586089149665170731">"सूचना"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"स्टोरेज आणि कॅशे"</string>
     <string name="application_version_label" msgid="8556889839783311649">"आवृत्त्या: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कोणत्याही परवानग्यांना मंजूरी दिली नाही"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"कोणत्याही परवानग्यांची विनंती केली नाही"</string>
+    <string name="unused_apps" msgid="648471933781010395">"न वापरलेली अ‍ॅप्स"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> न वापरलेली ॲप्स</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> न वापरलेले ॲप</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"परवानग्या काढून टाका आणि जागा मोकळी करा"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s अंतर्गत स्टोरेजमध्ये"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटा वापर"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ॲप डेटा वापर"</string>
@@ -334,9 +367,24 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"प्रत्येकवेळी विचारा"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"हा अ‍ॅप उघडू नका"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"सपोर्ट असलेल्या लिंक"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"विशेष अ‍ॅप अ‍ॅक्सेस"</string>
     <string name="show_system" msgid="4401355756969485287">"सिस्टम दाखवा"</string>
     <string name="hide_system" msgid="8845453295584638040">"सिस्टम लपवा"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"सिस्टम ॲप्स लपवा"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"सिस्टम सेटिंग्ज सुधारित करा"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ही परवानगी ॲपला सिस्टम सेटिंग्ज सुधारित करण्‍याची अनुमती देते."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"सूचना अ‍ॅक्सेस"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"अलीकडील कोणत्याही स्थान विनंत्या नाहीत"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ॲप पातळी परवानग्या"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"स्‍थान सेवा"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android आवृत्ती"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षितता पॅच पातळी"</string>
     <string name="hardware_info" msgid="3973165746261507658">"मॉडेल आणि हार्डवेअर"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"हे यासाठी सर्व प्राधान्ये रीसेट करेल:\n\n"<li>"बंद केलेली अ‍ॅप्स"</li>\n<li>"बंद केलेल्या अ‍ॅप्स सूचना"</li>\n<li>"क्रियांसाठी डीफॉल्ट अ‍ॅप्लिकेशन्स"</li>\n<li>"अ‍ॅप्ससाठी बॅकग्राउंड डेटा प्रतिबंध"</li>\n<li>"कोणतेही परवानगी प्रतिबंध"</li>\n\n"तुम्ही कोणताही अ‍ॅप डेटा गमावणार नाही."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"अ‍ॅप्स रीसेट करा"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ॲप प्राधान्ये रीसेट केली गेली आहेत"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"सर्व डेटा मिटवा (फॅक्टरी रीसेट)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"हे तुमच्या डिव्‍हाइसच्या मुख्य युनिटसह पुढील सर्व डेटा मिटवेल:\n\n"<li>"तुमचे Google खाते"</li>\n<li>"सिस्टम आणि अ‍ॅप डेटा आणि सेटिंग्ज"</li>\n<li>"डाउनलोड केलेली अ‍ॅप्स"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"तुम्ही खालील खात्यांवर सध्या साइन इन केले आहे:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"या डिव्‍हाइसवर इतर वापरकर्ते उपस्‍थित आहेत."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"डिव्हाइस रीसेट करा"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रीसेट करायचे?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"तुमची सर्व वैयक्तिक माहिती आणि डाउनलोड केलेली अ‍ॅप्स मिटवायची का? तुम्ही ही क्रिया पूर्ववत करू शकत नाही!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"प्रत्येक गोष्ट मिटवा"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"मिटवत आहे"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया वाट पाहा…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"सर्व डेटा मिटवा (फॅक्टरी रीसेट)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"तुम्ही सध्या खालील खात्यांमध्ये साइन इन केले आहे:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"सर्वकाही मिटवा"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"मिटवत आहे"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"कृपया प्रतीक्षा करा…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"तारीख आणि वेळ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"तारीख, वेळ, टाइम झोन आणि फॉरमॅट सेट करा"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"आपोआप तारीख आणि वेळ"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"प्रशासक म्हणून साइन इन केले आहे"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"सर्व प्रशासकीय परवानग्या"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"प्रशासक करा"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"वापरकर्ता इतर प्रशासकांसह वापरकर्त्यांना हटवू शकेल आणि सिस्टीम फॅक्टरी रीसेट करू शकेल."</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"ही क्रिया परत उलट करता येणार नाही."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"होय, प्रशासक करा"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"नवीन वापरकर्ते तयार करा"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फोन कॉल करा"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कारच्या मोबाइल डेटाद्वारे मेसेजिंग"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"नवीन अ‍ॅप्स इंस्टॉल करा"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"अ‍ॅप्स अनइंस्टॉल करा"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"वापरकर्ता जोडा"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नवीन वापरकर्ता"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नवीन वापरकर्ता जोडायचा?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तुम्ही नवीन वापरकर्त्याला जोडल्यावर, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अ‍ॅप्स अपडेट करू शकतो."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"वापरकर्ता मर्यादा गाठली"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">तुम्ही <xliff:g id="COUNT">%d</xliff:g> वापरकर्ते तयार करू शकता.</item>
-      <item quantity="one">फक्त एक वापरकर्ता तयार करू शकता.</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"नवीन वापरकर्ता तयार करता आला नाही"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"हा वापरकर्ता हटवायचा?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"सर्व अ‍ॅप्स आणि डेटा हटवला जाईल."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"वापरकर्ता हटवता आला नाही."</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"तुम्ही प्रोफाइल स्विच केल्यावर किंवा वाहन रीस्टार्ट केल्यावर, ही प्रोफाइल हटवली जाईल."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"डिसमिस करा"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"पुन्हा प्रयत्न करा"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"शेवटचा वापरकर्ता हटवायचा?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"या कारसाठी फक्त उर्वरित वापरकर्ता हटवल्यानंतर नवीन प्रशासक तयार होईल."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"या वापरकर्त्याशी संबंधित सर्व डेटा, सेटिंग्ज आणि अ‍ॅप्स हटवले जातील. तुम्हाला पुन्हा सिस्टम सेट करण्याची आवश्यकता असेल"</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"नवीन प्रशासक निवडा"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"तुमच्याकडे किमान एक प्रशासक आवश्यक आहे. हे हटवण्यासाठी, पहिले बदली निवडा."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"प्रशासक निवडा"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"तुम्ही (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाव"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेट केलेले नाही"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"वापरकर्ता नाव संपादित करा"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"फील्ड रिकामे असू शकत नाही."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"एंटर केलेले वापरकर्ता नाव चुकीचे आहे."</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"वापरकर्ते"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ला परवानग्या मंजूर केल्या"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"स्टोरेज"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"संगीत आणि ऑडिओ"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ऑडिओ फाइल"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"मोजत आहे…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"अ‍ॅप आकार"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"वापरकर्ता डेटा"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"कॅशे"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"एकूण"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"स्‍टोरेज साफ करा"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक रद्द करा"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"संकालनास सध्या समस्या येत आहेत. हे लवकरच परत येईल."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"गोपनीयता"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"वाहनाशी संबंधित डेटा"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"वाहनाशी संबंधित डेटा"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"या वाहनावर सेव्ह केलेल्या अ‍ॅक्टिव्हिटी आणि माहिती व्यवस्थापित करा"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षितता"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रीन लॉक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"काहीही नाही"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"ठीक आहे"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"स्क्रीन लॉक काढायचा?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"तुमचे खाते ॲक्‍सेस करण्‍यासाठी हे कोणालाही अनुमती देईल"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"तुमचा पिन एंटर करा"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"तुमचा पासवर्ड एंटर करा"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"सुरक्षिततेसाठी पिन सेट करा"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> अंकांपेक्षा कमी असणे आवश्यक आहे"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"केवळ ०-९ अंक असणे आवश्यक आहे."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"डिव्हाइस प्रशासक अलीकडील पिन वापरण्याची अनुमती देत नाही"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"सामान्यत: वापरले जाणारे पिन तुमच्या IT प्रशासनाने ब्लॉक केलेले आहेत. दुसरा एखादा पिन वापरून पाहा."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"सामान्यत: वापरले जाणारे पिन तुमच्या IT प्रशासनाने ब्लॉक केलेले आहेत. दुसरा एखादा पिन वापरून पाहा."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"यामध्ये चुकीच्‍या वर्णांचा समावेश असू शकत नाही."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"पासवर्ड चुकीचा आहे, किमान 4 वर्ण असणे आवश्यक आहे."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"डिव्हाइस प्रशासक अलीकडील पासवर्ड वापरण्याची अनुमती देत नाही"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"पासवर्ड सेव्ह करताना एरर आली"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"सामान्यत: वापरले जाणारे पासवर्ड तुमच्या IT प्रशासनाने ब्लॉक केलेले आहेत. दुसरा एखादा पासवर्ड वापरून पहा."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"सामान्यत: वापरले जाणारे पासवर्ड तुमच्या IT प्रशासनाने ब्लॉक केलेले आहेत. दुसरा एखादा पासवर्ड वापरून पहा."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकांच्या चढत्या, उतरत्या किंवा पुनरावृत्त क्रमाला अनुमती नाही."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक पर्याय"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिवसांपूर्वी"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"की एंटर करा"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"डेमो मोडमधून बाहेर पडा"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोडमधून बाहेर पडा"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"हे डेमो खाते हटवेल आणि फॅक्टरी डेटा सिस्टम रीसेट करेल. सर्व वापरकर्ता डेटा गमावेल."</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोडमधून बाहेर पडा"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"डिसमिस करा"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ड्राइव्ह करताना वैशिष्ट्य उपलब्ध नाही"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ड्राइव्ह करत असताना वापरकर्त्याला जोडू शकत नाही"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant आणि आवाज"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 16acbad..1177922 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Paparan"</string>
     <string name="brightness" msgid="2919605130898772866">"Tahap kecerahan"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Kecerahan boleh suai"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimumkan tahap kecerahan untuk cahaya yang tersedia"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Laraskan kecerahan skrin mengikut persekitaran"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Cahaya Malam dihidupkan"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skrin, skrin sentuh"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"malapkan skrin, skrin sentuh, bateri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"malapkan skrin, skrin sentuh, bateri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"malapkan skrin, malam, seri warna"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mod malam"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rangkaian &amp; Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rangkaian mudah alih"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Tetapkan amaran penggunaan data"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Tetapkan had penggunaan data"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Tetapkan"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rangkaian OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB digunakan %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Sertai rangkaian lain"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Pilihan rangkaian"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Menghidupkan Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Mematikan Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Gagal menyambung ke rangkaian"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tambah rangkaian"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Sambung"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Menyambung…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Rangkaian di luar liputan"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Kata Laluan"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Tunjukkan kata laluan"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Sila masukkan nama rangkaian"</string>
@@ -190,9 +192,14 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Terdapat apl yang mahu memperlihatkan unit kepala anda kepada peranti Bluetooth lain selama <xliff:g id="TIMEOUT">%1$d</xliff:g> saat."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> mahu menghidupkan Bluetooth dan memperlihatkan unit kepala anda kepada peranti lain selama <xliff:g id="TIMEOUT">%2$d</xliff:g> saat."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Terdapat apl yang mahu menghidupkan Bluetooth dan memperlihatkan unit kepala anda kepada peranti lain selama <xliff:g id="TIMEOUT">%1$d</xliff:g> saat."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Kelihatan sebagai %1$s pada peranti lain"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Peranti saya"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Disambungkan sebelum ini"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s disambungkan"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s diputuskan sambungan"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Permintaan penggandingan Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Gandingkan &amp; sambung"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kod gandingan Bluetooth"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kod penggandingan Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN mengandungi huruf atau simbol"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Taip kod berpasangan kemudian tekan Return atau Enter"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Gandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Bunyi pemberitahuan lalai"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Bunyi penggera lalai"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Simpan"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Bunyi makluman"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Nada dering, pemberitahuan, penggera"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Kecerahan"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Laraskan skrin untuk cahaya malap"</string>
     <string name="units_settings" msgid="402325305096925886">"Unit"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Kelajuan"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Jarak"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Tunjukkan semua apl"</string>
     <string name="default_applications" msgid="1558183275638697087">"Apl lalai"</string>
     <string name="app_permissions" msgid="32799922508313948">"Kebenaran apl"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apl menggunakan <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kawal akses apl kepada data anda"</string>
     <string name="applications_settings" msgid="794261395191035632">"Maklumat apl"</string>
     <string name="force_stop" msgid="2153183697014720520">"Henti paksa"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Henti paksa?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Nyahpasang"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jika anda melumpuhkan apl ini, Android dan apl lain mungkin tidak berfungsi seperti yang sepatutnya."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Lumpuhkan apl"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Tidak dipasang untuk pengguna ini"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Tidak dipasang untuk profil ini"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Kebenaran"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Pemberitahuan"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storan &amp; cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Tiada kebenaran diberikan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Tiada kebenaran diminta"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Apl yang tidak digunakan"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apl yang tidak digunakan</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> apl tidak digunakan</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Alih keluar kebenaran dan kosongkan ruang"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s dalam storan dalaman"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Penggunaan data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Penggunaan data apl"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Tanya setiap kali"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Jangan buka dalam apl ini"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Pautan yang disokong"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apl"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Dibuka baru-baru ini"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Lihat semua apl %1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Pengurus kebenaran"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kawal akses apl kepada data anda"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Untuk Pembantu dan banyak lagi"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Untuk sistem dan tetapan lain"</string>
     <string name="special_access" msgid="5730278220917123811">"Akses apl khas"</string>
     <string name="show_system" msgid="4401355756969485287">"Tunjukkan sistem"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sembunyikan sistem"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sembunyikan apl sistem"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Ubah suai tetapan sistem"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Kebenaran ini membolehkan apl mengubah suai tetapan sistem."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Akses pemberitahuan"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tiada permintaan lokasi terbaharu"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Kebenaran tahap apl"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Perkhidmatan Lokasi"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Gunakan lokasi"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Kemas kini sistem"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Lanjutan"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Perihal, maklumat undang-undang, tetapan semula dan banyak lagi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Tahap tampung keselamatan Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model &amp; perkakasan"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Tindakan ini akan menetapkan semula semua pilihan untuk:\n\n"<li>"Apl dilumpuhkan"</li>\n<li>"Pemberitahuan apl dilumpuhkan"</li>\n<li>"Aplikasi lalai untuk tindakan"</li>\n<li>"Sekatan data latar belakang untuk apl"</li>\n<li>"Sebarang sekatan kebenaran"</li>\n\n"Anda tidak akan kehilangan sebarang data apl."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tetapkan semula apl"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Pilihan apl telah ditetapkan semula"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Padam semua data (tetapan semula kilang)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Tindakan ini akan memadamkan semua data daripada unit kepala kenderaan anda, termasuk:\n\n"<li>"Akaun Google anda"</li>\n<li>"Data dan tetapan sistem dan apl"</li>\n<li>"Apl yang dimuat turun"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Pada masa ini, anda telah dilog masuk ke akaun berikut:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Terdapat pengguna lain pada kenderaan ini."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Tetapkan semula kenderaan"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Tetapkan semula?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Padamkan semua maklumat peribadi anda dan aplikasi yang dimuat turun? Anda tidak boleh membuat asal tindakan ini!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Padamkan semua"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Memadam"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sila tunggu..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Padam semua data (tetapan semula kilang)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Padamkan semua data dan profil daripada sistem maklumat hibur"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Tindakan ini akan memadamkan semua data daripada sistem maklumat hibur kenderaan anda, termasuk:\n\n"<li>"Akaun Google anda"</li>\n<li>"Data dan tetapan sistem serta apl"</li>\n<li>"Apl yang dimuat turun"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Pada masa ini, anda telah dilog masuk ke akaun berikut:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Terdapat profil lain pada kenderaan ini."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Padamkan semua data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Padamkan semua data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Tindakan ini akan memadamkan semua data profil peribadi, akaun dan apl yang telah anda muat turun pada sistem maklumat hibur ini.\n\nAnda tidak boleh membuat asal tindakan ini."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Padamkan semua"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Memadam"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Sila tunggu..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarikh &amp; masa"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tetapkan tarikh, masa, zon waktu &amp; format"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Tarikh &amp; masa automatik"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Dilog masuk sebagai pentadbir"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Semua kebenaran pentadbir"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Jadikan Pentadbir"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Pengguna tersebut dapat memadamkan pengguna, termasuk Pentadbir lain, dan membuat tetapan semula kilang pada sistem."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil tersebut akan dapat memadamkan profil, termasuk Pentadbir lain dan membuat tetapan semula kilang pada sistem."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Tindakan ini tidak boleh diterbalikkan."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ya, jadikan pentadbir"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Buat pengguna baharu"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Buat profil baharu"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Buat panggilan telefon"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Pmsjn melalui data mdh alih kereta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Pasang apl baharu"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Nyahpasang apl"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambah pengguna"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baharu"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tambah pengguna baharu?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Apabila anda menambahkan pengguna baharu, orang itu perlu menyediakan ruang mereka."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Had pengguna dicapai"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Anda boleh membuat hingga <xliff:g id="COUNT">%d</xliff:g> pengguna.</item>
-      <item quantity="one">Hanya satu pengguna yang boleh dibuat.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Tambah profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Profil baharu"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Tambah profil baharu?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Apabila anda menambahkan profil baharu, orang itu perlu menyediakan ruang mereka."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Mana-mana profil boleh mengemas kini apl untuk semua profil lain."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Had profil dicapai"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Anda boleh membuat sehingga <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="one">Hanya satu profil boleh dibuat.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Gagal membuat pengguna baharu"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Padamkan pengguna ini?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Semua apl dan data akan dipadamkan."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Gagal memadamkan pengguna."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Gagal membuat profil baharu"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Padamkan profil ini?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Semua apl dan data untuk profil ini akan dipadamkan"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Gagal memadamkan profil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profil ini akan dipadamkan apabila anda menukar profil atau menghidupkan semula kenderaan."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ketepikan"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Cuba semula"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Padamkan pengguna terakhir?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Selepas memadamkan satu-satunya pengguna yang tinggal untuk kereta ini, pengguna pentadbir baharu akan dibuat."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Semua data, tetapan dan apl yang dikaitkan dengan pengguna ini akan dipadamkan. Anda perlu menyediakan sistem sekali lagi."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Padamkan profil terakhir yang tinggal?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Jika anda memadam satu-satunya profil yang tinggal untuk kenderaan ini, semua data, tetapan dan apl yang dikaitkan dengan profil ini akan dipadamkan."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Selepas penetapan semula, anda boleh menyediakan profil baharu."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Pilih pentadbir baharu"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Anda memerlukan sekurang-kurangnya satu pentadbir. Untuk memadamkan pentadbir ini, pilih pengganti dahulu."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Pilih pentadbir"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Anda (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Tidak disediakan"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit nama pengguna"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edit nama profil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Medan tidak boleh kosong."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Nama pengguna yang dimasukkan tidak sah."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Nama profil yang dimasukkan tidak sah."</string>
     <string name="users_list_title" msgid="770764290290240909">"Pengguna"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profil"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Kebenaran diberikan kpd %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storan"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzik &amp; audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Fail audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Mengira…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Saiz apl"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Data pengguna"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Data profil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Jumlah"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Kosongkan storan"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Batalkan penyegerakan"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Penyegerakan sedang mengalami masalah. Ciri ini akan kembali sebentar lagi."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privasi"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Data kenderaan"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kawal akses apl kepada lokasi anda"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kawal akses apl kepada mikrofon"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Data kenderaan"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Urus aktiviti dan maklumat yang disimpan pada kenderaan ini"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Padamkan profil anda"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Padamkan profil dan akaun anda daripada sistem maklumat hibur"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Tindakan ini tidak tersedia untuk profil anda"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Keselamatan"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kunci skrin"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Tiada"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Alih keluar kunci skrin?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Tindakan ini membolehkan sesiapa sahaja mengakses akaun anda"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Kunci profil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Sediakan pembukaan kunci automatik"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Masukkan PIN anda"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Masukkan kata laluan anda"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Untuk keselamatan, tetapkan PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Mesti kurang daripada <xliff:g id="NUMBER">%d</xliff:g> digit"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Mesti mengandungi angka 0-9 sahaja."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Pentadbir peranti tidak membenarkan penggunaan PIN terbaharu"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"PIN lazim disekat oleh pentadbir IT anda. Cuba PIN yang lain."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"PIN lazim disekat oleh pentadbir IT anda. Cuba PIN yang lain."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Tidak boleh menyertakan aksara yang tidak sah."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Kata laluan tidak sah, mesti sekurang-kurangnya 4 aksara."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Pentadbir peranti tidak membenarkan penggunaan kata laluan terbaharu"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Ralat semasa menyimpan kata laluan"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Kata laluan lazim disekat oleh pentadbir IT anda. Cuba kata laluan yang lain."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Kata laluan lazim disekat oleh pentadbir IT anda. Cuba kata laluan yang lain."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Angka menaik, menurun atau jujukan berulang tidak dibenarkan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pilihan kunci skrin"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari lalu"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Kekunci enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Keluar drpd Tunjuk Cara"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Keluar drpd mod tunjuk cara"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tindakan ini akan memadamkan akaun tunjuk cara dan membuat tetapan semula data kilang pada sistem. Semua data pengguna akan hilang."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Tindakan ini akan memadamkan akaun tunjuk cara dan membuat tetapan semula data kilang pada sistem. Semua data profil akan hilang."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Keluar drpd Tunjuk Cara"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"KETEPIKAN"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Ciri tidak tersedia semasa anda memandu"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Tidak dapat menambah pengguna semasa memandu"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Tidak dapat menambah profil semasa memandu"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Cari"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Pembantu &amp; suara"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Apl pembantu"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Gunakan teks daripada skrin"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Benarkan pembantu untuk mengakses kandungan skrin"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Gunakan tangkapan skrin"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Benarkan pembantu untuk mengakses imej skrin"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Terbaharu dihantar"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Semua apl"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profil &amp; akaun"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Urus profil lain"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Tambah profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Padamkan profil ini"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Tambah profil"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index c090187..bde1f63 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"မျက်နှာပြင်ပြသမှု"</string>
     <string name="brightness" msgid="2919605130898772866">"တောက်ပမှု"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"အလိုက်သင့် တောက်ပမှု"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"လက်ရှိအလင်းရောင်ပေါ် အခြေခံ၍ တောက်ပမှုကို ချိန်ညှိရန်"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ဖန်သားပြင်တောက်ပမှုကို ပတ်ဝန်းကျင်နှင့် ချိန်ညှိနိုင်သည်"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"\'ညအလင်းရောင်\' ကို ဖွင့်ထားသည်"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"မျက်နှာပြင်၊ ထိတွေ့မှုမျက်နှာပြင်"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"မျက်နှာပြင် မှိန်ရန်၊ ထိတွေ့မှုမျက်နှာပြင်၊ ဘက်ထရီ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"မျက်နှာပြင် မှိန်ရန်၊ ထိတွေ့မှုမျက်နှာပြင်၊ ဘက်ထရီ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"မျက်နှာပြင်ကို မှိန်ရန်၊ ည၊ အရောင်သန်းခြင်း"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ညသုံးမုဒ်"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ကွန်ရက်နှင့် အင်တာနက်"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"မိုဘိုင်းကွန်ရက်"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ဒေတာသုံးစွဲမှု သတိပေးချက် သတ်မှတ်ခြင်း"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ဒေတာသုံးစွဲမှု ကန့်သတ်ချက် သတ်မှတ်ခြင်း"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"သတ်မှတ်ရန်"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ကွန်ရက်"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s တွင် %1$d MB သုံးထားသည်"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"အခြားကွန်ရက်သို့ ချိတ်ဆက်ရန်"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ကွန်ရက် သတ်မှတ်ချက်များ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ကို ဖွင့်နေသည်…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi ကို ပိတ်နေသည်…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ကွန်ရက်သို့ ချိတ်ဆက်၍ မရပါ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ကွန်ရက်ထည့်ရန်"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ချိတ်ရန်"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ချိတ်ဆက်နေသည်…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ကွန်ရက်သည် ရနိုင်သောအကွာအဝေးတွင် မရှိပါ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"စကားဝှက်"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"စကားဝှက်ကို ပြရန်"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ကွန်ရက်အမည် ထည့်ပါ"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"အက်ပ်တစ်ခုသည် အခြား ဘလူးတုသ်စက်ပစ္စည်းများကို သင့်စက်အထိုင်ဘောက်စ်အား <xliff:g id="TIMEOUT">%1$d</xliff:g> စက္ကန့်ကြာမျှ မြင်တွေ့စေလိုသည်။"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> က ဘလူးတုသ်ဖွင့်၍ အခြားစက်ပစ္စည်းများကို သင့်စက်အထိုင်ဘောက်စ်အား <xliff:g id="TIMEOUT">%2$d</xliff:g> စက္ကန့်ကြာမျှ မြင်တွေ့စေလိုသည်။"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"အက်ပ်တစ်ခုက ဘလူးတုသ် ဖွင့်၍ အခြားစက်ပစ္စည်းများကို သင့်စက်အထိုက်ဘောက်စ်အား <xliff:g id="TIMEOUT">%1$d</xliff:g> စက္ကန့်ကြာမျှ မြင်တွေ့စေလိုသည်။"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"အခြားကိရိယာများက %1$s အဖြစ် မြင်ရသည်"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ကျွန်ုပ်၏ ကိရိယာများ"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ယခင်က ချိတ်ဆက်ထားသည်များ"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ကို ချိတ်ဆက်ထားသည်"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ကို ချိတ်ဆက်မထားပါ"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ဘလူးတုသ်တွဲချိတ်ရန် တောင်းဆိုချက်"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"တွဲချိတ်ရန်နှင့် ချိတ်ဆက်ရန်"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ဘလူးတုသ် တွဲချိတ်ခြင်းကုဒ်"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"အကြောင်းကြားချက် မူရင်းအသံ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"မူရင်းနှိုးစက်သံ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"သိမ်းရန်"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"သတိပေးချက် အသံများ"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ဖုန်းမြည်သံ၊ အကြောင်းကြားချက်များ၊ နှိုးစက်"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"တောက်ပမှု"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"အလင်းရောင်နည်းချိန်အတွက် ဖန်သားပြင်ကို ချိန်ညှိနိုင်သည်"</string>
     <string name="units_settings" msgid="402325305096925886">"ယူနစ်များ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"မြန်နှုန်း"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"အကွာအဝေး"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"အက်ပ်အားလုံး ပြရန်"</string>
     <string name="default_applications" msgid="1558183275638697087">"မူရင်း အက်ပ်များ"</string>
     <string name="app_permissions" msgid="32799922508313948">"အက်ပ်ခွင့်ပြုချက်များ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ကို အသုံးပြုနေသော အက်ပ်များ"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"အက်ပ်၏ သင့်ဒေတာအသုံးပြုခွင့်ကို ထိန်းချုပ်မည်"</string>
     <string name="applications_settings" msgid="794261395191035632">"အက်ပ်အချက်အလက်များ"</string>
     <string name="force_stop" msgid="2153183697014720520">"ချက်ချင်း ရပ်ရန်"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"မဖြစ်မနေ ရပ်ခိုင်းမလား။"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"ဖြုတ်ရန်"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ဤအက်ပ်ကို ပိတ်လိုက်လျှင် Android နှင့် အခြားအက်ပ်များ ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"အက်ပ်ကို ပိတ်ရန်"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ဤအသုံးပြုသူအတွက် ထည့်သွင်းမထားပါ"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ဤပရိုဖိုင်အတွက် ထည့်သွင်းမထားပါ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ခွင့်ပြုချက်များ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"အကြောင်းကြားချက်များ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"သိုလှောင်ခန်းနှင့် ကက်ရှ်"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ဗားရှင်း− %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ခွင့်ပြုထားသည့် အရာများ မရှိပါ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"တောင်းဆိုထားသော ခွင့်ပြုချက်များ မရှိပါ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"အသုံးမပြုသော အက်ပ်များ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">အသုံးမပြုသောအက်ပ် <xliff:g id="COUNT_1">%d</xliff:g> ခု</item>
+      <item quantity="one">အသုံးမပြုသောအက်ပ် <xliff:g id="COUNT_0">%d</xliff:g> ခု</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ခွင့်ပြုချက်ဖယ်ရှားပြီး နေရာလွတ်လုပ်ရန်"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"စက်အတွင်းသိမ်းဆည်းရန်နေရာတွင် %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ဒေတာသုံးစွဲမှု"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"အက်ပ်ဒေတာ သုံးစွဲမှု"</string>
@@ -332,14 +349,22 @@
     <string name="auto_launch_reset_text" msgid="590439611312092392">"မူရင်းများ ရှင်းလင်းရန်"</string>
     <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"ပံ့ပိုးထားသော လင့်များကို ဖွင့်မည်"</string>
     <string name="app_link_open_always" msgid="5783167184335545230">"ဤအက်ပ်တွင် ဖွင့်မည်"</string>
-    <string name="app_link_open_ask" msgid="7242075065136237456">"အမြဲမေးရန်"</string>
+    <string name="app_link_open_ask" msgid="7242075065136237456">"အမြဲမေးပါ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ဤအက်ပ်တွင် မဖွင့်ပါနှင့်"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ပံ့ပိုးထားသော လင့်ခ်များ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"အက်ပ်များ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"လတ်တလော ဖွင့်ထားသည်များ"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"အက်ပ် %1$d ခုလုံး ကြည့်ရန်"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"ခွင့်ပြုချက် မန်နေဂျာ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"အက်ပ်၏ သင့်ဒေတာအသုံးပြုခွင့်ကို ထိန်းချုပ်မည်"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant နှင့် အခြားအရာများအတွက်"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"စနစ်နှင့် အခြားဆက်တင်များသို့"</string>
     <string name="special_access" msgid="5730278220917123811">"အထူးအက်ပ်များ သုံးခွင့်ရှိသည်"</string>
     <string name="show_system" msgid="4401355756969485287">"စနစ်ကိုပြသရန်"</string>
     <string name="hide_system" msgid="8845453295584638040">"စနစ်ကို ဖျောက်ရန်"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"စနစ်အက်ပ်များ ဖျောက်ထားရန်"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"စနစ်ဆက်တင်များ ပြန်ပြင်ခြင်း"</string>
-    <string name="modify_system_settings_description" msgid="5295023124419592452">"ဤခွင့်ပြုချက်က အက်ပ်ကို စနစ်ဆက်တင်များ ပြင်ခွင့်ပေးသည်။"</string>
+    <string name="modify_system_settings_description" msgid="5295023124419592452">"ဤခွင့်ပြုချက်သည် အက်ပ်တစ်ခုကို စက်စနစ်ဆက်တင်များအား ပြန်ပြင်ခွင့်ပေးသည်။"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"အကြောင်းကြားချက် ရယူခြင်း"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"<xliff:g id="SERVICE">%1$s</xliff:g> အတွက် အကြောင်းကြားချက်ကို အသုံးပြုခွင့်ပေးမလား။"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> သည် အဆက်အသွယ် အမည်များနှင့် သင်လက်ခံရရှိသည့် မက်ဆေ့ဂျ်များကဲ့သို့ ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ အပါအဝင် အကြောင်းကြားချက်များ အားလုံးကို ဖတ်နိုင်ပါလိမ့်မည်။ ၎င်းသည် အကြောင်းကြားချက်များကို ပယ်ခြင်း (သို့) ထိုအကြောင်းကြားချက်တွင် ပါဝင်သည့် လုပ်ဆောင်ချက်ခလုတ်များနှိပ်ခြင်းတို့ကို ပြုလုပ်နိုင်ပါသည်။ \n\n၎င်းသည် အက်ပ်ကို \'မနှောင့်ယှက်ရ\' အား အဖွင့်အပိတ် လုပ်စေနိုင်ပြီး အခြားဆက်စပ်ဆက်တင်များကိုလည်း ပြောင်းလဲနိုင်စွမ်းရှိစေပါသည်။"</string>
@@ -358,8 +383,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"လတ်တလော တည်နေရာတောင်းဆိုချက်များ မရှိပါ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"အက်ပ်အဆင့် ခွင့်ပြုချက်များ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"တည်နေရာဝန်ဆောင်မှုများ"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"တည်နေရာကို သုံးရန်"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"စနစ်"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"စနစ်အပ်ဒိတ်များ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"အဆင့်မြင့်"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"အကြောင်း၊ ဥပဒေဆိုင်ရာ အချက်အလက်၊ ပြင်ဆင်သတ်မှတ်ရန် စသည်"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ဗားရှင်း"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android လုံခြုံရေးပက်ချ်အဆင့်"</string>
     <string name="hardware_info" msgid="3973165746261507658">"မော်ဒယ်နှင့် စက်ပစ္စည်းဆိုင်ရာ"</string>
@@ -421,16 +451,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"၎င်းက အောက်ပါတို့အားလုံးကို ပြင်ဆင်သတ်မှတ်ပါမည်-\n\n"<li>" အက်ပ်များ ပိတ်ခြင်း"</li>\n<li>" အက်ပ်အကြောင်းကြားချက်များ ပိတ်ခြင်း"</li>\n<li>" လုပ်ဆောင်ချက်အတွက် မူရင်းအက်ပ် သတ်မှတ်ခြင်း"</li>\n<li>" အက်ပ်များအတွက် နောက်ခံဒေတာအသုံးပြုမှု ကန့်သတ်ခြင်း"</li>\n<li>" ခွင့်ပြုမှု ကန့်သတ်ချက်အားလုံး"</li>\n\n"သင်၏အက်ပ်ဒေတာများကို ဆုံးရှုံးမည်မဟုတ်ပါ။"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"အက်ပ်များ ပြင်ဆင်သတ်မှတ်ရန်"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"အက်ပ်သတ်မှတ်ချက်များ ပြင်ဆင်သတ်မှတ်ပြီးပါပြီ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ဒေတာအားလုံး ဖျက်ပါ (စက်ရုံထုတ်သတ်မှတ်ပါ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ဤသို့ပြုလုပ်ခြင်းကြောင့် သင့်စက်ပစ္စည်း၏ ဦးခန်းပိုင်းယူနစ်အတွင်းရှိ- \n\n"<li>"သင့် Google အကောင့်"</li>\n<li>"\'စနစ်\' နှင့် အက်ပ်ဒေတာများနှင့် ဆက်တင်များ"</li>\n<li>"ဒေါင်းလုဒ်လုပ်ထားသော အက်ပ်များ"</li>" အပါအဝင် ဒေတာအားလုံးကို ဖျက်ပါမည်။"</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"သင်သည် လက်ရှိတွင် အောက်ပါအကောင့်များကို ဝင်ရောက်ထားပါသည်-"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ဤစက်ပစ္စည်းပေါ်တွင် အခြားအသုံးပြုသူများလည်း ရှိသည်။"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"စက်ပစ္စည်း ပြင်ဆင်သတ်မှတ်ရန်"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ပြင်ဆင်သတ်မှတ်လိုပါသလား။"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"သင့်ပုဂ္ဂိုလ်ရေးအချက်အလက်များနှင့် ဒေါင်းလုဒ်လုပ်ထားသောအက်ပ်များကို ဖျက်မလား။ ဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍မရပါ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"အားလုံးကိုဖျက်ရန်"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"ဖျက်နေသည်"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"ခဏစောင့်ပါ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ဒေတာအားလုံးဖျက်ခြင်း (စက်ရုံထုတ်ဆက်တင် သတ်မှတ်ရန်)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"သတင်းနှင့်ဖျော်ဖြေရေး စနစ်မှ ဒေတာနှင့် ပရိုဖိုင်အားလုံးကို ဖျက်မည်"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"၎င်းသည် သင့်ယာဉ်၏ သတင်းနှင့်ဖျော်ဖြေရေး စနစ်မှ အောက်ပါတို့အပါအဝင် ဒေတာအားလုံးကို ဖျက်လိုက်ပါမည်-\n\n"<li>"သင်၏ Google Account"</li>\n<li>"စနစ်နှင့် အက်ပ်ဒေတာများ၊ ဆက်တင်များ"</li>\n<li>"ဒေါင်းလုဒ်လုပ်ထားသော အက်ပ်များ"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"သင်သည် လက်ရှိတွင် အောက်ပါအကောင့်များသို့ လက်မှတ်ထိုးဝင်ထားသည် -"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ဤယာဉ်ပေါ်တွင် အခြားပရိုဖိုင်များ ရှိသည်။"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ဒေတာအားလုံး ဖျက်ရန်"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ဒေတာအားလုံးကို ဖျက်မလား။"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"၎င်းသည် ဤသတင်းနှင့်ဖျော်ဖြေရေး စနစ်ရှိ သင်၏ ကိုယ်ပိုင်ပရိုဖိုင်ဒေတာ၊ အကောင့်များနှင့် ဒေါင်းလုဒ်လုပ်ထားသော အက်ပ်များ အားလုံးကို ဖျက်လိုက်ပါမည်။\n\nဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍ မရပါ။"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"အားလုံးကိုဖျက်ရန်"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"ဖျက်နေသည်"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"ခဏစောင့်ပါ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ရက်စွဲနှင့် အချိန်"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ရက်စွဲ၊ အချိန်၊ စံတော်ချိန်နှင့် စနစ်များကို သတ်မှတ်ပါ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ရက်စွဲနှင့် အချိန် အလိုအလျောက်"</string>
@@ -453,33 +484,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"စီမံခန့်ခွဲသူအဖြစ် ဝင်ထားသည်"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"စီမံခန့်ခွဲသူ ခွင့်ပြုချက်အားလုံး"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"စီမံခန့်ခွဲသူ အဖြစ်ပြောင်းရန်"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"အသုံးပြုသူသည် အခြား \'စီမံခန့်ခွဲသူများ\' အပါအဝင် အသုံးပြုသူများကို ဖျက်ခြင်းနှင့် စနစ်ကို ပြင်ဆင်သတ်မှတ်ခြင်း ပြုလုပ်နိုင်ပါမည်။"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"ပရိုဖိုင်သည် အခြား ‘စီမံခန့်ခွဲသူများ’ အပါအဝင် ပရိုဖိုင်များကိုဖျက်နိုင်ပြီး စနစ်ကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်နိုင်ပါမည်။"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ဤလုပ်ရပ်ကို ပြန်ပြင်၍မရပါ။"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"စီမံခန့်ခွဲသူအဖြစ် ပြောင်းရန်"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"အသုံးပြုသူအသစ်များ ပြုလုပ်ရန်"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ပရိုဖိုင်အသစ်များ ပြုလုပ်ခြင်း"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ရန်"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ကား၏ မိုဘိုင်းဒေတာဖြင့် စာပို့ရန်"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"အက်ပ်အသစ်များ ထည့်သွင်းရန်"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"အက်ပ်များ ဖယ်ရှားရန်"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"အသုံးပြုသူ ထည့်ရန်"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"အသုံးပြုသူ အသစ်"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"အသုံးပြုသူအသစ် ထည့်မလား။"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"အသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ နေရာကို စနစ်ထည့်သွင်းရပါမည်။"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"မည်သူမဆို အသုံးပြုသူအားလုံးအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"အသုံးပြုသူ အကန့်အသတ် ပြည့်သွားပါပြီ"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">အသုံးပြုသူ <xliff:g id="COUNT">%d</xliff:g> ဦးအထိ သင်ဖန်တီးနိုင်သည်။</item>
-      <item quantity="one">အသုံးပြုသူ တစ်ဦးသာ ထည့်နိုင်သည်။</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"ပရိုဖိုင် ထည့်ရန်"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ပရိုဖိုင်အသစ်"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"ပရိုဖိုင်အသစ် ထည့်မလား။"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ပရိုဖိုင်အသစ် ထည့်သောအခါ ထိုသူသည် ၎င်း၏နေရာကို စနစ်ထည့်သွင်းရပါမည်။"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"မည်သည့်ပရိုဖိုင်မဆိုသည် အခြားပရိုဖိုင်အားလုံးအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"ပရိုဖိုင်ကန့်သတ်ချက် ပြည့်သွားပါပြီ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">ပရိုဖိုင် <xliff:g id="COUNT">%d</xliff:g> ခုအထိ ပြုလုပ်နိုင်သည်။</item>
+      <item quantity="one">ပရိုဖိုင်တစ်ခုသာ ပြုလုပ်နိုင်သည်။</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ဤအသုံးပြုသူကို ဖျက်မလား။"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"အက်ပ်အားလုံးနှင့် ဒေတာကို ဖျက်ပါမည်။"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"အသုံးပြုသူကို ဖျက်၍မရပါ။"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ပရိုဖိုင်အသစ် ပြုလုပ်၍မရပါ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ဤပရိုဖိုင်ကို ဖျက်မလား။"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ဤပရိုဖိုင်အတွက် အက်ပ်နှင့် ဒေတာအားလုံးကို ဖျက်လိုက်ပါမည်"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ပရိုဖိုင်ကို ဖျက်၍မရပါ။"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ပရိုဖိုင်များပြောင်းသောအခါ (သို့) ယာဉ်ကိုပြန်စတင်သောအခါ ဤပရိုဖိုင်ကို ဖျက်လိုက်ပါမည်။"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ပယ်ရန်"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ထပ်စမ်းကြည့်ရန်"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"နောက်ဆုံးတစ်ဦး ဖျက်မလား။"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ဤကားအတွက် တစ်ဦးတည်းကျန်ရှိသော အသုံးပြုသူကို ဖျက်ပြီးလျှင် စီမံခန့်ခွဲသည့် အသုံးပြုသူအသစ် ပြုလုပ်ပါမည်။"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ဤအသုံးပြုသူနှင့် ဆက်စပ်နေသော ဒေတာ၊ ဆက်တင်နှင့် အက်ပ်အားလုံးကို ဖျက်ပါမည်။ သင် စနစ်ပြန်လည်ထည့်သွင်းရန် လိုအပ်ပါမည်။"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"နောက်ဆုံးကျန်သော ပရိုဖိုင်ကို ဖျက်မလား။"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ဤယာဉ်အတွက် တစ်ခုတည်းကျန်သော ပရိုဖိုင်ကို ဖျက်လိုက်ပါက ဤပရိုဖိုင်နှင့် ဆက်စပ်နေသော ဒေတာ၊ ဆက်တင်နှင့် အက်ပ်အားလုံးကို ဖျက်လိုက်ပါမည်။"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ပြင်ဆင်သတ်မှတ်ပြီးနောက် ပရိုဖိုင်အသစ် ထည့်သွင်းနိုင်သည်။"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"စီမံခန့်ခွဲသူအသစ် ရွေးခြင်း"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"အနည်းဆုံး စီမံခန့်ခွဲသူတစ်ဦး လိုအပ်ပါသည်။ လူစား ဦးစွာရွေးချယ်ပြီးမှ ဤတစ်ဦးကိုဖျက်ပါ။"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"စီမံခန့်ခွဲသူ ရွေးရန်"</string>
@@ -489,10 +521,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"သင် (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"အမည်"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"စနစ်ထည့်သွင်းထားခြင်း မရှိပါ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"အသုံးပြုသူအမည် တည်းဖြတ်ခြင်း"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ပရိုဖိုင်အမည် ပြောင်းခြင်း"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"အကွက်ကို ကွက်လပ်ထား၍ မရပါ။"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ထည့်ထားသော အသုံးပြုသူအမည် မမှန်ကန်ပါ။"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ထည့်ထားသောပရိုဖိုင် အမည် မမှန်ကန်ပါ။"</string>
     <string name="users_list_title" msgid="770764290290240909">"အသုံးပြုသူများ"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"ပရိုဖိုင်များ"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ကိုပေးထားသော ခွင့်ပြုချက်"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"သိုလှောင်ခန်း"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"တေးဂီတနှင့် အသံ"</string>
@@ -503,7 +536,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"အသံဖိုင်များ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"တွက်ချက်နေသည်…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"အက်ပ်အရွယ်အစား"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"အသုံးပြုသူ၏ ဒေတာ"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ပရိုဖိုင်ဒေတာ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ကက်ရှ်"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"စုစုပေါင်း"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"သိုလှောင်ခန်း ရှင်းလင်းရန်"</string>
@@ -545,8 +578,17 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"စင့်ခ် ပယ်ဖျက်ရန်"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"စင့်ခ်လုပ်ရန် လက်ရှိတွင် ပြဿနာရှိနေပါသည်။ ခဏကြာလျှင် ပြန်လည်ရရှိပါမည်။"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ကန့်သတ်ဆက်တင်"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ယာဉ်၏ဒေတာ"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"အက်ပ်၏ သင့်တည်နေရာသုံးခွင့်ကို ထိန်းချုပ်မည်"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"မိုက်ခရိုဖုန်း"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"အက်ပ်၏ မိုက်ခရိုဖုန်း အသုံးပြုခွင့်ကို ထိန်းချုပ်မည်"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ယာဉ်၏ဒေတာ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ဤယာဉ်တွင်သိမ်းထားသော လုပ်ဆောင်ချက်နှင့် အချက်အလက်များ စီမံရန်"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"သင့်ပရိုဖိုင်ကို ဖျက်ရန်"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"သတင်းနှင့်ဖျော်ဖြေရေး စနစ်မှ သင့်ပရိုဖိုင်နှင့် အကောင့်များကို ဖျက်မည်"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ဤလုပ်ဆောင်ချက်ကို သင့်ပရိုဖိုင်အတွက် မရနိုင်ပါ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"လုံခြုံရေး"</string>
-    <string name="security_settings_subtitle" msgid="2244635550239273229">"ဖန်သားပြင်လော့ခ်"</string>
+    <string name="security_settings_subtitle" msgid="2244635550239273229">"မျက်နှာပြင်လော့ခ်"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"မရှိ"</string>
     <string name="security_lock_pattern" msgid="1174352995619563104">"ပုံစံ"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"ပင်နံပါတ်"</string>
@@ -563,7 +605,7 @@
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"သင့် PIN နံပါတ် ရွေးချယ်ခြင်း"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"သင့်လော့ခ်ဖွင့်ပုံစံ ရွေးပါ"</string>
     <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"သင့်စကားဝှက်ကိုရွေးချယ်ပါ"</string>
-    <string name="current_screen_lock" msgid="637651611145979587">"လက်ရှိဖန်သားပြင်လော့ခ်"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"လက်ရှိ မျက်နှာပြင်လော့ခ်"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"လုံခြုံရေးအတွက် ပုံစံတစ်ခု သတ်မှတ်ပါ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ရှင်းရန်"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"မလုပ်တော့"</string>
@@ -580,6 +622,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"မျက်နှာပြင်လော့ခ် ဖယ်လိုသလား။"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"၎င်းက မည်သူ့ကိုမဆို သင့်အကောင့်ထဲ ဝင်ခွင့်ပေးမည်"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ပရိုဖိုင် လော့ခ်ချခြင်း"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"အလိုအလျောက် ဖွင့်ခြင်းကို စနစ်ထည့်သွင်းမည်"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"သင့်ပင်နံပါတ် ထည့်ပါ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"သင့်စကားဝှက် ထည့်ပါ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"လုံခြုံရေးအတွက် ပင်နံပါတ်တစ်ခု သတ်မှတ်ပါ"</string>
@@ -603,7 +647,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ဂဏန်း <xliff:g id="NUMBER">%d</xliff:g> လုံးထက် နည်းရပါမည်"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ဂဏန်း ၀−၉ အထိသာ ပါဝင်ရပါမည်။"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"စက်ပစ္စည်း၏ စီမံခန့်ခွဲသူသည် မကြာသေးမီက အသုံးပြုခဲ့သည့် ပင်နံပါတ်ကို သုံးခွင့်မပြုပါ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"အသုံးပြုလေ့ရှိသော ပင်နံပါတ်များကို သင်၏ IT စီမံခန့်ခွဲသူက ပိတ်ထားသည်။ အခြား ပင်နံပါတ်တစ်ခုဖြင့် စမ်းကြည့်ပါ။"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"အသုံးပြုလေ့ရှိသော ပင်နံပါတ်များကို သင်၏ IT စီမံခန့်ခွဲသူက ပိတ်ထားသည်။ အခြား ပင်နံပါတ်တစ်ခုဖြင့် စမ်းကြည့်ပါ။"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"၎င်းတွင် မမှန်ကန်သည့် အက္ခရာများ ပါဝင်၍မရပါ။"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"စကားဝှက် မမှန်ပါ၊ အနည်းဆုံး အက္ခရာ ၄ လုံး ရှိရမည်။"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -632,7 +676,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"စက်ပစ္စည်းစီမံခန့်ခွဲသူသည် မကြာသေးမီက အသုံးပြုခဲ့သည့် စကားဝှက်ကို သုံးခွင့်မပြုပါ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"စကားဝှက်ကို သိမ်းရာတွင် အမှားရှိနေသည်"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"အသုံးပြုလေ့ရှိသော စကားဝှက်များကို သင်၏ IT စီမံခန့်ခွဲသူက ပိတ်ထားသည်။ အခြား စကားဝှက်တစ်ခုဖြင့် စမ်းကြည့်ပါ။"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"အသုံးပြုလေ့ရှိသော စကားဝှက်များကို သင်၏ IT စီမံခန့်ခွဲသူက ပိတ်ထားသည်။ အခြား စကားဝှက်တစ်ခုဖြင့် စမ်းကြည့်ပါ။"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"အစဉ်လိုက်ဖြစ်နေသော ဂဏန်း အငယ်မှအကြီး၊ အကြီးမှအငယ် သို့မဟုတ် ထပ်နေသည့် နံပါတ်စဉ်များကို ခွင့်မပြုပါ။"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"မျက်နှာပြင်လော့ခ်ချခြင်း ရွေးချယ်စရာများ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> - လွန်ခဲ့သော <xliff:g id="NUM_DAYS">%3$s</xliff:g> ရက်"</string>
@@ -653,10 +697,23 @@
     <string name="enter_key" msgid="2121394305541579468">"အတည်ပြု ခလုတ်"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"သရုပ်ပြမှ ထွက်ရန်"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"သရုပ်ပြမုဒ်မှ ထွက်ရန်"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"၎င်းက သရုပ်ပြအကောင့်ကို ဖျက်ပြီး စနစ်ကို စက်ရုံထုတ်အခြေအနေပြန်ယူပါမည်။ အသုံးပြုသူ ဒေတာအားလုံး ရှိတော့မည်မဟုတ်ပါ။"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"၎င်းသည် သရုပ်ပြအကောင့်ကို ဖျက်ပြီး စနစ်ကို စက်ရုံထုတ်အခြေအနေပြန်ယူပါမည်။ ပရိုဖိုင်ဒေတာအားလုံး ရှိတော့မည်မဟုတ်ပါ။"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"သရုပ်ပြမှ ထွက်ရန်"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ပယ်ရန်"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ကားမောင်းနေစဉ် ဝန်ဆောင်မှု မရနိုင်ပါ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ကားမောင်းနေစဉ် အသုံးပြုသူကို ထည့်၍မရပါ"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"ကားမောင်းနေစဉ် ပရိုဖိုင်ကို ထည့်၍မရပါ"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ရှာရန်"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant နှင့် Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant အက်ပ်"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ဖန်သားပြင်မှ စာသားကိုသုံးရန်"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ဖန်သားပြင်အကြောင်းအရာများ သုံးရန် assistant ကို ခွင့်ပြုပါ"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ဖန်သားပြင်ဓာတ်ပုံ သုံးရန်"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ဖန်သားပြင်ပုံ သုံးရန် assistant ကို ခွင့်ပြုပါ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"လတ်တလော ပို့ထားသည်များ"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"အက်ပ်အားလုံး"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"ပရိုဖိုင်များနှင့် အကောင့်များ"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"အခြားပရိုဖိုင်များ စီမံရန်"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ပရိုဖိုင် ထည့်ရန်"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ဤပရိုဖိုင်ကို ဖျက်ရန်"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"ပရိုဖိုင် ထည့်ရန်"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index c3fb172..2c0f314 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Skjerm"</string>
     <string name="brightness" msgid="2919605130898772866">"Lysstyrkenivå"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Tilpasset lysstyrke"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimaliser lysstyrkenivået etter omgivelsene"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Juster lysstyrken på skjermen basert på omgivelsene"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nattlys er på"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skjerm, berøringsskjerm"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim skjermen, berøringsskjerm, batteri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim skjermen, berøringsskjerm, batteri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim skjermen, natt, fargetone"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattmodus"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Nettverk og internett"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnettverk"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Angi advarsel for databruk"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Angi grense for databruk"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Angi"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-nettverk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB er brukt (%2$s – %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Koble til et annet nettverk"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Nettverksinnstillinger"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Slår på Wi-Fi …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Slår av Wi-Fi …"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kunne ikke koble til nettverket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Legg til nettverk"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Koble til"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Kobler til …"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Nettverket er ikke innen rekkevidde"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Passord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Vis passordet"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Skriv inn et nettverksnavn"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"En app ønsker å gjøre hovedenheten din synlig for andre Bluetooth-enheter i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ønsker å slå på Bluetooth og gjøre hovedenheten din synlig for andre enheter i <xliff:g id="TIMEOUT">%2$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"En app ønsker å slå på Bluetooth og gjøre hovedenheten din synlig for andre enheter i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Synlig som %1$s for andre enheter"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mine enheter"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Tidligere tilkoblet"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s er koblet til"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s er frakoblet"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Forespørsel om Bluetooth-tilkobling"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koble sammen og koble til"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-tilkoblingskode"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standard varsellyd"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standard alarmlyd"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Lagre"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Varsellyder"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringelyd, varsler, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Lysstyrke"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Juster lysstyrken for lite lys i omgivelsene"</string>
     <string name="units_settings" msgid="402325305096925886">"Enheter"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hastighet"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Avstand"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Vis alle apper"</string>
     <string name="default_applications" msgid="1558183275638697087">"Standardapper"</string>
     <string name="app_permissions" msgid="32799922508313948">"Apptillatelser"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apper som bruker <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrollér apptilgang til dataene dine"</string>
     <string name="applications_settings" msgid="794261395191035632">"App-info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Tving avslutning"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vil du tvinge avslutning?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Avinstaller"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Hvis du slår av denne appen, slutter muligens Android og andre apper å fungere som de skal."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiver appen"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ikke installert for brukeren"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ikke installert for denne profilen"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Tillatelser"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Varsler"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Lagring og buffer"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versjon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ingen tillatelser er gitt"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ingen tillatelser er forespurt"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ubrukte apper"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ubrukte apper</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ubrukt app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Fjern tillatelser og frigjør plass"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s i internminne"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Databruk"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Appens databruk"</string>
@@ -308,16 +325,16 @@
     <string name="direct_boot_unaware_dialog_message_car" msgid="2857599310518724080">"Merk: Etter en ny oppstart kan ikke denne appen starte før du låser opp kjøretøyet ditt."</string>
     <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistent og taleinndata"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"Assistentapp"</string>
-    <string name="assist_access_context_title" msgid="8034851731390785301">"Bruk tekst fra skjermen"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Bruk teksten fra skjermen"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"Gi assistentappen tilgang til skjerminnholdet som tekst"</string>
-    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Bruk skjermdump"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Bruk skjermdumpen"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Gi assistentappen tilgang til et bilde av skjermen"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Taleinndata"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Autofylltjeneste"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Ingen"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Valgt"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"Assistenten kan lese informasjon om appene du bruker i systemet ditt, inkludert informasjon som er synlig på skjermen eller tilgjengelig i appene."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sørg for at appen er pålitelig&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="autofill_add_service" msgid="6413893366443609951">"Legg til tjeneste"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Åpning av linker"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Installerte apper"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Spør hver gang"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ikke åpne med denne appen"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Støttede linker"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apper"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nylig åpnet"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Se alle %1$d apper"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Behandle tillatelser"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrollér apptilgang til dataene dine"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"For assistenten med mer"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Til system og andre innstillinger"</string>
     <string name="special_access" msgid="5730278220917123811">"Spesiell apptilgang"</string>
     <string name="show_system" msgid="4401355756969485287">"Vis systemet"</string>
     <string name="hide_system" msgid="8845453295584638040">"Skjul systemet"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Skjul systemapper"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Endre systeminnstillingene"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Med denne tillatelsen kan apper endre systeminnstillingene."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Tilgang til varsler"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ingen nylige posisjonsforespørsler"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tillatelser på appnivå"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Posisjonstjenester"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Bruk posisjon"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Systemoppdateringer"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avansert"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Om, juridisk informasjon, tilbakestilling med mer"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versjon"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivå av Android-sikkerhetsoppdatering"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modell og maskinvare"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Dette tilbakestiller alle innstillinger for\n\n"<li>"deaktiverte apper"</li>\n<li>"deaktiverte appvarsler"</li>\n<li>"standardapper for handlinger"</li>\n<li>"begrensninger for bakgrunnsdata for apper"</li>\n<li>"eventuelle tillatelsesbegrensninger"</li>\n\n"Du kommer ikke til å miste appdata."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tilbakestill apper"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Appinnstillingene er tilbakestilt"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Slett alle data (tilbakestill)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Dette sletter alle dataene fra kjøretøyets hovedenhet, inkludert\n\n"<li>"Google-kontoen din"</li>\n<li>"system- og appdata samt innstillinger"</li>\n<li>"nedlastede apper"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Du er logget på disse kontoene nå:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Andre brukere er til stede i dette kjøretøyet."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Tilbakestill kjøretøyet"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vil du tilbakestille?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vil du slette den personlige informasjonen din og nedlastede apper? Du kan ikke angre denne handlingen."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Slett alt"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Tømmer"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vent litt."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Tøm alle data (tilbake til fabrikkstd.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Slett alle dataene og profilene fra dette infotainment-systemet"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Dette sletter alle dataene fra kjøretøyets infotainment-system, inkludert\n\n"<li>"Google-kontoen din"</li>\n<li>"system- og appdata samt innstillinger"</li>\n<li>"nedlastede apper"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Du er for øyeblikket logget på disse kontoene:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Det finnes andre profiler tilknyttet dette kjøretøyet."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Slett alle dataene"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vil du slette alle dataene?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Dette sletter alle de personlige profildataene, kontoene og nedlastede appene på dette infotainment-systemet.\n\nDu kan ikke angre denne handlingen."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Tøm alt"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Tømmer"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Vent litt"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dato og klokkeslett"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Angi dato, klokkeslett, tidssone og formater"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatisk dato og klokkeslett"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Logget på som administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle administratortillatelser"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gjør brukeren til administrator"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Administratorer kan slette brukere, inkludert andre administratorer, og tilbakestille systemet til fabrikkstandard."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Denne profilen kan slette profiler, inkludert andre administratorer, og tilbakestille systemet til fabrikkstandard."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Denne handlingen kan ikke angres."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, gjør brukeren til administrator"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Opprett nye brukere"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Opprett nye profiler"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Ring"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Meldinger via bilens mobildata"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer nye apper"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Avinstaller apper"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Legg til bruker"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruker"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Vil du legge til en ny bruker?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du legger til en ny bruker, må vedkommende konfigurere sitt eget område."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brukere kan oppdatere apper for alle andre brukere."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Grensen for antall brukere er nådd"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Du kan opprette opptil <xliff:g id="COUNT">%d</xliff:g> brukere.</item>
-      <item quantity="one">Du kan bare opprette én bruker.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Legg til en profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Ny profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vil du legge til en ny profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Når du legger til en ny profil, må vedkommende konfigurere sitt eget område."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Alle profiler kan oppdatere apper for andre profiler."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Grensen for antall profiler er nådd"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Du kan opprette opptil <xliff:g id="COUNT">%d</xliff:g> profiler.</item>
+      <item quantity="one">Du kan bare opprette én profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Kunne ikke opprette noen ny bruker"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vil du slette brukeren?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle appene og dataene slettes."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Kunne ikke slette brukeren."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Kunne ikke opprette en ny profil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vil du slette denne profilen?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Alle appene og dataene tilknyttet denne profilen blir slettet."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Kunne ikke slette profilen."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Denne profilen blir slettet når du bytter profil eller starter kjøretøyet på nytt."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Avvis"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Prøv på nytt"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Slett den siste brukeren?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Når du har slettet den eneste gjenværende brukeren for bilen, blir en ny administratorbruker opprettet."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle dataene, innstillingene og appene som er knyttet til bruken, blir slettet. Du må konfigurere systemet på nytt."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vil du slette den siste profilen?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Hvis du sletter den siste gjenværende profilen for dette kjøretøyet, blir alle data, innstillinger og apper tilknyttet denne profilen slettet."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Du kan konfigurere en ny profil etter tilbakestillingen."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Velg en ny administrator"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Du trenger minst én administrator. For å slette denne administratoren må du først finne en erstatter."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Velg en administrator"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Deg (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Navn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ikke konfigurert"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Endre brukernavnet"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Endre profilnavnet"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Feltet må fylles ut."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Brukernavnet du skrev inn, er ugyldig."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Profilnavnet er ugyldig."</string>
     <string name="users_list_title" msgid="770764290290240909">"Brukere"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiler"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Tillatelse er gitt til %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Lagring"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musikk og lyd"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Lydfiler"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Beregner …"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Appstørrelse"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Brukerdata"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profildata"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Buffer"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totalt"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Tøm lagring"</string>
@@ -532,8 +565,8 @@
     <string name="remove_account_error_title" msgid="8368044943174826635">"Kunne ikke fjerne kontoen."</string>
     <string name="account_sync_title" msgid="6541844336300236915">"Kontosynkronisering"</string>
     <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synkronisering er slått på for <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g> elementer"</string>
-    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronisering er slått på for alle elementer"</string>
-    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronisering er slått av for alle elementer"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronisering er slått på for alle elementene"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronisering er slått av for alle elementene"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Synkronisering er av"</string>
     <string name="sync_error" msgid="6698021343089247914">"Synkroniseringsfeil"</string>
     <string name="last_synced" msgid="4745124489150101529">"Sist synkronisert <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Avbryt synkroniseringen"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Det er midlertidige problemer med synkroniseringen. Vent litt."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Personvern"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Kjøretøydata"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrollér apptilgangen til posisjonen din"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontrollér tilgangen til mikrofonen"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Kjøretøydata"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Administrer aktivitetene og informasjonen som er lagret i dette kjøretøyet"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Slett profilen din"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Slett profilen din og kontoene dine fra dette infotainment-systemet"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Denne handlingen er utilgjengelig for profilen din"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sikkerhet"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skjermlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ingen"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Vil du fjerne skjermlåsen?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Dette gir hvem som helst tilgang til kontoen din"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profillås"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Konfigurer automatisk låsing"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Skriv inn PIN-koden din"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Skriv inn passordet ditt"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Angi en PIN-kode for sikkerheten"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Må inneholde færre enn <xliff:g id="NUMBER">%d</xliff:g> sifre"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Kan bare inneholde tall fra 0 til 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Enhetsadministratoren forbyr nylig brukte PIN-koder"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Vanlige PIN-koder er blokkert av IT-administratoren din. Prøv en annen PIN-kode."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Vanlige PIN-koder er blokkert av IT-administratoren din. Prøv en annen PIN-kode."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Dette kan ikke inkludere et ugyldig tegn."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Passordet er ugyldig – det må bestå av minst fire tegn."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Enhetsadministratoren forbyr nylig brukte passord"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Feil ved lagring av passord"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vanlige passord er blokkert av IT-administratoren din. Prøv et annet passord."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Vanlige passord er blokkert av IT-administratoren din. Prøv et annet passord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En sekvens av stigende, synkende eller like sifre er ikke tillatt."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativer for skjermlås"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : for <xliff:g id="NUM_DAYS">%3$s</xliff:g> dager siden"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter-tasten"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Avslutt demomodus"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Avslutt demomodus"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dette sletter demokontoen og tilbakestiller systemet til fabrikkstandard. Alle brukerdataene går tapt."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Dette sletter demokontoen og tilbakestiller systemet til fabrikkstandard. Alle profildataene går tapt."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Avslutt demomodus"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"AVVIS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funksjonen er ikke tilgjengelig når du kjører"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Du kan ikke legge til en bruker mens du kjører"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Du kan ikke legge til en profil mens du kjører"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Søk"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent og Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistentapp"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Bruk teksten fra skjermen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Gi assistenten tillatelse til å bruke innhold på skjermen"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Bruk skjermdumper"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Gi assistenten tillatelse til å bruke skjermdumper"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nylig sendt"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Alle apper"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiler og kontoer"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Administrer andre profiler"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Legg til en profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Slett denne profilen"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Legg til en profil"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b08ab42..139d488 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"प्रदर्शन"</string>
     <string name="brightness" msgid="2919605130898772866">"चमकको स्तर"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"अनुकूलनीय चमक"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"उपलब्ध उज्यालोका लागि चमकको तह अप्टिमाइज गर्नुहोस्"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light सक्रिय छ"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"स्क्रिन, टचस्क्रिन"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"मधुरो स्क्रिन, टचस्क्रिन, ब्याट्री"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"मधुरो स्क्रिन, टचस्क्रिन, ब्याट्री"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"मधुरो स्क्रिन, रात, हल्का रङ्ग"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"रात्रि मोड"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क र इन्टरनेट"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
@@ -39,7 +36,7 @@
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"निष्क्रिय / SIM"</string>
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"सक्रिय / डाउनलोड गरिएको SIM"</string>
     <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"निष्क्रिय / डाउनलोड गरिएको SIM"</string>
-    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"अरू थप्नुहोस्"</string>
+    <string name="mobile_network_list_add_more" msgid="6174294462747070655">"थप थप्नुहोस्"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क प्रयोग गरी डेटामाथि पहुँच राख्नु…"</string>
     <string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा निष्क्रिय पार्ने हो?"</string>
@@ -54,9 +51,9 @@
     <string name="data_usage_settings" msgid="7877132994777987848">"डेटाको प्रयोग"</string>
     <string name="data_usage_title" msgid="2923515974389203812">"प्राथमिक डेटा"</string>
     <string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g><xliff:g id="ID_2">^2</xliff:g> प्रयोग गरियो"</string>
-    <string name="cell_data_warning" msgid="8997739664336571149">"डेटाको खपतसम्बन्धी चेतावनी: <xliff:g id="ID_1">^1</xliff:g>"</string>
+    <string name="cell_data_warning" msgid="8997739664336571149">"डेटासम्बन्धी चेतावनी: <xliff:g id="ID_1">^1</xliff:g>"</string>
     <string name="cell_data_limit" msgid="6862164869877993009">"डेटाको सीमा: <xliff:g id="ID_1">^1</xliff:g>"</string>
-    <string name="cell_data_warning_and_limit" msgid="5003954080814312475">"डेटाको खपतसम्बन्धी चेतावनी: <xliff:g id="ID_1">^1</xliff:g> / डेटाको सीमा: <xliff:g id="ID_2">^2</xliff:g>"</string>
+    <string name="cell_data_warning_and_limit" msgid="5003954080814312475">"डेटासम्बन्धी चेतावनी: <xliff:g id="ID_1">^1</xliff:g> / डेटाको सीमा: <xliff:g id="ID_2">^2</xliff:g>"</string>
     <plurals name="billing_cycle_days_left" formatted="false" msgid="9163059632851951402">
       <item quantity="other">%d दिन बाँकी</item>
       <item quantity="one">%d दिन बाँकी</item>
@@ -73,17 +70,25 @@
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"प्रयोगको चक्र रिसेट गर्ने मिति"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"प्रत्येक महिनाको निम्न मिति:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"सेट गर्नुहोस्"</string>
-    <string name="data_warning_limit_title" msgid="4950868241810828601">"डेटाको खपतसम्बन्धी चेतावनी तथा सीमा"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"डेटासम्बन्धी चेतावनी तथा सीमा"</string>
     <string name="app_usage_cycle" msgid="8445927080245880296">"एपको डेटा प्रयोगको चक्र"</string>
-    <string name="set_data_warning" msgid="6628236612886588097">"डेटा खपतको चेतावनी सेट गर्नुहोस्"</string>
-    <string name="data_warning" msgid="116776633806885370">"डेटाको खपतसम्बन्धी चेतावनी"</string>
-    <string name="set_data_limit" msgid="7136539812414500084">"डेटाको डेटा खपतको सीमा सेट गरियोस्"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"डेटासम्बन्धी चेतावनी सेट गर्नु"</string>
+    <string name="data_warning" msgid="116776633806885370">"डेटासम्बन्धी चेतावनी"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"डेटाको सीमा सेट गर्नुहोस्"</string>
     <string name="data_limit" msgid="227338836292511425">"डेटाको सीमा"</string>
-    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"डेटा खपतको सीमा तोक्दा"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"डेटाको प्रयोग सीमित गर्दै"</string>
     <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"तपाईंले सेट गर्नुभएको अधिकतम डेटा प्रयोगको सीमामा पुगेपछि तपाईंको सवारी साधनको मुख्य भागले मोबाइल डेटालाई निष्क्रिय पार्ने छ।\n\nतपाईंको सवारी साधनको मुख्य भागले र तपाईंको सेवा प्रदायकले फरक तरिकाले डेटा प्रयोगको मापन गर्ने हुनाले विवेकपूर्ण तरिकाले यसको सीमा सेट गर्ने कुराबारे विचार गर्नुहोस्।"</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"डेटा उपयोगसम्बन्धी चेतावनी सेट गर्नुहोस्"</string>
-    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"डेटा खपतको सीमा तोक्नुहोस्"</string>
+    <string name="data_usage_limit_editor_title" msgid="133468242379286689">"डेटा उपयोगसम्बन्धी सीमा सेट गर्नुहोस्"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"सेट गर्नुहोस्"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi सक्रिय गरिँदै…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi निष्क्रिय पारिँदै…"</string>
@@ -93,17 +98,19 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्कमा जडान गर्न सकिएन"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क थप्नुहोस्"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"जडान गर्ने"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"कनेक्ट गरिँदै छ…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"नेटवर्क दायरामा छैन"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड देखाउनुहोस्"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"कृपया कुनै नेटवर्कको नाम प्रविष्टि गर्नुहोस्"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"नेटवर्कको नाम"</string>
-    <string name="wifi_ssid_hint" msgid="3170608752313710099">" SSID हाल्नुहोस्"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID प्रविष्टि गर्नुहोस्"</string>
     <string name="wifi_security" msgid="158358046038876532">"सुरक्षा"</string>
     <string name="wifi_signal_strength" msgid="8507318230553042817">"सिङ्केतको क्षमता"</string>
     <string name="wifi_status" msgid="5688013206066543952">"स्थिति"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"लिङ्कको गति"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"आवृत्ति"</string>
-    <string name="wifi_ip_address" msgid="3128140627890954061">"IP एड्रेस"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"IP ठेगाना"</string>
     <string name="show_password" msgid="2074628020371139240">"पासवर्ड देखाउनुहोस्"</string>
     <string name="default_network_name_summary" msgid="8148402439232464276">"नेटवर्कको नाम प्रविष्टि गर्नुहोस्"</string>
     <string name="default_password_summary" msgid="8789594645836902982">"पासवर्ड प्रविष्टि गर्नुहोस्"</string>
@@ -111,7 +118,7 @@
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"कमजोर"</item>
     <item msgid="7683058295076342057">"कमजोर"</item>
-    <item msgid="1639222824821660744">"राम्रै"</item>
+    <item msgid="1639222824821660744">"ठिकठाक"</item>
     <item msgid="1838705897358163300">"राम्रो"</item>
     <item msgid="6067166649320533751">"उत्कृष्ट"</item>
   </string-array>
@@ -119,25 +126,25 @@
     <string name="wifi_band_24ghz" msgid="8972492390639295220">"२.४ GHz"</string>
     <string name="wifi_band_5ghz" msgid="2023762623523105080">"५ GHz"</string>
     <string name="wifi_network_detail" msgid="9070182553555487360">"नेटवर्कको विवरण"</string>
-    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC एड्रेस"</string>
-    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP एड्रेस"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ठेगाना"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ठेगाना"</string>
     <string name="wifi_subnet_mask" msgid="6238171812379380608">"सबनेट मास्क"</string>
     <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
-    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 एड्रेसहरू"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ठेगानाहरू"</string>
     <string name="wifi_gateway" msgid="4975799192860431013">"गेटवे"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi का प्राथमिकताहरू"</string>
-    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi स्वतः अन गरियोस्"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"तपाईंको घरको नेटवर्क जस्ता सेभ गरिएका उच्च गुणस्तरका नेटवर्कहरू नजिक हुँदा Wi‑Fi फेरि सक्रिय हुने छ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi स्वतः सक्रिय गर्नुहोस्"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"तपाईंको घरको नेटवर्क जस्ता सुरक्षित गरिएका उच्च गुणस्तरका नेटवर्कहरू नजिक हुँदा Wi‑Fi फेरि सक्रिय हुने छ"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"स्थान निष्क्रिय पारिएको हुनाले उपलब्ध छैन। "<annotation id="link">"स्थान"</annotation>" सक्रिय गर्नुहोस्।"</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi स्क्यान गर्ने सुविधा सक्रिय गर्ने हो?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"सक्रिय गर्नुहोस्"</string>
     <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi स्क्यान गर्ने सेवा सक्रिय छ"</string>
     <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Wi-Fi  बाट बदलेर स्वतः मोबाइल डेटा प्रयोग गर्नुहोस्"</string>
-    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi मार्फत इन्टरनेट उपलब्ध नभएको बेलामा मोबाइल डेटाको खपत गर्नुहोस्। डेटा प्रयोगको शुल्क लाग्न सक्छ।"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi मार्फत इन्टरनेट उपलब्ध नभएको बेलामा मोबाइल डेटाको प्रयोग गर्नुहोस्। डेटा प्रयोगको शुल्क लाग्न सक्छ।"</string>
     <string name="learn_more" msgid="8214605928933358604">"थप जान्नुहोस्"</string>
     <string name="wifi_hotspot_name_title" msgid="8844779338692535356">"हटस्पटको नाम"</string>
     <string name="wifi_hotspot_name_summary_connecting" msgid="5262510450498600038">"<xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> सक्रिय गर्दै..."</string>
-    <string name="wifi_hotspot_name_summary_connected" msgid="7421325340822195506">"अन्य डिभाइसहरू <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> मा जोडिन सक्छन्"</string>
+    <string name="wifi_hotspot_name_summary_connected" msgid="7421325340822195506">"अन्य यन्त्रहरू <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> मा जोडिन सक्छन्"</string>
     <string name="wifi_hotspot_password_title" msgid="4103948315849351988">"हटस्पटको पासवर्ड"</string>
     <string name="wifi_hotspot_security_title" msgid="2299925790743587725">"सुरक्षा"</string>
     <string name="wifi_hotspot_wpa2_personal" msgid="7135181212837798318">"WPA2 व्यक्तिगत"</string>
@@ -160,24 +167,24 @@
     <string name="network_connection_request_dialog_title" msgid="8449606155059098762">"<xliff:g id="APPNAME">%1$s</xliff:g> प्रयोग गरिने यन्त्र"</string>
     <string name="network_connection_timeout_dialog_message" msgid="2536299451668687586">"कुनै पनि यन्त्र फेला परेन। यन्त्रहरू सक्रिय हुनुका साथै जडान गर्नका लागि उपलब्ध भएको कुरा सुनिश्चित गर्नुहोस्।"</string>
     <string name="network_connection_timeout_dialog_ok" msgid="2228662561126434792">"फेरि प्रयास गर्नुहोस्"</string>
-    <string name="network_connection_errorstate_dialog_message" msgid="4268321315241218483">"केही चिज गडबड भयो। यो एपले कुनै यन्त्र छनौट गर्नेसम्बन्धी अनुरोध रद्द गरेको छ।"</string>
+    <string name="network_connection_errorstate_dialog_message" msgid="4268321315241218483">"केही चिज गडबड भयो। यो अनुप्रयोगले कुनै यन्त्र छनौट गर्नेसम्बन्धी अनुरोध रद्द गरेको छ।"</string>
     <string name="network_connection_connect_successful" msgid="7893957133113302365">"सफलतापूर्वक जोडियो"</string>
     <string name="network_connection_request_dialog_showall" msgid="776613149566461487">"सबै देखाउनुहोस्"</string>
     <string name="progress_scanning" msgid="7191583064717479795">"खोजी गर्दै"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लुटुथ"</string>
     <string name="bluetooth_device" msgid="3178478829314083240">"बेनामी यन्त्र"</string>
-    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"कनेक्ट गरिएका डिभाइस"</string>
-    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नयाँ डिभाइससँग कनेक्ट गर्नुहोस्"</string>
-    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"कनेक्ट गर्नका लागि ब्लुटुथ अन हुने छ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"जोडा बनाइएका यन्त्रहरू"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नयाँ यन्त्रको जोडा बनाउनुहोस्"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"जोडा बनाउनका लागि ब्लुटुथ सक्रिय हुने छ"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"यन्त्र विच्छेद गर्ने हो?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"तपाईंको यन्त्र <xliff:g id="DEVICE_NAME">%1$s</xliff:g> बाट विच्छेद हुने छ।"</string>
-    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"सवारी साधनको ब्लुटुथ एड्रेस: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"यन्त्रको ब्लुटुथ एड्रेस: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"सवारी साधनको ब्लुटुथ ठेगाना: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"यन्त्रको ब्लुटुथ ठेगाना: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_name" msgid="2609869978821094114">"गाडीको नाम"</string>
     <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"यो सवारी साधनको पुनः नामकरण गर्नुहोस्"</string>
     <string name="bluetooth_rename_device" msgid="8406868875363878712">"यन्त्रको पुनः नामकरण गर्नुहोस्"</string>
     <string name="bluetooth_rename_button" msgid="2397892174725986383">"पुनः नामकरण गर्नुहोस्"</string>
-    <string name="bluetooth_available_devices" msgid="1854446368146061448">"उपलब्ध डिभाइस"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"उपलब्ध यन्त्रहरू"</string>
     <string name="bluetooth_profiles" msgid="5580372290862835951">"प्रोफाइलहरू"</string>
     <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_turning_on" msgid="7046983059601710414">"ब्लुटुथ सक्रिय गर्दै…"</string>
@@ -190,13 +197,23 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"एउटा एप अन्य ब्लुटुथ यन्त्रहरूले <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकेन्डसम्म तपाईंको हेडयुनिट देख्न सक्ने बनाउन चाहन्छ।"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लुटुथ सक्रिय गर्न र <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकेन्डसम्म अन्य यन्त्रहरूले तपाईंको हेडयुनिट देख्न सक्ने बनाउन चाहन्छ।"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"एउटा एप ब्लुटुथ सक्रिय गर्न र <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकेन्डसम्म अन्य यन्त्रहरूले तपाईंको हेडयुनिट देख्न सक्ने बनाउन चाहन्छ।"</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लुटुथसँग जोडा बनाउने अनुरोध"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"जोडा बनाउनुहोस् र कनेक्ट गर्नुहोस्"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"जोडा बनाउनुहोस् र जडान गर्नुहोस्"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्लुटुथसँग जोडा बनाउने कोड"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN मा अक्षर वा प्रतीकहरू समाविष्ट हुन्छन्"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"जोडा मिलाउने कोड टाइप गर्नुहोस् त्यसपछि फिर्ता गर्नुहोस् वा प्रविष्टि गर्नुहोस् नामक बटन थिच्नुहोस्"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग जोडा बनाउने हो?"</string>
-    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>लाई तपाईंका सम्पर्क ठेगानाहरू र फोन सम्पर्कको इतिहासमाथि पहुँच गर्ने अनुमति दिनुहोस्"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>लाई तपाईंका सम्पर्क ठेगानाहरू र फोन सम्पर्कको इतिहासमाथि पहुँच गर्न अनुमति दिनुहोस्"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"तपाईंले अर्को यन्त्रमा पनि यो PIN टाइप गर्नु पर्ने हुन सक्छ।"</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"तपाईंले अर्को यन्त्रमा यो पासकुञ्जी पनि टाइप गर्नु पर्ने हुन सक्छ।"</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"पिन १६ अङ्कको हुनु पर्छ"</string>
@@ -210,10 +227,10 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"सबै भाषाहरू"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"किबोर्ड"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"किबोर्डहरू व्यवस्थित गर्नुहोस्"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"टेक्स्ट टु स्पिच आउटपुट"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"पाठवाचकको आउटपुट"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"रुचाइएको इन्जिन"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"हालको इन्जिन"</string>
-    <string name="tts_speech_rate" msgid="4512944877291943133">"स्पिच रेट"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"वाणीको दर"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"पिच"</string>
     <string name="tts_reset" msgid="6289481549801844709">"रिसेट गर्नुहोस्"</string>
     <string name="sound_settings" msgid="3072423952331872246">"आवाज"</string>
@@ -225,9 +242,17 @@
     <string name="media_volume_summary" msgid="2961762827637127239">"सङ्गीत र भिडियोहरूका लागि भोल्युम सेट गर्नुहोस्"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"अलार्म"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"फोनको रिङटोन"</string>
-    <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचनाको डिफल्ट साउन्ड"</string>
-    <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्मको डिफल्ट साउन्ड"</string>
-    <string name="ringtone_picker_save_title" msgid="4388137432517227001">"सेभ गर्नुहोस्"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचनाको पूर्वनिर्धारित ध्वनि"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्मको पूर्वनिर्धारित ध्वनि"</string>
+    <string name="ringtone_picker_save_title" msgid="4388137432517227001">"सुरक्षित गर्नुहोस्"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"एकाइहरू"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"गति"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"दूरी"</string>
@@ -278,9 +303,10 @@
     <string name="units_unit_name_liter_per_hundred_kilometers" msgid="4867647387452453552">"लिटर प्रति सय किलोमिटर"</string>
     <string name="apps_and_notifications_settings" msgid="8704585874333781975">"एप तथा सूचनाहरू"</string>
     <string name="all_applications" msgid="7798210477486822168">"सबै एपहरू देखाउनुहोस्"</string>
-    <string name="default_applications" msgid="1558183275638697087">"डिफल्ट एपहरू"</string>
+    <string name="default_applications" msgid="1558183275638697087">"पूर्वनिर्धारित एपहरू"</string>
     <string name="app_permissions" msgid="32799922508313948">"एपसम्बन्धी अनुमति"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> प्रयोग गरिरहेका एपहरू"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"एपसम्बन्धी जानकारी"</string>
     <string name="force_stop" msgid="2153183697014720520">"जबर्जस्ती रोक्नुहोस्"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"जबरजस्ती रोक्ने हो?"</string>
@@ -290,16 +316,23 @@
     <string name="uninstall_text" msgid="277907956072833012">"स्थापना रद्द गर्नुहोस्"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"तपाईंले यो एपलाई असक्षम पार्नुभयो भने Android र अन्य एपहरूले अब उप्रान्त अपेक्षाअनुसार कार्य नगर्न सक्छन्।"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"एपलाई असक्षम पार्नुहोस्"</string>
-    <string name="not_installed" msgid="4218816013370552746">"यो प्रयोगकर्ताको लागि स्थापना गरिएको छैन"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"अनुमतिहरू"</string>
     <string name="notifications_label" msgid="6586089149665170731">"सूचनाहरू"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"भण्डारण र क्यास"</string>
     <string name="application_version_label" msgid="8556889839783311649">"संस्करण: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कुनै पनि अनुमति प्रदान गरिएको छैन"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"कुनै पनि अनुमतिका लागि अनुरोध गरिएको छैन"</string>
+    <string name="unused_apps" msgid="648471933781010395">"प्रयोग नगरिएका एपहरू"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">प्रयोग नगरिएका <xliff:g id="COUNT_1">%d</xliff:g> वटा एप</item>
+      <item quantity="one">प्रयोग नगरिएको <xliff:g id="COUNT_0">%d</xliff:g> एप</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"अनुमति रद्द गरियोस् र ठाउँ खाली गरियोस्"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s इन्चको आन्तरिक भण्डारण"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटाको प्रयोग"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"एपले खपत गरेको डेटा"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"एपको डेटाको प्रयोग"</string>
     <string name="computing_size" msgid="5791407621793083965">"गणना गरिँदै…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त अनुमतिहरू</item>
@@ -310,63 +343,86 @@
     <string name="assist_app_settings" msgid="9085261410166776497">"सहायक एप"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"स्क्रिनमा रहेको पाठ प्रयोग गर्नुहोस्"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"सहायक एपलाई स्क्रिनमा रहेको कुनै सामग्रीमाथि पाठका रूपमा पहुँच राख्ने अनुमति दिनुहोस्"</string>
-    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"स्क्रिनसट प्रयोग गरियोस्"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"स्क्रिसट प्रयोग गर्नुहोस्"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"सहायक एपलाई स्क्रिनमा रहेको कुनै छविमाथि पहुँच राख्ने अनुमति दिनुहोस्"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"आवाज संलग्न इनपुट"</string>
-    <string name="autofill_settings_title" msgid="1188754272680049972">"अटोफिल सेवा"</string>
+    <string name="autofill_settings_title" msgid="1188754272680049972">"स्वतः भरण सेवा"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"कुनै पनि होइन"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"चयन गरिएको"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"सहायकले तपाईंको स्क्रिनमा देख्न सकिने वा अनुप्रयोगहरूभित्र पहुँच राख्न सकिने जानकारीलगायत तपाईंको प्रणालीमा प्रयोगमा रहेका अनुप्रयोगहरूबारे जानकारी पढ्न सक्ने छ।"</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"सेवा थप्नुहोस्"</string>
-    <string name="app_launch_domain_links_title" msgid="774480184927726651">"लिंकहरू खोल्दा"</string>
-    <string name="domain_url_section_title" msgid="9070403140947787214">"इन्स्टल गरिएका एपहरू"</string>
+    <string name="app_launch_domain_links_title" msgid="774480184927726651">"लिंकहरू खोल्दै"</string>
+    <string name="domain_url_section_title" msgid="9070403140947787214">"स्थापना गरिएका एपहरू"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"समर्थित लिंकहरू नखोल्नुहोस्"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"<xliff:g id="DOMAIN">%s</xliff:g> खोल्नुहोस्"</string>
     <string name="domain_urls_summary_some" msgid="5523153458016701725">"<xliff:g id="DOMAIN">%s</xliff:g> र अन्य URL हरू खोल्नुहोस्"</string>
-    <string name="app_launch_title" msgid="3442601467010363057">"डिफल्ट रूपमा खोल्नुहोस्"</string>
-    <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"अन्य डिफल्ट मानहरू"</string>
-    <string name="auto_launch_disable_text" msgid="3595315315092716391">"कुनै डिफल्ट मान सेट गरिएको छैन।"</string>
+    <string name="app_launch_title" msgid="3442601467010363057">"पूर्वनिर्धारित रूपमा खोल्नुहोस्"</string>
+    <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"अन्य पूर्वनिर्धारित मानहरू"</string>
+    <string name="auto_launch_disable_text" msgid="3595315315092716391">"कुनै पूर्वनिर्धारित मान सेट गरिएको छैन।"</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"तपाईंले केही कारवाहीका लागि यो एप पूर्वनिर्धारति रूपमा छनौट गर्नुभएको छ।"</string>
-    <string name="auto_launch_reset_text" msgid="590439611312092392">"डिफल्ट मानहरू हटाउनुहोस्"</string>
-    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"खोल्न मिल्ने लिंक खोल्न सकियोस्"</string>
-    <string name="app_link_open_always" msgid="5783167184335545230">"यो एपमा खोल्नुहोस्"</string>
-    <string name="app_link_open_ask" msgid="7242075065136237456">"प्रत्येक पटक सोधियोस्"</string>
-    <string name="app_link_open_never" msgid="2173174327831792316">"यो एपमा नखोल्नुहोस्"</string>
+    <string name="auto_launch_reset_text" msgid="590439611312092392">"पूर्वनिर्धारित मानहरू हटाउनुहोस्"</string>
+    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"समर्थित लिंकहरू खोल्नुहोस्"</string>
+    <string name="app_link_open_always" msgid="5783167184335545230">"यो अनुप्रयोगमा खोल्नुहोस्"</string>
+    <string name="app_link_open_ask" msgid="7242075065136237456">"प्रत्येक पटक सोध्नुहोस्"</string>
+    <string name="app_link_open_never" msgid="2173174327831792316">"यो अनुप्रयोगमा नखोल्नुहोस्"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"समर्थित लिंकहरू"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"विशेष अनुप्रयोगमाथिको पहुँच"</string>
-    <string name="show_system" msgid="4401355756969485287">"सिस्टम देखाइयोस्"</string>
-    <string name="hide_system" msgid="8845453295584638040">"सिस्टम लुकाइयोस्"</string>
+    <string name="show_system" msgid="4401355756969485287">"प्रणाली देखाउनुहोस्"</string>
+    <string name="hide_system" msgid="8845453295584638040">"प्रणाली लुकाउनुहोस्"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"प्रणालीका एप लुकाइयोस्"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"प्रणालीसम्बन्धी सेटिङ परिमार्जन गर्नुहोस्"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"यस अनुमतिले एपलाई प्रणालीको सेटिङ परिमार्जन गर्न दिन्छ।"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"सूचनामाथिको पहुँच"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई सूचनामाथि पहुँच राख्ने अनुमति दिने हो?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> सम्पर्क सूचीका व्यक्तीको नाम र तपाईंले प्राप्त गर्ने सन्देशहरूका पाठ जस्ता व्यक्तिगत जानकारीलगायतका सबै सूचनाहरू पढ्न सक्ने छ। यसले सूचनाहरू खारेज गर्न वा तिनीहरूमा रहेका कारबाहीसम्बन्धी बटनहरू ट्रिगर गर्न पनि सक्ने छ। \n\nयसले एपलाई बाधा नपुऱ्याउनुहोस् मोड अन र अफ गर्ने र सम्बन्धित सेटिङ परिवर्तन गर्ने क्षमता पनि प्रदान गर्ने छ।"</string>
+    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> सम्पर्क सूचीका व्यक्तीको नाम र तपाईंले प्राप्त गर्ने सन्देशहरूका पाठ जस्ता व्यक्तिगत जानकारीलगायतका सबै सूचनाहरू पढ्न सक्ने छ। यसले सूचनाहरू खारेज गर्न वा तिनीहरूमा रहेका कारबाहीसम्बन्धी बटनहरू ट्रिगर गर्न पनि सक्ने छ। \n\nयसले एपलाई बाधा नपुऱ्याउनुहोस् नामक मोड सक्रिय गर्ने वा निष्क्रिय पार्ने र सम्बन्धित सेटिङ परिवर्तन गर्ने क्षमता पनि प्रदान गर्ने छ।"</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"तपाईंले <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> का सूचनामाथिको पहुँच निष्क्रिय पार्नुभएका खण्डमा बाधा नपुऱ्याउनुहोस् नामक मोडमाथिको पहुँच पनि निष्क्रिय पारिन सक्छ।"</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"निष्क्रिय पार्नुहोस्"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"रद्द गर्नुहोस्"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"प्रिमियम SMS सुविधामाथिको पहुँच"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"प्रिमियम SMS सुविधा सक्रिय गर्नाले तपाईंलाई पैसा लाग्न सक्छ र उक्त लागत तपाईंको सेवा प्रदायकलाई तिर्नु पर्ने बिलमा जोडिने छ। तपाईंले एपका लागि अनुमति सक्षम पार्नुभएका खण्डमा तपाईं त्यस एपको प्रयोग गरेर प्रिमियम SMS पठाउन सक्नु हुने छ।"</string>
-    <string name="usage_access_title" msgid="7153427122072303254">"प्रयोग गर्ने अनुमति"</string>
+    <string name="usage_access_title" msgid="7153427122072303254">"प्रयोगसम्बन्धी पहुँच"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"प्रयोगको पहुँचले एपलाई तपाईंले आफ्नो सेवा प्रदायक, भाषासम्बन्धी सेटिङ र अन्य विवरणहरूसहित अन्य कुन कुन एपहरू गरिरहनुभएको छ र कत्तिको प्रयोग गर्नुहुन्छ भन्ने कुरा ट्र्याक गर्न दिन्छ।"</string>
-    <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi कन्ट्रोल"</string>
+    <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi को नियन्त्रण"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi नियन्त्रकले एपलाई Wi-Fi सक्रिय गर्ने वा निष्क्रिय पार्ने, स्क्यान गरी Wi-Fi नेटवर्कमा जडान गर्ने, नेटवर्कहरू थप्ने वा हटाउने, वा स्थानीय रूपमा मात्र प्रयोग गर्न मिल्ने हटस्पट सुरु गर्ने अनुमति दिन्छ।"</string>
     <string name="more_special_access_title" msgid="166115485446645971">"थप"</string>
     <string name="location_settings_title" msgid="901334356682423679">"स्थान"</string>
     <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"हालका स्थानसम्बन्धी अनुरोधहरू"</string>
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हालसालैका स्थानसम्बन्धी कुनै पनि अनुरोध छैन"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"एप स्तरीय अनुमति"</string>
-    <string name="location_settings_services_title" msgid="1186133632690970468">"लोकेसन सर्भिस"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"स्थानसम्बन्धी सेवाहरू"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"प्रणाली"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android संस्करण"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा प्याचको चरण"</string>
     <string name="hardware_info" msgid="3973165746261507658">"मोडेल तथा हार्डवेयर"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"मोडेल: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
-    <string name="baseband_version" msgid="2370088062235041897">"बेसब्यान्डको संस्करण"</string>
-    <string name="kernel_version" msgid="7327212934187011508">"कर्नेलको संस्करण"</string>
+    <string name="baseband_version" msgid="2370088062235041897">"बेसब्यान्ड संस्करण"</string>
+    <string name="kernel_version" msgid="7327212934187011508">"कर्नेल संस्करण"</string>
     <string name="build_number" msgid="3997326631001009102">"बिल्ड नम्बर"</string>
-    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लुटुथ एड्रेस"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लुटुथ ठेगाना"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध छैन"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"स्थिति"</string>
     <string name="device_status" msgid="267298179806290920">"स्थिति"</string>
@@ -378,14 +434,14 @@
     <string name="legal_information" msgid="1838443759229784762">"कानुनी जानकारी"</string>
     <string name="contributors_title" msgid="7698463793409916113">"योगदानकर्ताहरू"</string>
     <string name="manual" msgid="4819839169843240804">"म्यानुअल"</string>
-    <string name="regulatory_labels" msgid="3165587388499646779">"नियामक लेबलहरू"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"नियामक सम्बन्धी लेबलहरू"</string>
     <string name="safety_and_regulatory_info" msgid="1204127697132067734">"सुरक्षा र नियामकसम्बन्धी म्यानुअल"</string>
     <string name="copyright_title" msgid="4220237202917417876">"प्रतिलिपि अधिकार"</string>
     <string name="license_title" msgid="936705938435249965">"इजाजतपत्र"</string>
     <string name="terms_title" msgid="5201471373602628765">"सेवाका सर्तहरू"</string>
     <string name="webview_license_title" msgid="6442372337052056463">"प्रणालीका WebView इजाजतपत्रहरू"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"वालपेपरहरू"</string>
-    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"स्याटेलाइट फोटो उपलब्ध गराउने संस्था::\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"स्याटेलाइटमार्फत इमेजरी प्रदायकहरू:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"मोडेल"</string>
     <string name="status_serial_number" msgid="9158889113131907656">"क्रम सङ्ख्या"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"हार्डवेयरको संस्करण"</string>
@@ -417,68 +473,88 @@
     <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"सेटिङहरू रिसेट गर्नुहोस्"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"नेटवर्कसम्बन्धी सेटिङहरू रिसेट गरिएको छ"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"एपका प्राथमिकताहरू रिसेट गर्नुहोस्"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"यस कार्यले निम्न सुविधाहरूका सबै प्राथमिकताहरूलाई रिसेट गर्ने छ:\n\n"<li>"असक्षम पारिएका एपहरू"</li>\n<li>"असक्षम पारिएका एपसम्बन्धी सूचनाहरू"</li>\n<li>"कारबाहीका लागि तोकिएका डिफल्ट एप"</li>\n<li>"एपको ब्याकग्राउन्ड डेटासम्बन्धी बन्देजहरू"</li>\n<li>"अनुमतिसम्बन्धी सबै बन्देजहरू"</li>\n\n"तपाईं एपको कुनै पनि डेटा गुमाउनु हुने छैन।"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"यस कार्यले निम्न सुविधाहरूका सबै प्राथमिकताहरूलाई रिसेट गर्ने छ:\n\n"<li>"असक्षम पारिएका अनुप्रयोगहरू"</li>\n<li>"असक्षम पारिएका एपका सूचनाहरू"</li>\n<li>"कारबाहीका लागि पूर्वनिर्धारित अनुप्रयोगहरू"</li>\n<li>"एपका लागि पृष्ठभूमिका डेटासम्बन्धी बन्देजहरू"</li>\n<li>"अनुमतिसम्बन्धी सबै बन्देजहरू"</li>\n\n"तपाईं एपको कुनै पनि डेटा गुमाउनु हुने छैन।"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"एपहरू रिसेट गर्नुहोस्"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"एपका प्राथमिकताहरू रिसेट गरिएको छ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"सबै डेटा मेटाउनुहोस् (फ्याक्ट्री रिसेट गर्नुहोस्)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"यस कार्यले तपाईंको सवारी साधनाको मुख्य भागबाट सम्पूर्ण डेटा मेटाउने छ, जसमा निम्न कुराहरू पर्दछन्:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"प्रणाली र एपका डेटा तथा सेटिङहरू"</li>\n<li>"डाउनलोड गरिएका एपहरू"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"तपाईं अहिले निम्न खाताहरूमा साइन इन हुनुहुन्छ:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"यस सवारी साधनमा अन्य प्रयोगकर्ताहरू छन्।"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"सवारी साधन रिसेट गर्नुहोस्"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रिसेट गर्ने हो?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"तपाईंका सबै व्यक्तिगत जानकारी र डाउनलोड गरिएका एपहरू मेट्ने हो? तपाईं यो कार्य अन्डू गर्न सक्नुहुन्न!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"सबै कुरा मेटाउनुहोस्"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"मेटाउँदै"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया प्रतीक्षा गर्नुहोला..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"सबै डेटा मेटाउनुहोस् (फ्याक्ट्री रिसेट गर्नुहोस्)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"तपाईं अहिले निम्न खाताहरूमा साइन इन हुनुहुन्छ:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"सबै कुरा मेटाउनुहोस्"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"मेटाउँदै"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"कृपया प्रतीक्षा गर्नुहोस्..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"मिति र समय"</string>
-    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"मिति, समय, प्रामाणिक समय र प्रारूपहरू सेट गर्नुहोस्"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"मिति, समय, समय क्षेत्र र प्रारूपहरू सेट गर्नुहोस्"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"स्वचालित मिति र समय"</string>
     <string name="date_time_auto_summary" msgid="3311706425095342759">"नेटवर्कद्वारा उपलब्ध गराइएको समय प्रयोग गर्नुहोस्"</string>
-    <string name="zone_auto" msgid="3701878581920206160">"स्वचालित प्रामाणिक समय"</string>
-    <string name="zone_auto_summary" msgid="4345856882906981864">"नेटवर्कले उपलव्ध गराएको प्रामाणिक समय प्रयोग गर्नुहोस्"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"स्वचालित समय क्षेत्र"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"नेटवर्कले उपलव्ध गराएको समय क्षेत्र प्रयोग गर्नुहोस्"</string>
     <string name="date_time_24hour_title" msgid="3025576547136168692">"२४ घन्टे ढाँचा"</string>
     <string name="date_time_24hour" msgid="1137618702556486913">"२४-घन्टे ढाँचा प्रयोग गर्नुहोस्"</string>
     <string name="date_time_set_time_title" msgid="5884883050656937853">"समय"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"समय सेट गर्नुहोस्"</string>
-    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"प्रामाणिक समय"</string>
-    <string name="date_time_set_timezone" msgid="4759353576185916944">"प्रामाणिक समय चयन गर्नुहोस्"</string>
+    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"समय क्षेत्र"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"समय क्षेत्र चयन गर्नुहोस्"</string>
     <string name="date_time_set_date_title" msgid="6834785820357051138">"मिति"</string>
     <string name="date_time_set_date" msgid="2537494485643283230">"मिति सेट गर्नुहोस्"</string>
     <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"वर्णानुक्रममा क्रमबद्ध गर्नुहोस्"</string>
-    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"प्रामाणिक समयका आधारमा क्रमबद्ध गर्नुहोस्"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"समय क्षेत्रका आधारमा क्रमबद्ध गर्नुहोस्"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"मिति"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"समय"</string>
     <string name="user_admin" msgid="1535484812908584809">"प्रशासक"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"प्रशासकका रूपमा साइन इन गरियो"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"सबै प्रशासकीय अनुमति"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"व्यवस्थापक बनाउनुहोस्"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"उक्त प्रयोगकर्ता अन्य प्रशासकहरू लगायतका प्रयोगकर्ताहरूलाई मेट्न र प्रणालीलाई फ्याक्ट्री रिसेट गर्न सक्ने छन्।"</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"यो कारबाही उल्टाउन मिल्दैन।"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"हो, व्यवस्थापक बनाउनुहोस्"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"नयाँ प्रयोगकर्ताहरू सिर्जना गर्नु…"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फोन कल गर्नुहोस्"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कारको मोबाइल डेटामार्फत सन्देश पठाउँदै"</string>
-    <string name="install_apps_permission_title" msgid="3099705360827925296">"नयाँ एपहरू इन्स्टल गर्नुहोस्"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"नयाँ एपहरू स्थापना गर्नुहोस्"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"एप स्थापना रद्द गर्नुहोस्"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"प्रयोगकर्ता थप्नुहोस्"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नयाँ प्रयोगकर्ता"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नयाँ प्रयोगकर्ता थप्ने?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तपाईंले नयाँ प्रयोगकर्ता थप्दा, ती व्यक्तिले आफ्नो स्थान सेटअप गर्नु पर्नेे हुन्छ।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कुनै पनि प्रयोगकर्ताले अन्य सबै प्रयोगकर्ताहरूका लागि एपहरू अद्यावधिक गर्न सक्नुहुन्छ।"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"प्रयोगकर्ताको सीमा पुग्यो"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">तपाईं अधिकतम <xliff:g id="COUNT">%d</xliff:g> प्रयोगकर्ताहरू सिर्जना गर्न सक्नुहुन्छ।</item>
-      <item quantity="one">एउटा प्रयोगकर्ता मात्र सिर्जना गर्न सकिन्छ।</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"कुनै नयाँ प्रयोगकर्ता सिर्जना गर्न सकिएन"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"यो प्रयोगकर्ता हटाउने हो?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"सबै एप र डेटा मेटाइने छन्।"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"प्रयोगकर्ता मेटाउन सकिएन।"</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"तपाईंले प्रोफाइल बदल्दा वा यो सवारी साधन पुनः स्टार्ट गर्दा यो प्रोफाइल मेटाइने छ।"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"खारेज गर्नुहोस्"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"पुनः प्रयास गर्नुहोस्"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"पछिल्लो प्रयोगकर्ता मेटाउने हो?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"यो कारको बाँकी रहेको प्रयोगकर्ता मेटाए पछि नयाँ प्रशासक प्रयोगकर्ता सिर्जना गरिने छ।"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"यो प्रयोगकर्तासँग सम्बन्धित सबै डेटा, सेटिङ र एपहरू मेटिने छन्। तपाईंले प्रणाली फेरि सेट अप गर्न पर्ने छ।"</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"नयाँ प्रशासक छनौट गर्नुहोस्‌"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"तपाईंलाई कम्तिमा एक प्रशासक चाहिन्छ। यो मेट्न पहिले प्रतिस्थापन छनौट गर्नुहोस्‌।"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"प्रशासक छनौट गर्नुहोस्‌"</string>
@@ -488,21 +564,26 @@
     <string name="current_user_name" msgid="3813671533249316823">"तपाईं (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाम"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेटअप गरिएको छैन"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"युजरनेम सम्पादन गर्नु…"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"फिल्ड खाली हुनु हुँदैन।"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"प्रविष्टि गरिएको युजरनेम अमान्य छ।"</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"प्रयोगकर्ताहरू"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s लाई अनुमति प्रदान गरियो"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"भण्डारण"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"सङ्गीत तथा अडियो"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"अन्य एपहरू"</string>
     <string name="storage_files" msgid="6382081694781340364">"फाइलहरू"</string>
     <string name="storage_system" msgid="1271345630248014010">"प्रणाली"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"सिस्टममा Android को संस्करण <xliff:g id="VERSION">%s</xliff:g> चलाउन प्रयोग भएका फाइलहरू समावेश छन्"</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"प्रणालीमा Android को संस्करण <xliff:g id="VERSION">%s</xliff:g> चलाउन प्रयोग भएका फाइलहरू समावेश छन्"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"अडियो फाइलहरू"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"गणना गर्दै…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"एपको आकार"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"प्रयोगकर्ताको डेटा"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"क्यास"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"कुल"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"भण्डारण खाली गर्नुहोस्"</string>
@@ -519,7 +600,7 @@
     <string name="account_auto_sync_title" msgid="3238816995364191432">"डेटा स्वतः सिंक गर्नुहोस्"</string>
     <string name="account_auto_sync_summary" msgid="6963837893148304128">"एपहरूलाई डेटा स्वतः पुनः ताजा गर्न दिनुहोस्"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"डेटा स्वतः सिंक गर्ने कार्य सक्रिय गर्ने हो?"</string>
-    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"तपाईंले वेबमार्फत आफ्नो खातामा गर्ने सबै परिवर्तनहरू स्वतः तपाईंको डिभाइसमा प्रतिलिपि गरिने छन्।\n\nकेही खाताहरूले तपाईंले फोनमा गर्ने सबै परिवर्तनहरूलाई वेबमा स्वतः प्रतिलिपि गर्न पनि सक्छन्। Google खाताले यसरी काम गर्दछ।"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"तपाईंले वेबमार्फत आफ्नो खातामा गर्ने सबै परिवर्तनहरू स्वतः तपाईंको यन्त्रमा प्रतिलिपि गरिने छन्।\n\nकेही खाताहरूले तपाईंले फोनमा गर्ने सबै परिवर्तनहरूलाई वेबमा स्वतः प्रतिलिपि गर्न पनि सक्छन्। Google खाताले यसरी काम गर्दछ।"</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"डेटा स्वतः सिंक गर्ने कार्य निष्क्रिय पार्ने हो?"</string>
     <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"यस कार्यले डेटाको बचत गर्ने छ तर तपाईंले हालसालको जानकारी सङ्कलन गर्न प्रत्येक खातालाई म्यानुअल तरिकाले सिंक गर्नु पर्ने हुन्छ। यसका अतिरिक्त, अद्याविधिक हुँदा तपाईं सूचना प्राप्त गर्नु हुने छैन।"</string>
     <string name="account_details_title" msgid="7529571432258448573">"खातासम्बन्धी जानकारी"</string>
@@ -528,12 +609,12 @@
     <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"प्रतिबन्धित प्रोफाइलहरूले खाताहरू थप्न सक्दैनन्"</string>
     <string name="remove_account_title" msgid="8840386525787836381">"खाता हटाउनुहोस्"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"खाता हटाउने हो?"</string>
-    <string name="really_remove_account_message" msgid="4296769280849579900">"यो खातालाई हटाउनुले यस डिभाइसबाट यस खातामा रहेका सम्पूर्ण सन्देश, सम्पर्कहरू र अन्य डेटा मेटाउने छ!"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"यो खातालाई हटाउनुले यस यन्त्रबाट यस खातामा रहेका सम्पूर्ण सन्देश, सम्पर्कहरू र अन्य डेटा मेटाउने छ!"</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"खाता हटाउन सकिएन।"</string>
     <string name="account_sync_title" msgid="6541844336300236915">"खाताको सिंक"</string>
-    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> मध्ये <xliff:g id="ID_1">%1$d</xliff:g> वस्तु सिंक गर्ने सुविधा अन छ"</string>
-    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"सबै वस्तु सिंक गर्ने सुविधा अन छ"</string>
-    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"सिंक गर्ने सुविधा पूर्णतया अफ छ"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> मध्ये <xliff:g id="ID_1">%1$d</xliff:g> वस्तुहरूका लागि सिंक गर्ने सेवा सक्रिय छ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"सबै वस्तुहरूका लागि सिंक गर्ने सेवा सक्रिय छ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"सबै वस्तुहरूका लागि सिंक गर्ने सेवा निष्क्रिय छ"</string>
     <string name="sync_disabled" msgid="393531064334628258">"सिंक निष्क्रिय छ"</string>
     <string name="sync_error" msgid="6698021343089247914">"सिंकसम्बन्धी त्रुटि"</string>
     <string name="last_synced" msgid="4745124489150101529">"पछिल्लो पटक सिंक गरिएको मिति: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक गर्ने कार्य रद्द गर्नु…"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"सिंक गर्ने प्रक्रियामा हाल समस्याहरू आइरहेको छन्। यसले छिट्टै काम गर्ने छ।"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"गोपनीयता"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"सवारी साधनको भण्डारणमा भएको डेटा"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"सवारी साधनको भण्डारणमा भएको डेटा"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"यो सवारी साधनमा गरिएका क्रियाकलाप तथा यसमा सुरक्षित गरिएका जानकारी व्यवस्थापन गर्नुहोस्"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षा"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रिन लक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"कुनै पनि होइन"</string>
@@ -570,7 +666,7 @@
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"अनलक प्याटर्न बनाउनुहोस्"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"सकिएपछि औँला उचाल्नुहोस्"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"प्याटर्न रेकर्ड गरियो"</string>
-    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"पुष्टि गर्न फेरि प्याटर्न हाल्नुहोस्"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"पुष्टि गर्न प्याटर्न फेरि बनाउनुहोस्"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"कम्तीमा ४ वटा थोप्लाहरू जोड्नुहोस्। फेरि प्रयास गर्नुहोस्।"</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"प्याटर्न मिलेन"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"अनलक शैली कोर्ने तरिका"</string>
@@ -579,32 +675,36 @@
     <string name="okay" msgid="4589873324439764349">"ठिक छ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"स्क्रिन लक हटाउने हो?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"यस कार्यले जुनसुकै व्यक्तिलाई तपाईंको खाता प्रयोग गर्न दिने छ"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"आफ्नो PIN प्रविष्टि गर्नुहोस्"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"आफ्नो पासवर्ड प्रविष्टि गर्नुहोस्"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"सुरक्षाका ला‍गि एउटा PIN सेट गर्नुहोस्"</string>
     <string name="confirm_your_pin_header" msgid="9096581288537156102">"आफ्नो PIN पुन: प्रविष्टि गर्नुहोस्"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN कम्तीमा ४ अङ्कको हुनै पर्ने"</string>
-    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pin अमान्य छ, यसमा कम्तीमा ४ अङ्क हुनु पर्छ।"</string>
+    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pin अमान्य छ, यसमा अनिवार्य रूपमा कम्तीमा ४ अङ्क हुनु पर्छ।"</string>
     <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN हरू मेल खाँदैनन्"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"PIN सुरक्षित गर्ने क्रममा त्रुटि भयो"</string>
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"गलत PIN"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"गलत पासवर्ड"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"सुरक्षाका लागि पासवर्ड सेट गर्नुहोस्"</string>
-    <string name="confirm_your_password_header" msgid="7052891840366724938">"आफ्नो पासवर्ड फेरि हाल्नुहोस्"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"आफ्नो पासवर्ड पुन: प्रविष्टि गर्नुहोस्"</string>
     <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"पासवर्डहरू मेल खाँदैनन्"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"खाली गर्नुहोस्"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"रद्द गर्नुहोस्"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"पुष्टि गर्नुहोस्"</string>
-    <string name="choose_lock_password_hints" msgid="3903696950202491593">"कम्तीमा ४ वर्णको हुनु पर्छ"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"अनिवार्य रूपमा कम्तीमा ४ वर्णको हुनु पर्छ"</string>
     <string name="lockpassword_password_too_short" msgid="6681218025001328405">"कम्तीमा <xliff:g id="COUNT">%d</xliff:g> वटा वर्ण हुनै पर्छ"</string>
     <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN कम्तीमा <xliff:g id="COUNT">%d</xliff:g> अङ्कको हुनै पर्छ"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"अनिवार्य रूपमा <xliff:g id="NUMBER">%d</xliff:g> भन्दा कम वर्ण हुनु पर्छ"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"अनिवार्य रूपमा <xliff:g id="NUMBER">%d</xliff:g> भन्दा कम अङ्क हुनु पर्छ"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"अनिवार्य रूपमा ० देखि ९ सम्मका अङ्कहरू मात्र समावेश हुनु पर्छ।"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"यन्त्रको प्रशासकले पछिल्लो PIN प्रयोग गर्न अनुमति दिँदैन"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"तपाईंका IT व्यवस्थापकले धेरै प्रयोग हुने PIN हरूमाथि रोक लगाउनु भएको छ। कुनै फरक PIN प्रयोग गरी हेर्नुहोस्।"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"तपाईंका IT व्यवस्थापकले धेरै प्रयोग हुने PIN हरूमाथि रोक लगाउनु भएको छ। कुनै फरक PIN प्रयोग गरी हेर्नुहोस्।"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"यसमा कुनै अमान्य वर्ण समावेश गर्न मिल्दैन।"</string>
-    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"अमान्य पासवर्ड, कम्तीमा ४ वर्णको हुनु पर्छ।"</string>
+    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"अमान्य पासवर्ड, अनिवार्य रूपमा कम्तीमा ४ वर्णको हुनु पर्छ।"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
       <item quantity="other">कम्तीमा <xliff:g id="COUNT">%d</xliff:g> वटा अक्षरहरू हुनु अनिवार्य छ</item>
       <item quantity="one">कम्तीमा एउटा अक्षर हुनु अनिवार्य छ</item>
@@ -631,17 +731,17 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"यन्त्रको व्यवस्थापकले पछिल्लो पासवर्ड प्रयोग गर्ने अनुमति दिँदैन"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"पासवर्ड सुरक्षित गर्ने क्रममा त्रुटि भयो"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"तपाईंका IT व्यवस्थापकले धेरै प्रयोग हुने पासवर्डहरूमाथि रोक लगाउनु भएको छ। कुनै फरक पासवर्ड प्रयोग गरी हेर्नुहोस्।"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"तपाईंका IT व्यवस्थापकले धेरै प्रयोग हुने पासवर्डहरूमाथि रोक लगाउनु भएको छ। कुनै फरक पासवर्ड प्रयोग गरी हेर्नुहोस्।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अङ्कहरूको बढ्दो, घट्दो वा दोहोरिएको अनुक्रम निषेध गरिएको छ।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रिन लकका विकल्पहरू"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिनअघि"</string>
     <string name="credentials_reset" msgid="873900550885788639">"प्रमाणहरू मेट्नुहोस्"</string>
     <string name="credentials_reset_summary" msgid="6067911547500459637">"सबै प्रमाणहरू हटाउनुहोस्"</string>
     <string name="credentials_reset_hint" msgid="3459271621754137661">"सम्पूर्ण सामग्री हटाउने हो?"</string>
-    <string name="credentials_erased" msgid="2515915439705550379">"क्रिडेन्सियलको भण्डारण मेटियो।"</string>
-    <string name="credentials_not_erased" msgid="6118567459076742720">"क्रिडेन्सियलको भण्डारण मेटाउन सकिएन।"</string>
+    <string name="credentials_erased" msgid="2515915439705550379">"प्रमाणको भण्डारण मेटियो।"</string>
+    <string name="credentials_not_erased" msgid="6118567459076742720">"प्रमाणको भण्डारण मेटाउन सकिएन।"</string>
     <string name="forget" msgid="3971143908183848527">"बिर्सनुहोस्"</string>
-    <string name="connect" msgid="5861699594602380150">"कनेक्ट गर्नुहोस्"</string>
+    <string name="connect" msgid="5861699594602380150">"जडान गर्नुहोस्"</string>
     <string name="disconnect" msgid="6140789953324820336">"विच्छेद गर्नुहोस्"</string>
     <string name="delete_button" msgid="5840500432614610850">"मेट्नुहोस्"</string>
     <string name="remove_button" msgid="6664656962868194178">"हटाउनुहोस्"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter कुञ्जी"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"डेमो मोडबाट बाहिरिनुहोस्"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोडबाट बाहिरिनुहोस्"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"यस कार्यले डेमो खाता मेटाउनुका साथै प्रणालीमा फ्याक्ट्रीको डेटा रिसेट गर्दछ। प्रयोगकर्ताका सबै डेटा गुम्ने छन्।"</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोडबाट बाहिरिनुहोस्"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"खारेज गर्नुहोस्"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"सवारी साधन चलाइरहेका बेला यो सुविधा उपलब्ध छैन"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"सवारी साधन चलाइरहेको बेला प्रयोगकर्तालाई थप्न सकिँदैन"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"खोज"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"सहायक तथा Voice"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 5b086da..378f9fb 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -22,13 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"Scherm"</string>
     <string name="brightness" msgid="2919605130898772866">"Helderheidsniveau"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Aanpasbare helderheid"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Helderheidsniveau optimaliseren voor het beschikbare licht"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"De schermhelderheid aanpassen aan de omgeving"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nachtverlichting ingeschakeld"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"scherm, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"scherm dimmen, touchscreen, batterij"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"scherm dimmen, touchscreen, batterij"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"scherm dimmen, nacht, tint"</string>
-    <string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtstand"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiel netwerk"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
@@ -38,7 +34,7 @@
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"Actief/simkaart"</string>
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactief/simkaart"</string>
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"Actief, gedownloade simkaart"</string>
-    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactief, gedownloade simkaart"</string>
+    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactief/gedownloade simkaart"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Meer toevoegen"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiele data"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Datatoegang via mobiel netwerk"</string>
@@ -80,10 +76,14 @@
     <string name="set_data_limit" msgid="7136539812414500084">"Datalimiet instellen"</string>
     <string name="data_limit" msgid="227338836292511425">"Datalimiet"</string>
     <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datagebruik beperken"</string>
-    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"De hoofdeenheid van je voertuig schakelt mobiele data uit zodra je de ingestelde limiet bereikt.\n\nAangezien het datagebruik wordt gemeten door de hoofdeenheid, en je provider tot een ander totaal kan komen, kun je het beste een voorzichtige limiet instellen."</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"De hoofdeenheid van je voertuig schakelt mobiele data uit zodra je de ingestelde limiet bereikt.\n\nAangezien het datagebruik wordt gemeten door de hoofdeenheid en je provider het gebruik op een andere manier kan berekenen, kun je overwegen een conservatieve limiet in te stellen."</string>
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Waarschuwing voor datagebruik instellen"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Limiet voor datagebruik instellen"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Instellen"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-netwerk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB gebruikt van %2$s tot %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Verbinding met ander netwerk maken"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Netwerkvoorkeuren"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wifi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wifi inschakelen…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wifi uitschakelen…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kan geen verbinding maken met het netwerk"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Netwerk toevoegen"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Verbinden…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Netwerk is niet binnen bereik"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Wachtwoord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Wachtwoord weergeven"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Geef een netwerknaam op"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Een app wil je hoofdunit <xliff:g id="TIMEOUT">%1$d</xliff:g> seconden zichtbaar maken voor andere Bluetooth-apparaten."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> wil Bluetooth inschakelen en je hoofdunit <xliff:g id="TIMEOUT">%2$d</xliff:g> seconden zichtbaar maken voor andere apparaten."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Een app wil Bluetooth inschakelen en je hoofdunit <xliff:g id="TIMEOUT">%1$d</xliff:g> seconden zichtbaar maken voor andere apparaten."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Zichtbaar als %1$s voor andere apparaten"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mijn apparaten"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Eerder verbonden"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s is gekoppeld"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s is ontkoppeld"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-koppelingsverzoek"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koppelen en verbinden"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-koppelingscode"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standaard meldingsgeluid"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standaard wekkergeluid"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Opslaan"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Meldingsgeluiden"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, meldingen, wekker"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Helderheid"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Scherm aanpassen bij weinig licht"</string>
     <string name="units_settings" msgid="402325305096925886">"Eenheden"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Snelheid"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Afstand"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Alle apps weergeven"</string>
     <string name="default_applications" msgid="1558183275638697087">"Standaard-apps"</string>
     <string name="app_permissions" msgid="32799922508313948">"App-rechten"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps die <xliff:g id="APPS">%1$s</xliff:g> gebruiken"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"App-toegang tot je gegevens beheren"</string>
     <string name="applications_settings" msgid="794261395191035632">"App-info"</string>
     <string name="force_stop" msgid="2153183697014720520">"Gedwongen stoppen"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Gedwongen stoppen?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Verwijderen"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Als je deze app uitschakelt, werken Android en andere apps mogelijk niet meer zoals bedoeld."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"App uitschakelen"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Niet geïnstalleerd voor deze gebruiker"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Niet geïnstalleerd voor dit profiel"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Rechten"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Meldingen"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Opslag en cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versie: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Geen rechten verleend"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Geen rechten aangevraagd"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Niet-gebruikte apps"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> niet-gebruikte apps</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> niet-gebruikte app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Rechten intrekken en ruimte vrijmaken"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s in interne opslag"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datagebruik"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Gegevensgebruik van app"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Altijd vragen"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Niet openen in deze app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Ondersteunde links"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Onlangs geopend"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Alle %1$d apps bekijken"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Rechtenbeheer"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"App-toegang tot je gegevens beheren"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Voor de Assistent en meer"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Voor systeem- en andere instellingen"</string>
     <string name="special_access" msgid="5730278220917123811">"Speciale app-toegang"</string>
     <string name="show_system" msgid="4401355756969485287">"Systeemprocessen weergeven"</string>
     <string name="hide_system" msgid="8845453295584638040">"Systeemprocessen verbergen"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Systeem-apps verbergen"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Systeeminstellingen aanpassen"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Met deze rechten kan een app de systeeminstellingen aanpassen."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Toegang tot meldingen"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen recente locatieverzoeken"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Rechten op app-niveau"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Locatieservices"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Locatie gebruiken"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Systeem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Systeemupdates"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Geavanceerd"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Over, juridische informatie, resetten en meer"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versie"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-beveiligingspatchniveau"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model en hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Hiermee worden alle voorkeuren gereset voor:\n\n"<li>"Uitgeschakelde apps"</li>\n<li>"Uitgeschakelde app-meldingen"</li>\n<li>"Standaardapps voor acties"</li>\n<li>"Beperkingen voor achtergrondgegevens voor apps"</li>\n<li>"Rechtenbeperkingen"</li>\n\n"Je verliest geen app-gegevens."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Apps resetten"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-voorkeuren zijn gereset"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Alle gegevens wissen (fabrieksreset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Hiermee worden alle gegevens van de hoofdunit van je voertuig gewist, waaronder:\n\n"<li>"Je Google-account"</li>\n<li>"Gegevens en instellingen van het systeem en de apps"</li>\n<li>"Gedownloade apps"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Je bent momenteel ingelogd op de volgende accounts:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Er zijn andere gebruikers aanwezig in dit voertuig."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Voertuig resetten"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetten?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Al je persoonlijke informatie en gedownloade apps verwijderen? Je kunt deze actie niet ongedaan maken."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Alles wissen"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wissen"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Even geduld..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Alle gegevens wissen (fabrieksreset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Alle gegevens en profielen van het infotainmentsysteem wissen"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Hiermee worden alle gegevens van het infotainmentsysteem van je voertuig gewist, waaronder:\n\n"<li>"Je Google-account"</li>\n<li>"Gegevens en instellingen van het systeem en de apps"</li>\n<li>"Gedownloade apps"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Je bent momenteel ingelogd op de volgende accounts:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Er zijn andere profielen aanwezig in dit voertuig."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Alle gegevens wissen"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Alle gegevens wissen?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Hiermee worden al je persoonlijke profielgegevens, accounts en gedownloade apps op dit infotainmentsysteem gewist.\n\nJe kunt deze actie niet ongedaan maken."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Alles wissen"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Wissen"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Even geduld..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum en tijd"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Datum, tijd, tijdzone en notaties instellen"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatische datum en tijd"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ingelogd als beheerder"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle beheerdersrechten"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Beheerder maken"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"De gebruiker kan gebruikers (waaronder andere beheerders) verwijderen en het systeem terugzetten op de fabrieksinstellingen."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Het profiel kan profielen verwijderen (waaronder andere beheerders) en de fabrieksinstellingen van het systeem terugzetten."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Deze actie kan niet ongedaan worden gemaakt."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, beheerder maken"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Nieuwe gebruikers maken"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Nieuwe profielen maken"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Bellen"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sms\'en via mobiele data van auto"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Nieuwe apps installeren"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Installatie van apps ongedaan maken"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Gebruiker toevoegen"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nieuwe gebruiker"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Nieuwe gebruiker?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Als je een nieuwe gebruiker toevoegt, moet die persoon een eigen profiel instellen."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Elke gebruiker kan apps updaten voor alle andere gebruikers"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Gebruikerslimiet bereikt"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Je kunt maximaal <xliff:g id="COUNT">%d</xliff:g> gebruikers maken.</item>
-      <item quantity="one">Er kan maar één gebruiker worden gemaakt.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profiel toevoegen"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nieuw profiel"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Nieuw profiel toevoegen?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Als je een nieuw profiel toevoegt, moet die persoon een eigen ruimte instellen."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Elk profiel kan apps updaten voor alle andere profielen."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Maximaal aantal profielen bereikt"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Je kunt maximaal <xliff:g id="COUNT">%d</xliff:g> profielen maken.</item>
+      <item quantity="one">Je kunt maar één profiel maken.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Kan geen nieuwe gebruiker maken"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Deze gebruiker verwijderen?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle apps en gegevens worden verwijderd."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Kan gebruiker niet verwijderen."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nieuw profiel maken is mislukt"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Dit profiel verwijderen?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Alle apps en gegevens voor dit profiel worden verwijderd"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Verwijderen van profiel is mislukt."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Dit profiel wordt verwijderd als je van profiel wisselt of het voertuig opnieuw start."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Sluiten"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Opnieuw proberen"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Laatste gebruiker verwijderen?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nadat de enige overblijvende gebruiker voor deze auto is verwijderd, wordt er een nieuwe beheerder gemaakt."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle gegevens, instellingen en apps die aan deze gebruiker zijn gekoppeld, worden verwijderd. Je moet het systeem opnieuw instellen."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Laatste resterende profiel verwijderen?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Als je het enige resterende profiel voor dit voertuig verwijdert, worden alle gegevens, instellingen en apps gewist die aan dit profiel zijn gekoppeld."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Na de reset kun je een nieuw profiel instellen."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Nieuwe beheerder kiezen"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Je hebt ten minste één beheerder nodig. Als je deze beheerder wilt verwijderen, moet je eerst een vervanger kiezen."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Beheerder kiezen"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Jij (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Naam"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Niet ingesteld"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Gebruikersnaam bewerken"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profielnaam bewerken"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Veld mag niet leeg zijn."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"De ingevoerde gebruikersnaam is ongeldig."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"De opgegeven profielnaam is ongeldig."</string>
     <string name="users_list_title" msgid="770764290290240909">"Gebruikers"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profielen"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Rechten verleend aan %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Opslag"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muziek en audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audiobestanden"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Berekenen…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"App-grootte"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Gebruikersgegevens"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profielgegevens"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cachegeheugen"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totaal"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Opslag wissen"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Synchronisatie annuleren"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Er zijn momenteel problemen met de synchronisatie. Synchronisatie wordt snel opnieuw uitgevoerd."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Voertuiggegevens"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"App-toegang tot je locatie beheren"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microfoon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"App-toegang tot de microfoon beheren"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Voertuiggegevens"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Activiteiten en informatie beheren die zijn opgeslagen op dit voertuig"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Je profiel verwijderen"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Je profiel en accounts van het infotainmentsysteem wissen"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Deze actie is niet beschikbaar voor je profiel"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Beveiliging"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Schermvergrendeling"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Geen"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Schermvergrendeling verwijderen?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Zo kan iedereen toegang tot je account krijgen"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profielvergrendeling"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Automatische ontgrendeling instellen"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Je pincode opgeven"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Geef je wachtwoord op"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Stel pincode in voor betere beveiliging"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Pincode moet minder dan <xliff:g id="NUMBER">%d</xliff:g> cijfers hebben"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Mag alleen de cijfers 0-9 bevatten."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Apparaatbeheer staat het gebruik van een recente pincode niet toe"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Veelvoorkomende pincodes worden geblokkeerd door je IT-beheerder. Probeer een andere pincode."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Veelvoorkomende pincodes worden geblokkeerd door je IT-beheerder. Probeer een andere pincode."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Mag geen ongeldig teken bevatten"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Wachtwoord ongeldig. Moet ten minste vier tekens zijn."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Apparaatbeheer staat het gebruik van een recent wachtwoord niet toe"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Fout bij wachtwoord opslaan"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Veelvoorkomende wachtwoorden worden geblokkeerd door je IT-beheerder. Probeer een ander wachtwoord."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Veelvoorkomende wachtwoorden worden geblokkeerd door je IT-beheerder. Probeer een ander wachtwoord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Een oplopende, aflopende of herhaalde reeks cijfers is niet toegestaan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Schermvergrendelingsopties"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagen geleden"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter-toets"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Demo afsluiten"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demomodus afsluiten"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Hiermee wordt het demo-account verwijderd en wordt het systeem teruggezet op de fabrieksinstellingen. Alle gebruikersgegevens gaan verloren."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Hiermee wordt het demo-account verwijderd en wordt het systeem teruggezet op de fabrieksinstellingen. Alle profielgegevens gaan verloren."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demo afsluiten"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"SLUITEN"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Functie niet beschikbaar tijdens het rijden"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Kan geen gebruikers toevoegen tijdens het rijden"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Kan geen profiel toevoegen tijdens het rijden"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Zoeken"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent en stem"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent-app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Tekst van scherm gebruiken"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"De Assistent toegang geven tot scherminhoud"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Screenshot gebruiken"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"De Assistent toegang geven tot afbeeldingen van het scherm"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Recent verstuurd"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Alle apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profielen en accounts"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Andere profielen beheren"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Profiel toevoegen"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Dit profiel verwijderen"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profiel toevoegen"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 46a49cd..9655845 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"ଡିସ୍‌ପ୍ଲେ"</string>
     <string name="brightness" msgid="2919605130898772866">"ଉଜ୍ଜ୍ୱଳତା ସ୍ତର"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ଅନୁକୂଳ ଉଜ୍ଜ୍ୱଳତା"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ଉପଲବ୍ଧ ଆଲୋକ ପାଇଁ ଉଜ୍ଜ୍ୱଳତା ଅନୁକୂଳ କରନ୍ତୁ"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ପରିବେଶ ଅନୁଯାୟୀ ସ୍କ୍ରିନ୍ ଉଜ୍ଜ୍ୱଳତା ଆଡଜଷ୍ଟ କରନ୍ତୁ"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"ରାତି ଆଲୋକ ଅନ୍ ହୋଇଛି"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ସ୍କ୍ରୀନ୍‌, ଟଚ୍‌ସ୍କ୍ରୀନ୍‌"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ଡିମ୍‌ ସ୍କ୍ରିନ୍‌, ଟଚ୍‌ସ୍କ୍ରିନ୍‌, ବ୍ୟାଟେରୀ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ଡିମ୍‌ ସ୍କ୍ରିନ୍‌, ଟଚ୍‌ସ୍କ୍ରିନ୍‌, ବ୍ୟାଟେରୀ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ଅଳ୍ପ ଆଲୋକ ଥିବା ସ୍କ୍ରୀନ୍‌, ରାତି, ଟିଣ୍ଟ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ନାଇଟ୍ ମୋଡ୍"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ନେଟ୍‌ୱର୍କ ଓ ଇର୍ଣ୍ଟନେଟ୍"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ମୋବାଇଲ୍‌ ନେଟ୍‌ୱର୍କ"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ଡାଟା ବ୍ୟବହାର ଚେତାବନୀ ସେଟ୍ କରନ୍ତୁ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ଡାଟା ବ୍ୟବହାରର ସୀମା ସେଟ୍ କରନ୍ତୁ"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ନେଟୱାର୍କ"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$sରୁ %1$d MB ବ୍ୟବହୃତ ହୋଇଛି"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"ଅନ୍ୟ ନେଟୱାର୍କରେ ଯୋଗ ଦିଅନ୍ତୁ"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ନେଟୱାର୍କ ପସନ୍ଦଗୁଡ଼ିକ"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ୱାଇ-ଫାଇ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ୱାଇ-ଫାଇ ଅନ୍‌ କରୁଛି…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ୱାଇ-ଫାଇ ବନ୍ଦ‌ ହେଉଛି…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ନେଟ୍‌ୱର୍କକୁ ସଂଯୋଗ କରିପାରିଲା ନାହିଁ।"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ନେଟ୍‌ୱର୍କ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ସଂଯୋଗ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ସଂଯୋଗ କରାଯାଉଛି…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ନେଟୱାର୍କ ରେଞ୍ଜ ମଧ୍ୟରେ ନାହିଁ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ପାସୱର୍ଡ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ପାସୱାର୍ଡ ଦେଖାନ୍ତୁ"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ଦୟାକରି ଏକ ନେଟ୍‍ୱାର୍କ ନାମ ଲେଖନ୍ତୁ"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ଏକ ଆପ୍ ଆପଣଙ୍କ ହେଡୟୁନିଟ୍‌କୁ <xliff:g id="TIMEOUT">%1$d</xliff:g> ସେକେଣ୍ଡ ପାଇଁ ଅନ୍ୟ ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍‌‌ଗୁଡିକରେ ଦେଖାଇବାକୁ ଚାହୁଁଛି।"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ ବ୍ଲୁଟୁଥ୍‌କୁ ଚାଲୁ କରିବା ପାଇଁ ଚାହୁଁଛି ଏବଂ <xliff:g id="TIMEOUT">%2$d</xliff:g> ସେକେଣ୍ଡ ପାଇଁ ଆପଣଙ୍କର ହେଡୟୁନିଟ୍‌କୁ ଅନ୍ୟ ଡିଭାଇସ୍‌‌ଗୁଡିକରେ ଦେଖାଇବା ପାଇଁ ଚାହୁଁଛି।"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ଏକ ଆପ୍ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ କରିବା ପାଇଁ ଚାହୁଁଛି ଏବଂ <xliff:g id="TIMEOUT">%1$d</xliff:g> ସେକେଣ୍ଡ ପାଇଁ ଆପଣଙ୍କର ହେଡୟୁନିଟ୍‌କୁ ଅନ୍ୟ ଡିଭାଇସ୍‌‌ଗୁଡିକରେ ଦେଖାଇବା ପାଇଁ ଚାହୁଁଛି।"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"ଅନ୍ୟ ଡିଭାଇସକୁ %1$s ଭାବରେ ଦେଖାଯାଏ"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"ମୋ ଡିଭାଇସ୍"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ପୂର୍ବରୁ ସଂଯୋଗ କରାଯାଇଥିବା"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ସଂଯୋଗ କରାଯାଇଛି"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ବ୍ଲୁଟୂଥ୍‍ ପେୟାର୍ କରିବା ପାଇଁ ଅନୁରୋଧ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ପେୟାର୍‌ ଓ ସଂଯୋଗ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ବ୍ଲୁଟୁଥ ପେୟାରିଂ କୋଡ୍"</string>
@@ -210,7 +217,7 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"ସମସ୍ତ ଭାଷା"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"କୀବୋର୍ଡ"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"କୀବୋର୍ଡଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"ଟେକ୍ସଟ୍‍-ଟୁ-ସ୍ପିଚ୍‍ ଆଉଟ୍‍ପୁଟ୍"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ଟେକ୍ସଟ୍‍-ରୁ-ସ୍ପିଚ୍‍ ଆଉଟ୍‍ପୁଟ୍"</string>
     <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ଅଗ୍ରାଧିକାର ଦିଆଯାଇଥିବା ଇଞ୍ଜିନ୍"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ସାମ୍ପ୍ରତିକ ଇଞ୍ଜିନ୍"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"ସ୍ପୀଚ୍‌ ହାର"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ଡିଫଲ୍ଟ ବିଜ୍ଞପ୍ତି ସାଉଣ୍ଡ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ଡିଫଲ୍ଟ ଆଲାର୍ମ ସାଉଣ୍ଡ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ସେଭ୍ କରନ୍ତୁ"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"ଆଲର୍ଟ ସାଉଣ୍ଡ"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ରିଂଟୋନ୍, ବିଜ୍ଞପ୍ତି, ଆଲାରାମ୍"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ଉଜ୍ଜ୍ୱଳତା"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"କମ୍ ଆଲୋକ ପାଇଁ ସ୍କ୍ରିନ୍ ଆଡଜଷ୍ଟ କରନ୍ତୁ"</string>
     <string name="units_settings" msgid="402325305096925886">"ୟୁନିଟ୍"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ବେଗ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ଦୂରତା"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"ସମସ୍ତ ଆପ୍ସ ଦେଖାନ୍ତୁ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ଡିଫଲ୍ଟ ଆପ୍ସ"</string>
     <string name="app_permissions" msgid="32799922508313948">"ଆପ୍‌ ଅନୁମତିଗୁଡ଼ିକ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ବ୍ୟବହାର କରୁଥିବା ଆପ୍‌ଗୁଡ଼ିକ"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"ଆପଣଙ୍କ ଡାଟାକୁ ଆପର ଆକ୍ସେସ୍ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ଆପ୍‌ ସୂଚନା"</string>
     <string name="force_stop" msgid="2153183697014720520">"ବାଧ୍ୟତାର ସହ ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ବାଧ୍ୟତାର ସହ ବନ୍ଦ କରିବେ?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"ଅନ୍‍ଇନ୍‍ଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ଯଦି ଆପଣ ଏହି ଆପ୍‌କୁ ନିଷ୍କ୍ରିୟ କରନ୍ତି, ତେବେ Android ଓ ଅନ୍ୟାନ୍ୟ ଆପ୍ସ ଆଉ କାମ ନକରିପାରେ।"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ଆପ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ଏହି ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ଇନ୍‌ଷ୍ଟଲ୍ କରାଯାଇନାହିଁ"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ଏହି ପ୍ରୋଫାଇଲ୍ ପାଇଁ ଇନଷ୍ଟଲ୍ କରାଯାଇନାହିଁ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ଅନୁମତିଗୁଡ଼ିକ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ଷ୍ଟୋରେଜ୍ &amp; କେଚ୍"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ଭର୍ସନ୍‌: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"କୌଣସି ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"କୌଣସି ଅନୁମତିର ଅନୁରୋଧ କରାଯାଇ ନାହିଁ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ଅବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ଟି ଅବ୍ୟବହୃତ ଆପ୍</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ଟି ଅବ୍ୟବହୃତ ଆପ୍</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ସ୍ପେସ୍ ଖାଲି କରନ୍ତୁ"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"ଇଣ୍ଟର୍ନଲ୍ ଷ୍ଟୋରେଜ୍‌ରେ %s ଅଛି"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ଡାଟାର ବ୍ୟବହାର"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ଆପ୍‌ ଦ୍ୱାରା ଡାଟା ବ୍ୟବହାର"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ଏହି ଆପ୍‌ରେ ଖୋଲନ୍ତୁ ନାହିଁ"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ସମର୍ଥିତ ଲିଙ୍କ୍‌ଗୁଡ଼ିକ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ଆପଗୁଡ଼ିକ"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ଏବେ ଖୋଲିଛି"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"ସମସ୍ତ %1$dଟି ଆପ୍ ଦେଖନ୍ତୁ"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"ଅନୁମତି ପରିଚାଳକ"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"ଆପଣଙ୍କ ଡାଟାକୁ ଆପର ଆକ୍ସେସ୍ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant ଏବଂ ଆହୁରି ଅଧିକ ପାଇଁ"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"ସିଷ୍ଟମ୍ ଏବଂ ଅନ୍ୟ ସେଟିଂସ୍ ପାଇଁ"</string>
     <string name="special_access" msgid="5730278220917123811">"ସ୍ବତନ୍ତ୍ର ଆପ୍ ଆକ୍‍‍ସେସ୍ କରନ୍ତୁ"</string>
     <string name="show_system" msgid="4401355756969485287">"ସିଷ୍ଟମ୍ ଦେଖାନ୍ତୁ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ସିଷ୍ଟମ୍‌କୁ ଲୁଚାନ୍ତୁ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ସିଷ୍ଟମ୍ ଆପଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"ସିଷ୍ଟମ୍ ସେଟିଂସ୍ ବଦଳାନ୍ତୁ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ଏହି ଅନୁମତି କୌଣସି ଆପ୍‍କୁ ସିଷ୍ଟମ୍ ସେଟିଂସ୍ ବଦଳାଇବାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"ବିଜ୍ଞପ୍ତି ଆକ୍ସେସ୍"</string>
@@ -357,9 +382,14 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"କୌଣସି ନିକଟର ଲୋକେସନ୍‍ ଅନୁରୋଧ ହୋଇନାହିଁ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ଆପ୍‌-ସ୍ତରୀୟ ଅନୁମତି"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ଲୋକେସନ୍‌ ସମ୍ପର୍କିତ ସେବା"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ଲୋକେସନ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ସିଷ୍ଟମ୍‌"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"ସିଷ୍ଟମ୍‌ ଅପ୍‌ଡେଟ୍"</string>
-    <string name="firmware_version" msgid="8491753744549309333">"Android ସଂସ୍କରଣ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"ଉନ୍ନତ"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ଏହା ବିଷୟରେ, ଆଇନଗତ ସୂଚନା, ରିସେଟ୍ ଏବଂ ଆହୁରି ଅଧିକ"</string>
+    <string name="firmware_version" msgid="8491753744549309333">"Android ଭର୍ସନ୍‌"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ସୁରକ୍ଷା ପାଚ୍‌ ସ୍ତର"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ମଡେଲ୍ ଓ ହାର୍ଡୱେୟାର୍"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"ମଡେଲ୍: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
@@ -378,8 +408,8 @@
     <string name="legal_information" msgid="1838443759229784762">"ଆଇନ ସୂଚନା"</string>
     <string name="contributors_title" msgid="7698463793409916113">"ଅବଦାନକାରୀ"</string>
     <string name="manual" msgid="4819839169843240804">"ମାନୁଆଲ୍‌"</string>
-    <string name="regulatory_labels" msgid="3165587388499646779">"ନିୟାମକ ଲେବଲଗୁଡ଼ିକ"</string>
-    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"ସୁରକ୍ଷା ଓ ନିୟାମକ ମାନୁଆଲ୍"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"ରେଗୁଲେଟରୀ ଲେବଲ୍ସ"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"ସୁରକ୍ଷା ଓ ନିୟାମକ ପୁସ୍ତିକା"</string>
     <string name="copyright_title" msgid="4220237202917417876">"କପୀରାଇଟ୍‌"</string>
     <string name="license_title" msgid="936705938435249965">"ଲାଇସେନ୍ସ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ନିୟମ ଓ ସର୍ତ୍ତାବଳୀ"</string>
@@ -400,7 +430,7 @@
     <string name="show_dev_on" msgid="5339077400040834808">"ବର୍ତ୍ତମାନ ଆପଣ ଜଣେ ଡେଭେଲପର୍‌ ଅଟନ୍ତି!"</string>
     <string name="show_dev_already" msgid="1678087328973865736">"ଆବଶ୍ୟକତା ନାହିଁ, ଆପଣ ଜଣେ ଡେଭେଲପର୍‍ ଅଟନ୍ତି।"</string>
     <string name="developer_options_settings" msgid="1530739225109118480">"ଡେଭ୍‌ଲପର୍‌ମାନଙ୍କ ପାଇଁ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
-    <string name="reset_options_title" msgid="4388902952861833420">"ରିସେଟ୍‌ କରିବାର ବିକଳ୍ପଗୁଡ଼ିକ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ରିସେଟ୍‌ କରିବାର ବିକଳ୍ପମାନ"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"ନେଟ୍‌ୱାର୍କ, ଆପ୍‌, କିମ୍ବା ଡିଭାଇସ୍‌ ରିସେଟ୍‍"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"ନେଟ୍‍ୱାର୍କ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
     <string name="reset_network_desc" msgid="602381374544634925">"ଏହା ସମସ୍ତ ନେଟ୍‍ୱାର୍କ ସେଟିଂକୁ ରିସେଟ୍‍ କରିବ, ଅନ୍ତର୍ଭୁକ୍ତ ଅଟେ:"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ଏହା ନିମ୍ନରେ ଥିବା ସମସ୍ତ ପସନ୍ଦକୁ ରିସେଟ୍‍ କରିବ:\n\n"<li>" ଅକ୍ଷମ କରାଯାଇଥିବା ଆପ୍ସ"</li>\n<li>" ଅକ୍ଷମ କରାଯାଇଥିବା ଆପ୍‍ ବିଜ୍ଞପ୍ତି"</li>\n<li>" କାର୍ଯ୍ୟ ପାଇଁ ଡିଫଲ୍ଟ ଆପ୍ଲିକେସନ୍‍"</li>\n<li>" ଆପ୍ସ ପାଇଁ ବ୍ୟାକଗ୍ରାଉଣ୍ଡ ଡାଟା ପ୍ରତିବନ୍ଧକ"</li>\n<li>" ଯେ କୌଣସି ଅନୁମତି ପ୍ରତିବନ୍ଧକ"</li>\n\n"ଆପଣ କୌଣସି ଆପ୍‍ ଡାଟା ହରାଇବେ ନାହିଁ।"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ଆପ୍ସ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ଆପ୍‍ ଅଗ୍ରାଧିକାର ରିସେଟ୍‍ ହୋଇଛି"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ସମସ୍ତ ଡାଟା ଲିଭାନ୍ତୁ (ଫ୍ୟାକ୍ଟୋରୀ ରିସେଟ୍‌)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ଏହା ଆପଣଙ୍କ ବାହାନର ମୁଖ୍ୟ ଭାଗରୁ ସମସ୍ତ ଡାଟା ଖାଲି କରିଦେବ, ଯେପରିକି:\n\n"<li>"ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ"</li>\n<li>"ସିିିିଷ୍ଟମ୍‍ ଏବଂ ଆପ୍‍ ଡାଟା ଏବଂ ସେଟିଂସ୍‍"</li>\n<li>"ଡାଉନ୍‍‍ଲୋଡ୍‍ କରାଯାଇଥିବା ଆପ୍ସ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ଆପଣଙ୍କ ବର୍ତ୍ତମାନ ନିମ୍ନୋକ୍ତ ଆକାଉଣ୍ଟକୁ ସାଇନ୍ ଇନ୍ ହୋଇଛନ୍ତି:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ଏହି ବାହନରେ ଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାମାନେ ଅଛନ୍ତି।"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ବାହାନ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ରିସେଟ୍‌ କରିବେ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ନିଜର ସମସ୍ତ ବ୍ୟକ୍ତିଗତ ସୂଚନା ଏବଂ ଡାଉନ୍‌ଲୋଡ୍‌ କରିଥିବା ଆପ୍‌ଗୁଡ଼ିକୁ ଲିଭାଇ ଦେବେ? ଏହି କାମକୁ ଆପଣ ପୂର୍ବାବସ୍ଥାକୁ ଫେରାଇ ଆଣିପାରିବେ ନାହିଁ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ସବୁକିଛି ଖାଲି କରିଦିଅନ୍ତୁ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"ଲିଭାଉଛି"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"ଦୟାକରି ଅପେକ୍ଷା କରନ୍ତୁ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ସବୁ ଡାଟା ଖାଲି କରନ୍ତୁ (ଫ୍ୟାକ୍ଟୋରୀ ରିସେଟ୍)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ଇନଫୋଟେନମେଣ୍ଟ ସିଷ୍ଟମରୁ ସମସ୍ତ ଡାଟା ଏବଂ ପ୍ରୋଫାଇଲକୁ ଡିଲିଟ୍ କରନ୍ତୁ"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"ଏହା, ଆପଣଙ୍କ ଗାଡ଼ିର ଇନଫୋଟେନମେଣ୍ଟ ସିଷ୍ଟମର ସମସ୍ତ ଡାଟା ଖାଲି କରିବ:\n\n"<li>"ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ"</li>\n<li>"ସିଷ୍ଟମ ଏବଂ ଆପ୍ ଡାଟା ଓ ସେଟିଂସ୍"</li>\n<li>"ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଆପଗୁଡ଼ିକ"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ଆପଣ ବର୍ତ୍ତମାନ ନିମ୍ନୋକ୍ତ ଆକାଉଣ୍ଟଗୁଡ଼ିକରେ ସାଇନ୍ ଇନ୍ କରିଛନ୍ତି:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ଏହି ଗାଡ଼ିରେ ଅନ୍ୟ ପ୍ରୋଫାଇଲଗୁଡ଼ିକ ଅଛି।"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ସମସ୍ତ ଡାଟା ଖାଲି କରନ୍ତୁ"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ସମସ୍ତ ଡାଟା ଖାଲି କରିବେ?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ଏହା ଆପଣଙ୍କର ସମସ୍ତ ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲ୍ ଡାଟା, ଆକାଉଣ୍ଟ ଏବଂ ଏହି ଇନଫୋଟେନମେଣ୍ଟ ସିଷ୍ଟମରେ ଡାଉନଲୋଡ୍ କରାଯାଇଥିବା ଆପକୁ ଡିଲିଟ୍ କରିବ।\n\nଆପଣ ଏହି କାର୍ଯ୍ୟକୁ ପୂର୍ବବତ୍ କରିପାରିବେ ନାହିଁ।"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ସବୁକିଛି ଖାଲି କରନ୍ତୁ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"ଖାଲି କରାଯାଉଛି"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"ଦୟାକରି ଅପେକ୍ଷା କରନ୍ତୁ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ତାରିଖ ଓ ସମୟ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ତାରିଖ, ସମୟ, ସମୟ ଅଞ୍ଚଳ, ଓ ଫର୍ମାଟ୍‌ ସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ଅଟୋମେଟିକ୍ ତାରିଖ ଓ ସମୟ"</string>
@@ -441,7 +472,7 @@
     <string name="date_time_set_time_title" msgid="5884883050656937853">"ସମୟ"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"ସମୟ ସେଟ୍ କରନ୍ତୁ"</string>
     <string name="date_time_set_timezone_title" msgid="3001779256157093425">"ଟାଇମ୍‌ ଜୋନ୍‌"</string>
-    <string name="date_time_set_timezone" msgid="4759353576185916944">"ଟାଇମ୍ ଜୋନ୍ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"ସମୟ କ୍ଷେତ୍ର ବାଛନ୍ତୁ"</string>
     <string name="date_time_set_date_title" msgid="6834785820357051138">"ତାରିଖ"</string>
     <string name="date_time_set_date" msgid="2537494485643283230">"ତାରିଖ ସେଟ୍‍ କରନ୍ତୁ"</string>
     <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"ବର୍ଣ୍ଣାନୁକ୍ରମିକ ସର୍ଟ୍ କରନ୍ତୁ"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ଆଡ୍‍ମିନ୍‍ ଭାବରେ ସାଇନ୍‍ ଇନ୍‍ କରିଛନ୍ତି"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ସମସ୍ତ ଆଡ୍‌ମିନ୍‌ ଅନୁମତିଗୁଡିକ"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ଆଡ୍‍ମିନ୍‍ କରନ୍ତୁ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ଉପଯୋଗକର୍ତ୍ତାଗଣ ଅନ୍ୟ ଆଡ୍‌ମିନ୍‌, ଏବଂ ଫ୍ୟାକ୍ଟେରୀ ରିସେଟ୍‌ ସିଷ୍ଟମ୍‌ ସହ, ଉପଯୋଗକର୍ତ୍ତାଗଣଙ୍କୁ ଡିଲିଟ୍‌ କରିପାରିବେ।"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"ଏହି ପ୍ରୋଫାଇଲ୍ ଅନ୍ୟ ଆଡମିନ୍ ସମେତ ପ୍ରୋଫାଇଲଗୁଡ଼ିକୁ ଡିଲିଟ୍ କରିବାକୁ ଏବଂ ସିଷ୍ଟମର ଫ୍ୟାକ୍ଟୋରୀ ରିସେଟ୍ କରିବାକୁ ସକ୍ଷମ ହେବ।"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ଏହି କାର୍ଯ୍ୟକୁ ଫେରାଇ ନେଇ ହେବ ନାହିଁ।"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ହଁ, ଆଡ୍‍ମି‍ନ୍‍ କରନ୍ତୁ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରନ୍ତୁ"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"ନୂଆ ପ୍ରୋଫାଇଲଗୁଡ଼ିକ ତିଆରି କରନ୍ତୁ"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ଫୋନ୍ କଲ୍‌ କରନ୍ତୁ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"କାର୍\'ର ମୋବାଇଲ୍ ଡାଟା ମାଧ୍ୟମରେ ମେସେଜିଂ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ନୂଆ ଆପ୍ସ ଇନ୍‌ଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ଆପ୍‌ଗୁଡ଼ିକ ଅନ୍‌ଇଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ୟୁଜର୍‍ଙ୍କୁ ଯୋଡ଼ନ୍ତୁ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ନୂଆ ୟୁଜର୍‌"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ନୂତନ ୟୁଜର୍‍ ଯୋଡ଼ିବେ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ଜଣେ ନୂଆ ୟୁଜର୍‍ଙ୍କୁ ଯୋଡ଼ିବାବେଳେ, ସେହି ବ୍ୟକ୍ତି ତାଙ୍କ ସ୍ଥାନ ସେଟ୍‍ ଅପ୍‌ କରିବା ଆବଶ୍ୟକ କରନ୍ତି।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ସମସ୍ତ ୟୁଜର୍‌ଙ୍କ ପାଇଁ ଯେକୌଣସି ୟୁଜର୍‌ ଆପ୍‌ ଅପଡେଟ୍‌ କରିପାରିବେ।"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ଉପଯୋଗକର୍ତ୍ତା ସୀମାରେ ପହଞ୍ଚିଛି"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">ଆପଣ <xliff:g id="COUNT">%d</xliff:g> ଜଣ ପର୍ଯ୍ୟନ୍ତ ବ୍ୟବହାରକାରୀ ତିଆରି କରିହେବ।</item>
-      <item quantity="one">କେବଳ ଜଣେ ବ୍ୟବହାରକାରୀ ତିଆରି କରିହେବ।</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"ନୂଆ ପ୍ରୋଫାଇଲ୍"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"ନୂଆ ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରିବେ?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ଯେତେବେଳେ ଆପଣ ଏକ ନୂଆ ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରନ୍ତି, ସେହି ବ୍ୟକ୍ତିଙ୍କୁ ତାଙ୍କ ସ୍ଥାନ ସେଟ୍ ଅପ୍ କରିବାକୁ ହୁଏ।"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ଯେ କୌଣସି ପ୍ରୋଫାଇଲ୍ ଅନ୍ୟ ସମସ୍ତ ପ୍ରୋଫାଇଲ୍ ପାଇଁ ଆପଗୁଡ଼ିକୁ ଅପଡେଟ୍ କରିପାରିବ।"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"ଅଧିକ ପ୍ରୋଫାଇଲ୍ ପାଇଁ ଅନୁମତି ନାହିଁ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">ଆପଣ <xliff:g id="COUNT">%d</xliff:g>ଟି ପର୍ଯ୍ୟନ୍ତ ପ୍ରୋଫାଇଲ୍ ତିଆରି କରିପାରିବେ।</item>
+      <item quantity="one">କେବଳ ଗୋଟିଏ ପ୍ରୋଫାଇଲ୍ ତିଆରି କରାଯାଇପାରିବ।</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହୋଇପାରିଲା ନାହିଁ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ଏହି ୟୁଜର୍‍ ଡିଲିଟ୍‍ କରିବେ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ସମସ୍ତ ଏପ୍ସ ଓ ଡାଟା ଡିଲିଟ୍‍ କରିଦିଆ ଯିବ।"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ଉପଯୋଗକର୍ତ୍ତା ଡିଲିଟ୍‍ କରିପାରିଲା ନାହିଁ।"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"ଏକ ନୂଆ ପ୍ରୋଫାଇଲ ତିଆରି କରିବାରେ ବିଫଳ ହୋଇଛି"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ଏହି ପ୍ରୋଫାଇଲକୁ ଡିଲିଟ୍ କରିବେ?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ଏହି ପ୍ରୋଫାଇଲ୍ ପାଇଁ ସମସ୍ତ ଆପ୍ ଏବଂ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ପ୍ରୋଫାଇଲ୍ ଡିଲିଟ୍ କରିବାରେ ବିଫଳ ହୋଇଛି।"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ଆପଣ ପ୍ରୋଫାଇଲ୍ ସ୍ୱିଚ୍ କଲେ କିମ୍ବା ଗାଡ଼ିକୁ ରିଷ୍ଟାର୍ଟ କଲେ ଏହି ପ୍ରୋଫାଇଲ୍ ଡିଲିଟ୍ ହୋଇଯିବ।"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ଖାରଜ କରନ୍ତୁ"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ବିଗତ ୟୁଜର୍ ଡିଲିଟ୍‍ କରିବେ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ଏହି କାର୍‍ ପାଇଁ କେବଳ ବାକିରହିଥିବା ଉପଯୋଗକର୍ତ୍ତା ଡିଲିଟ୍‍ କରିବା ପରେ, ଜଣେ ନୂଆ ଆଡ୍‍ମିନ୍‍ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହେବ।"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ସମସ୍ତ ଡାଟା, ସେଟିଂସ, ଏବଂ ଆପ୍‍ ଏହି ଉପଯୋଗକର୍ତ୍ତା ସହିତ ସହଭାଗୀ ହୋଇଥିବ ତାହା ଡିଲିଟ୍‍ ହେବ। ଆପଣଙ୍କୁ ପୁଣି ଏକ ସିଷ୍ଟମ୍‍ ସେଟ୍‍ ଅପ୍‍ କରିବା ଆବଶ୍ୟକ ଅଟେ।"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"ବାକି ଥିବା ଏକମାତ୍ର ପ୍ରୋଫାଇଲ୍ ଡିଲିଟ କରିବେ?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"ଯଦି ଆପଣ ଏହି ଗାଡ଼ି ପାଇଁ କେବଳ ବାକି ଥିବା ପ୍ରୋଫାଇଲକୁ ଡିଲିଟ୍ କରନ୍ତି, ତେବେ ଏହି ପ୍ରୋଫାଇଲ୍ ସହ ସମ୍ବନ୍ଧିତ ସମସ୍ତ ଡାଟା, ସେଟିଂସ୍ ଏବଂ ଆପଗୁଡ଼ିକ ଡିଲିଟ୍ ହୋଇଯିବ।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"ରିସେଟ୍ ହେବା ପରେ, ଆପଣ ଏକ ନୂଆ ପ୍ରୋଫାଇଲ୍ ସେଟ୍ ଅପ୍ କରିପାରିବେ।"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"ନୂଆ ଆଡ୍‌ମିନ୍‌ ବାଛନ୍ତୁ"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ଆପଣ ଅତିକମ୍‍ରେ ଜଣେ ଆଡ୍‌ମିନ୍‌ ଆବଶ୍ଯକ କରନ୍ତି। ଏହା ଡିଲିଟ୍‍ କରିବାକୁ, ପ୍ରଥମେ ଏକ ପ୍ରତ୍ୟାବର୍ତ୍ତନ ବାଛନ୍ତୁ।"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ଆଡ୍‌ମିନ୍‌ ବାଛନ୍ତୁ"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"ଆପଣ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ନାମ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ସେଟ୍ ହୋଇନାହିଁ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ୟୁଜର୍‍ ନାମକୁ ଏଡିଟ୍ କରନ୍ତୁ"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ପ୍ରୋଫାଇଲ୍ ନାମ ଏଡିଟ୍ କରନ୍ତୁ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ନାମ ଲେଖିବା ସ୍ଥାନକୁ ଖାଲି ଛାଡ଼ି ହେବନାହିଁ।"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ଲେଖାଯାଇଥିବା ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନାମ ଅବୈଧ ଅଟେ।"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ଲେଖାଯାଇଥିବା ପ୍ରୋଫାଇଲ୍ ନାମ ଅବୈଧ ଅଟେ।"</string>
     <string name="users_list_title" msgid="770764290290240909">"ୟୁଜର୍"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"ପ୍ରୋଫାଇଲଗୁଡ଼ିକ"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ପାଇଁ ଅନୁମତି ଅନୁମୋଦିତ ହୋଇଛି"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ଷ୍ଟୋରେଜ୍"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"ମ୍ୟୁଜିକ୍‌ ଓ ଅଡିଓ"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ଅଡିଓ ଫାଇଲ୍‌ଗୁଡ଼ିକ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ଗଣନା କରାଯାଉଛି…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ଆପ୍‌ର ଆକାର"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ଉପଯୋଗକର୍ତ୍ତା ଡାଟା"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ପ୍ରୋଫାଇଲ୍ ଡାଟା"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"କ୍ୟାଶ୍"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"ମୋଟ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ଷ୍ଟୋରେଜ୍ ଖାଲି କରନ୍ତୁ"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ସିଙ୍କ୍‌ ବାତିଲ୍‌‌ କରନ୍ତୁ"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ସମ୍ପ୍ରତି ସିଙ୍କ କରିବାରେ ସମସ୍ୟା ହେଉଛି। ଏହା ଖୁବ୍‌ ଶୀଘ୍ର ଫେରିବ।"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ଗୋପନୀୟତା"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ଗାଡ଼ିର ଡାଟା"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"ଆପଣଙ୍କ ଲୋକେସନକୁ ଆପର ଆକ୍ସେସ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"ମାଇକ୍ରୋଫୋନ୍"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"ମାଇକ୍ରୋଫୋନକୁ ଆପ୍ ଆକ୍ସେସ୍ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ଗାଡ଼ିର ଡାଟା"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"କାର୍ଯ୍ୟକଳାପ ଏବଂ ଏହି ଡିଭାଇସରେ ସେଭ୍ କରାଯାଇଥିବା ସୂଚନାକୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ ଡିଲିଟ୍ କରନ୍ତୁ"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ଇନଫୋଟେନମେଣ୍ଟ ସିଷ୍ଟମରୁ ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ ଏବଂ ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ ଡିଲିଟ୍ କରନ୍ତୁ"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ ପାଇଁ ଏହି କାର୍ଯ୍ୟ ଅନୁପଲବ୍ଧ ଅଟେ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ସୁରକ୍ଷା"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ସ୍କ୍ରୀନ୍‌ ଲକ୍‌"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"କିଛି ନାହିଁ"</string>
@@ -570,7 +612,7 @@
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"ଏକ ଅନଲକ ପାଟର୍ନ ଆଙ୍କନ୍ତୁ"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"ହୋଇଯିବା ପରେ ଆଙ୍ଗୁଠି କାଢ଼ିଦିଅନ୍ତୁ"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"ପାଟର୍ନ ରେକର୍ଡ ହେଲା"</string>
-    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"ସୁନିଶ୍ଚିତ କରିବାକୁ ପାଟର୍ନ ପୁଣି ଡ୍ର କରନ୍ତୁ"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"ନିଶ୍ଚିତ କରିବାକୁ ପାଟର୍ନ ପୁନଃ ଅଙ୍କନ କରନ୍ତୁ"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"ଅତିକମରେ 4ଟି ଡଟ୍ ଯୋଗ କରନ୍ତୁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"ଭୁଲ ପାଟର୍ନ"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"ଏକ ଅନ୍‌ଲକ୍‌ ପାଟର୍ନ କିପରି ଅଙ୍କାଯିବ"</string>
@@ -579,19 +621,21 @@
     <string name="okay" msgid="4589873324439764349">"ଓକେ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ସ୍କ୍ରୀନ ଲକ୍ ରିମୁଭ୍‍ କରିବେ କି?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ଏହା ଯେକୌଣସି ବ୍ୟକ୍ତି ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ପ୍ରବେଶ ପାଇଁ ଅନୁମତି ଦେବ"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ପ୍ରୋଫାଇଲ୍ ଲକ୍"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ସ୍ୱଚାଳିତ ଅନଲକ୍ କରିବା ପ୍ରକ୍ରିୟା ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ନିଜର PIN ଲେଖନ୍ତୁ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ନିଜ ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ସୁରକ୍ଷା ପାଇଁ, ଏକ PIN ସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="confirm_your_pin_header" msgid="9096581288537156102">"ନିଜ PIN ପୁଣି ପ୍ରବେଶ କରନ୍ତୁ"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PINରେ ଅତିକମ୍‌ରେ 4ଟିଅଙ୍କ ରହିବା ଦରକାର"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pin ଅମାନ୍ୟ ଅଟେ, ଅତିକମରେ 4ଟି ସଂଖ୍ୟା ରହିବା ଆବଶ୍ୟକ।"</string>
-    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PINଗୁଡ଼ିକ ମେଳ ହେଉନାହିଁ"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PINଗୁଡିକ ମେଳ ଖାଉ ନାହିଁ"</string>
     <string name="error_saving_lockpin" msgid="9011960139736000393">"PIN ସେଭ୍‌ କରିବାରେ ତ୍ରୁଟି"</string>
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"ଭୁଲ PIN"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"ଭୁଲ ପାସ୍‌ୱର୍ଡ"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"ସୁରକ୍ଷା ପାଇଁ ଗୋଟିଏ ପାସ୍‌ୱର୍ଡ ସେଟ୍‌ କରନ୍ତୁ"</string>
     <string name="confirm_your_password_header" msgid="7052891840366724938">"ପାସ୍‌ୱର୍ଡ ପୁନଃ-ପ୍ରବେଶ କରନ୍ତୁ"</string>
-    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"ପାସୱାର୍ଡଗୁଡ଼ିକ ମେଳ ହେଉନାହିଁ"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"ପାସ୍‌ୱର୍ଡ ମେଳ ଖାଉନାହିଁ"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"ଖାଲି କରନ୍ତୁ"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"ବାତିଲ୍ କରନ୍ତୁ"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"ନିଶ୍ଚିତ"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> ଅଙ୍କରୁ କମ୍‌ ରହିବା ଦରକାର"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"କେବଳ 0-9 ପର୍ଯ୍ୟନ୍ତ ସଂଖ୍ୟା ରହିବା ଦରକାର"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ଏକ ସାମ୍ପ୍ରତିକ ପିନ୍‌ର ବ୍ୟବହାରକୁ ଡିଭାଇସ୍‌ ଆଡ୍‌ମିନ୍‌ ଅନୁମତି ଦେବନାହିଁ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ସାଧାରଣ PINଗୁଡିକ ଆପଣଙ୍କ IT ଆଡମିନ୍‌ଙ୍କ ଦ୍ୱାରା ଅବରୋଧ କରିଦିଆଯାଇଛି। ଭିନ୍ନ PIN ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ସାଧାରଣ PINଗୁଡିକ ଆପଣଙ୍କ IT ଆଡମିନ୍‌ଙ୍କ ଦ୍ୱାରା ଅବରୋଧ କରିଦିଆଯାଇଛି। ଭିନ୍ନ PIN ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ଏହା ଗୋଟିଏ ଭୁଲ ଅକ୍ଷରକୁ ଯୋଡ଼ିପାରିବନାହିଁ"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ପାସ୍‍ୱର୍ଡ ଭୁଲ ଅଟେ, ଅତିକମ୍‌ରେ 4 ଅକ୍ଷର ରହିବା ଦରକାର।"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ଏକ ସମ୍ପ୍ରତି ପାସ୍‌ୱର୍ଡ ବ୍ୟବହାର କରିବାକୁ ଡିଭାଇସ୍‌ ଆଡମିନ୍‌ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"ପାସୱର୍ଡ ସେଭ୍‌ କରିବାରେ ତ୍ରୁଟି"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ଆପଣଙ୍କର ଆଇଟି ଆଡ୍‌ମିନ୍‌ ଦ୍ୱାରା ସାଧାରଣ ପାସ୍‌ୱର୍ଡଗୁଡ଼ିକୁ ରୋକିଦିଆଯାଇଛି। ଏକ ଭିନ୍ନ ପାସ୍‌ୱର୍ଡ ଦିଅନ୍ତୁ।"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ଆପଣଙ୍କର ଆଇଟି ଆଡ୍‌ମିନ୍‌ ଦ୍ୱାରା ସାଧାରଣ ପାସ୍‌ୱର୍ଡଗୁଡ଼ିକୁ ରୋକିଦିଆଯାଇଛି। ଏକ ଭିନ୍ନ ପାସ୍‌ୱର୍ଡ ଦିଅନ୍ତୁ।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ସଂଖ୍ୟାର କ୍ରମବୃଦ୍ଧି, କ୍ରମହ୍ରାସ, କିମ୍ବା କ୍ରମ ଦୋହରାଇବାର ଅନୁମତି ନାହିଁ।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ସ୍କ୍ରିନ୍‌ ଲକ୍‌ ବିକଳ୍ପ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ଦିନ ପୂର୍ବେ"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"କୀ ଦବାନ୍ତୁ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ଡେମୋରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ଡେମୋ ମୋଡ୍‌ରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ଏହା ଡେମୋ ଆକାଉଣ୍ଟକୁ ଡିଲିଟ୍ କରିଦେବ ଏବଂ ଫ୍ୟାକ୍ଟୋରୀ ଡାଟା ସିଷ୍ଟମ୍‍କୁ ରିସେଟ୍ କରିବ। ସମସ୍ତ ୟୁଜର୍ ଡାଟା ନଷ୍ଟ ହୋ‍ଇଯିବ।"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ଏହା ଡେମୋ ଆକାଉଣ୍ଟକୁ ଡିଲିଟ୍ କରିବ ଏବଂ ସିଷ୍ଟମର ଫ୍ୟାକ୍ଟୋରୀ ଡାଟା ରିସେଟ୍ କରିବ। ସମସ୍ତ ପ୍ରୋଫାଇଲ୍ ଡାଟା ହଜିଯିବ।"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ଡେମୋରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ଖାରଜ କରନ୍ତୁ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ଗାଡ଼ି ଚଲାଇବା ସମୟରେ ଫିଚର୍ ଉପଲବ୍ଧ ହେବ ନାହିଁ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ଗାଡ଼ି ଚଲାଇବା ବେଳେ ଉପଯୋଗକର୍ତ୍ତା ଯୋଗ କରିପାରିବେ ନାହିଁ"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"ଗାଡ଼ି ଚଲାଇବା ବେଳେ ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରିପାରିବେ ନାହିଁ"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant ଓ ଭଏସ୍"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant ଆପ୍"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ସ୍କ୍ରିନରୁ ଟେକ୍ସଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"ସ୍କ୍ରିନ୍ ବିଷୟବସ୍ତୁଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବାକୁ Assistantକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ସ୍କ୍ରିନସଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ସ୍କ୍ରିନ୍ ଛବି ଆକ୍ସେସ୍ କରିବାକୁ Assistantକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ବର୍ତ୍ତମାନ ପଠାଯାଇଥିବା"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"ସବୁ ଆପ୍"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"ପ୍ରୋଫାଇଲ୍ &amp; ଆକାଉଣ୍ଟଗୁଡ଼ିକ"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ଅନ୍ୟ ପ୍ରୋଫାଇଲଗୁଡ଼ିକୁ ପରିଚାଳନା କର"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ଏକ ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ଏହି ପ୍ରୋଫାଇଲକୁ ଡିଲିଟ୍ କରନ୍ତୁ"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 1b925ea..5440064 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"ਡਿਸਪਲੇ"</string>
     <string name="brightness" msgid="2919605130898772866">"ਚਮਕ ਪੱਧਰ"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ਅਨੁਕੂਲ ਚਮਕ"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ਉਪਲਬਧ ਰੋਸ਼ਨੀ ਲਈ ਚਮਕ ਦਾ ਪੱਧਰ ਸੁਯੋਗ ਬਣਾਓ"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"\'ਰਾਤ ਦੀ ਰੋਸ਼ਨੀ\' ਮੋਡ ਚਾਲੂ ਹੈ"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ਸਕ੍ਰੀਨ, ਟੱਚਸਕ੍ਰੀਨ"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ਡਿਮ ਸਕ੍ਰੀਨ, ਟੱਚਸਕ੍ਰੀਨ, ਬੈਟਰੀ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ਡਿਮ ਸਕ੍ਰੀਨ, ਟੱਚਸਕ੍ਰੀਨ, ਬੈਟਰੀ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ਡਿਮ ਸਕ੍ਰੀਨ, ਰਾਤ ਵਾਲਾ ਮੋਡ, ਭਾਹ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ਰਾਤ ਵਾਲਾ ਮੋਡ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ਡਾਟਾ ਵਰਤੋਂ ਚਿਤਾਵਨੀ ਸੈੱਟ ਕਰੋ"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ਡਾਟਾ ਵਰਤੋਂ ਸੀਮਾ ਸੈੱਟ ਕਰੋ"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ਸੈੱਟ ਕਰੋ"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"ਵਾਈ-ਫਾਈ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ਵਾਈ‑ਫਾਈ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ਵਾਈ‑ਫਾਈ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ਨੈੱਟਵਰਕ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ਕਨੈਕਟ ਕਰੋ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ਨੈੱਟਵਰਕ ਰੇਂਜ ਵਿੱਚ ਨਹੀਂ ਹੈ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ਪਾਸਵਰਡ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ਪਾਸਵਰਡ ਦਿਖਾਓ"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ਕਿਰਪਾ ਕਰਕੇ ਨੈੱਟਵਰਕ ਦਾ ਨਾਮ ਦਾਖਲ ਕਰੋ"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ਕੋਈ ਐਪ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਨੂੰ <xliff:g id="TIMEOUT">%1$d</xliff:g> ਸਕਿੰਟਾਂ ਲਈ ਹੋਰ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ \'ਤੇ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੀ ਹੈ।"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਬਲੂਟੁੱਥ ਚਾਲੂ ਕਰਕੇ ਅਤੇ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਨੂੰ <xliff:g id="TIMEOUT">%2$d</xliff:g> ਸਕਿੰਟਾਂ ਲਈ ਹੋਰ ਡੀਵਾਈਸਾਂ \'ਤੇ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੀ ਹੈ।"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ਕੋਈ ਐਪ ਬਲੂਟੁੱਥ ਚਾਲੂ ਕਰਕੇ ਅਤੇ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਨੂੰ <xliff:g id="TIMEOUT">%1$d</xliff:g> ਸਕਿੰਟਾਂ ਲਈ ਹੋਰ ਡੀਵਾਈਸਾਂ \'ਤੇ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੀ ਹੈ।"</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ਬਲੂਟੁੱਥ ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਬੇਨਤੀ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ਜੋੜਾਬੱਧ ਕਰੋ ਅਤੇ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ਬਲੂਟੁੱਥ ਜੋੜਾਬੱਧਕਰਨ ਕੋਡ"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੂਚਨਾ ਧੁਨੀ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਅਲਾਰਮ ਧੁਨੀ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"ਰੱਖਿਅਤ ਕਰੋ"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"ਯੂਨਿਟਾਂਂ"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ਗਤੀ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ਦੂਰੀ"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"ਸਾਰੀਆਂ ਐਪਾਂ ਦਿਖਾਓ"</string>
     <string name="default_applications" msgid="1558183275638697087">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਾਂ"</string>
     <string name="app_permissions" msgid="32799922508313948">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀਆਂ ਐਪਾਂ"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"ਐਪ ਜਾਣਕਾਰੀ"</string>
     <string name="force_stop" msgid="2153183697014720520">"ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰੋ"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ਕੀ ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"ਅਣਸਥਾਪਤ ਕਰੋ"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ਜੇ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ Android ਅਤੇ ਹੋਰ ਐਪਾਂ ਉਸ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰਨ ਜਿਵੇਂ ਇਹਨਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ਐਪ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"ਇਜਾਜ਼ਤਾਂ"</string>
     <string name="notifications_label" msgid="6586089149665170731">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ਸਟੋਰੇਜ ਅਤੇ ਕੈਸ਼ੇ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ਵਰਜਨ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਨਹੀਂ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ਕਿਸੇ ਇਜਾਜ਼ਤਾਂ ਦੀ ਬੇਨਤੀ ਨਹੀਂ ਕੀਤੀ ਗਈ"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ਅਣਵਰਤੀਆਂ ਐਪਾਂ"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਅਣਵਰਤੀ ਐਪ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਅਣਵਰਤੀਆਂ ਐਪਾਂ</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"ਇਜਾਜ਼ਤਾਂ ਹਟਾਓ ਅਤੇ ਜਗ੍ਹਾ ਖਾਲੀ ਕਰੋ"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ ਵਿੱਚ %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ਡਾਟਾ ਵਰਤੋਂ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ਐਪ ਡਾਟਾ ਵਰਤੋਂ"</string>
@@ -306,7 +339,7 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਵਧੀਕ ਇਜਾਜ਼ਤਾਂ</item>
     </plurals>
     <string name="direct_boot_unaware_dialog_message_car" msgid="2857599310518724080">"ਨੋਟ ਕਰੋ: ਰੀਬੂਟ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣਾ ਵਾਹਨ ਅਣਲਾਕ ਨਹੀਂ ਕਰਦੇ ਓਦੋਂ ਤੱਕ ਇਹ ਐਪ ਚਾਲੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
-    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"\'Assistant\' ਅਤੇ ਵੌਇਸ ਇਨਪੁਟ"</string>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"\'ਅਸਿਸਟੈਂਟ\' ਅਤੇ ਵੌਇਸ ਇਨਪੁਟ"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"ਸਹਾਇਕ ਐਪ"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"ਸਕ੍ਰੀਨ ਤੋਂ ਲਿਖਤ ਵਰਤੋ"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"ਸਹਾਇਕ ਐਪ ਨੂੰ ਲਿਖਤ ਵਜੋਂ ਸਕ੍ਰੀਨ ਸਮੱਗਰੀਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿਓ"</string>
@@ -316,7 +349,7 @@
     <string name="autofill_settings_title" msgid="1188754272680049972">"ਆਟੋਫਿਲ ਸੇਵਾ"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"ਕੋਈ ਨਹੀਂ"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"ਚੁਣੀ ਗਈ"</string>
-    <string name="assistant_security_warning" msgid="1844807956967428012">"\'Assistant\' ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਸਣਯੋਗ ਜਾਂ ਐਪਾਂ ਵਿੱਚ ਪਹੁੰਚਯੋਗ ਜਾਣਕਾਰੀ ਸਮੇਤ ਤੁਹਾਡੇ ਸਿਸਟਮ \'ਤੇ ਵਰਤੋਂ ਵਿੱਚ ਐਪਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪੜ੍ਹ ਸਕੇਗੀ।"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"\'ਅਸਿਸਟੈਂਟ\' ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਸਣਯੋਗ ਜਾਂ ਐਪਾਂ ਵਿੱਚ ਪਹੁੰਚਯੋਗ ਜਾਣਕਾਰੀ ਸਮੇਤ ਤੁਹਾਡੇ ਸਿਸਟਮ \'ਤੇ ਵਰਤੋਂ ਵਿੱਚ ਐਪਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪੜ੍ਹ ਸਕੇਗੀ।"</string>
     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"ਸੇਵਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"ਖੋਲ੍ਹੇ ਜਾਣ ਵਾਲੇ ਲਿੰਕ"</string>
@@ -334,9 +367,24 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ਇਸ ਐਪ ਵਿੱਚ ਨਾ ਖੋਲ੍ਹੋ"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ਸਮਰਥਿਤ ਲਿੰਕ"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"ਵਿਸ਼ੇਸ਼ ਐਪ ਪਹੁੰਚ"</string>
     <string name="show_system" msgid="4401355756969485287">"ਸਿਸਟਮ ਦਿਖਾਓ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ਸਿਸਟਮ ਲੁਕਾਓ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ਸਿਸਟਮ ਐਪਾਂ ਨੂੰ ਲੁਕਾਓ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ ਸੋਧੋ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"ਇਹ ਇਜਾਜ਼ਤ ਕਿਸੇ ਐਪ ਨੂੰ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ ਸੋਧਣ ਦਿੰਦੀ ਹੈ।"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"ਸੂਚਨਾ ਪਹੁੰਚ"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ਕੋਈ ਹਾਲੀਆ ਟਿਕਾਣਾ ਬੇਨਤੀਆਂ ਨਹੀਂ"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ਐਪ-ਪੱਧਰ ਇਜਾਜ਼ਤਾਂ"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ਸਿਸਟਮ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"ਸਿਸਟਮ ਅੱਪਡੇਟ"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"Android ਵਰਜਨ"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ਸੁਰੱਖਿਆ ਪੈਚ ਪੱਧਰ"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ਮਾਡਲ ਅਤੇ ਹਾਰਡਵੇਅਰ"</string>
@@ -383,7 +439,7 @@
     <string name="copyright_title" msgid="4220237202917417876">"ਕਾਪੀਰਾਈਟ"</string>
     <string name="license_title" msgid="936705938435249965">"ਲਾਇਸੰਸ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ"</string>
-    <string name="webview_license_title" msgid="6442372337052056463">"System WebView ਲਾਇਸੰਸ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ਸਿਸਟਮ WebView ਲਾਇਸੰਸ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ਵਾਲਪੇਪਰ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ਉਪਗ੍ਰਹਿ ਇਮੇਜਰੀ ਪ੍ਰਦਾਨਕ:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"ਮਾਡਲ"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ਇੰਝ ਕਰਨ ਨਾਲ ਇਹ ਇਹਨਾਂ ਲਈ ਸਾਰੀਆਂ ਤਰਜੀਹਾਂ ਰੀਸੈੱਟ ਕਰ ਦੇਵੇਗਾ:\n\n"<li>" ਬੰਦ ਕੀਤੀਆਂ ਐਪਾਂ"</li>\n<li>"ਬੰਦ ਕੀਤੀਆਂ ਐਪ ਸੂਚਨਾਵਾਂ"</li>\n<li>"ਕਾਰਵਾਈਆਂ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਲੀਕੇਸ਼ਨਾਂ"</li>\n<li>" ਐਪਾਂ ਲਈ ਬੈਕਗ੍ਰਾਊਂਡ ਡਾਟੇ ਸੰਬੰਧੀ ਪਾਬੰਦੀਆਂ"</li>\n<li>"ਕੋਈ ਵੀ ਇਜਾਜ਼ਤ ਸੰਬੰਧੀ ਪਾਬੰਦੀਆਂ"</li>\n\n"ਤੁਸੀਂ ਕੋਈ ਵੀ ਐਪ ਡਾਟਾ ਨਹੀਂ ਗੁਆਓਗੇ।"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ਐਪਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ਐਪ ਤਰਜੀਹਾਂ ਰੀਸੈੱਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ਸਭ ਡਾਟਾ ਮਿਟਾਓ (ਫੈਕਟਰੀ ਰੀਸੈੱਟ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ਇਹ ਤੁਹਾਡੇ ਵਾਹਨ ਦੀ ਸਕ੍ਰੀਨ ਤੋਂ ਸਾਰਾ ਡਾਟਾ ਮਿਟਾ ਦੇਵੇਗਾ, ਇਹਨਾਂ ਸਮੇਤ:\n\n"<li>"ਤੁਹਾਡਾ Google ਖਾਤਾ"</li>\n<li>"ਸਿਸਟਮ ਅਤੇ ਐਪ ਡਾਟਾ ਅਤੇ ਸੈਟਿੰਗਾਂ"</li>\n<li>"ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਐਪਾਂ"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ਤੁਸੀਂ ਇਸ ਵੇਲੇ ਇਹਨਾਂ ਖਾਤਿਆਂ \'ਤੇ ਸਾਈਨ-ਇਨ ਹੋ:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ਇਸ ਵਾਹਨ \'ਤੇ ਹੋਰ ਵਰਤੋਂਕਾਰ ਮੌਜੂਦ ਨਹੀਂ ਹਨ।"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"ਵਾਹਨ ਰੀਸੈੱਟ ਕਰੋ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ਕੀ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ਕੀ ਆਪਣੀ ਸਾਰੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਅਤੇ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਐਪਾਂ ਮਿਟਾਉਣੀਆਂ ਹਨ? ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀਂ ਕਰ ਸਕਦੇ!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ਸਭ ਕੁਝ ਮਿਟਾਓ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"ਮਿਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ਸਭ ਡਾਟਾ ਮਿਟਾਓ (ਫੈਕਟਰੀ ਰੀਸੈੱਟ)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ਤੁਸੀਂ ਇਸ ਵੇਲੇ ਇਹਨਾਂ ਖਾਤਿਆਂ \'ਤੇ ਸਾਈਨ-ਇਨ ਹੋ:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ਸਭ ਕੁਝ ਮਿਟਾਓ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"ਮਿਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ਤਾਰੀਖ, ਸਮਾਂ, ਸਮਾਂ ਖੇਤਰ ਅਤੇ ਵੰਨਗੀ ਸੈੱਟ ਕਰੋ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ਸਵੈਚਲਿਤ ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ਪ੍ਰਸ਼ਾਸਕ ਵਜੋਂ ਸਾਈਨ ਇਨ ਕੀਤਾ ਗਿਆ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ਸਾਰੀਆਂ ਪ੍ਰਸ਼ਾਸਕ ਇਜਾਜ਼ਤਾਂ"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਓ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ਵਰਤੋਂਕਾਰ ਹੋਰ ਪ੍ਰਸ਼ਾਸਕਾਂ ਸਮੇਤ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਮਿਟਾ ਸਕੇਗਾ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰ ਸਕੇਗਾ।"</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"ਇਹ ਕਾਰਵਾਈ ਪਲਟਾਉਣਯੋਗ ਨਹੀਂ ਹੈ।"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ਹਾਂ, ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਓ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"ਨਵੇਂ ਵਰਤੋਂਕਾਰ ਬਣਾਓ"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ਫ਼ੋਨ ਕਾਲਾਂ ਕਰੋ"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ਕਾਰ ਦੇ ਮੋਬਾਈਲ ਡਾਟੇ ਰਾਹੀਂ ਸੁਨੇਹਾ ਭੇਜਣਾ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ਨਵੀਆਂ ਐਪਾਂ ਸਥਾਪਤ ਕਰੋ"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ਐਪਾਂ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੀਏ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਹੋਰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ।"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਸੀਮਾ ਪੂਰੀ ਹੋਈ"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">ਤੁਸੀਂ <xliff:g id="COUNT">%d</xliff:g> ਵਰਤੋਂਕਾਰ ਬਣਾ ਸਕਦੇ ਹੋ।</item>
-      <item quantity="other">ਤੁਸੀਂ <xliff:g id="COUNT">%d</xliff:g> ਵਰਤੋਂਕਾਰ ਬਣਾ ਸਕਦੇ ਹੋ।</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣਾ ਅਸਫਲ ਰਿਹਾ"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਈਏ?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ਵਰਤੋਂਕਾਰ ਮਿਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ਜਦੋਂ ਤੁਸੀਂ ਪ੍ਰੋਫਾਈਲ ਬਦਲਦੇ ਹੋ ਜਾਂ ਵਾਹਨ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ ਤਾਂ ਇਹ ਪ੍ਰੋਫਾਈਲ ਮਿਟ ਜਾਵੇਗਾ।"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ਪਿਛਲਾ ਵਰਤੋਂਕਾਰ ਮਿਟਾਈਏ?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ਇਸ ਕਾਰ ਦੇ ਇੱਕੋ ਬਚੇ ਹੋਏ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਬਾਅਦ, ਕੋਈ ਨਵਾਂ ਪ੍ਰਸ਼ਾਸਕ ਵਰਤੋਂਕਾਰ ਬਣਾਇਆ ਜਾਵੇਗਾ।"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ਇਸ ਵਰਤੋਂਕਾਰ ਨਾਲ ਸੰਬੰਧਿਤ ਸਾਰੇ ਡਾਟੇ, ਸੈਟਿੰਗਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਹਾਨੂੰ ਦੁਬਾਰਾ ਸਿਸਟਮ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।"</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"ਨਵਾਂ ਪ੍ਰਸ਼ਾਸਕ ਚੁਣੋ"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ਤੁਹਾਨੂੰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਪ੍ਰਸ਼ਾਸਕ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੇ ਬਦਲੇ ਕੋਈ ਹੋਰ ਚੁਣੋ।"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"ਪ੍ਰਸ਼ਾਸਕ ਚੁਣੋ"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"ਤੁਸੀਂ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ਨਾਮ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਹੈ"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"ਵਰਤੋਂਕਾਰ ਨਾਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"ਖੇਤਰ ਭਰਨਾ ਲਾਜ਼ਮੀ ਹੈ।"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ਦਾਖਲ ਕੀਤਾ ਵਰਤੋਂਕਾਰ ਨਾਮ ਅਵੈਧ ਹੈ।"</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"ਵਰਤੋਂਕਾਰ"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ਨੂੰ ਇਜਾਜ਼ਤਾਂ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ਸਟੋਰੇਜ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"ਸੰਗੀਤ ਅਤੇ ਆਡੀਓ"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ਆਡੀਓ ਫ਼ਾਈਲਾਂ"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ਗਣਨਾ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ਐਪ ਦਾ ਆਕਾਰ"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ਵਰਤੋਂਕਾਰ ਡਾਟਾ"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"ਕੈਸ਼ੇ"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"ਕੁੱਲ"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ਸਟੋਰੇਜ ਕਲੀਅਰ ਕਰੋ"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ਸਮਕਾਲੀਕਰਨ ਰੱਦ ਕਰੋ"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ਇਸ ਵੇਲੇ ਸਮਕਾਲੀਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਆ ਰਹੀਆਂ ਹਨ। ਇਹ ਜਲਦੀ ਹੀ ਠੀਕ ਹੋ ਜਾਣਗੀਆਂ।"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ਪਰਦੇਦਾਰੀ"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ਵਾਹਨ ਸੰਬੰਧੀ ਡਾਟਾ"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ਵਾਹਨ ਸੰਬੰਧੀ ਡਾਟਾ"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ਇਸ ਵਾਹਨ \'ਤੇ ਰੱਖਿਅਤ ਕੀਤੀਆਂ ਸਰਗਰਮੀਆਂ ਅਤੇ ਜਾਣਕਾਰੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"ਸੁਰੱਖਿਆ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ਸਕ੍ਰੀਨ ਲਾਕ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ਕੋਈ ਨਹੀਂ"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"ਠੀਕ ਹੈ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ਕੀ ਸਕ੍ਰੀਨ ਲਾਕ ਹਟਾਉਣਾ ਹੈ?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ਇਹ ਕਿਸੇ ਨੂੰ ਤੁਹਾਡੇ ਖਾਤੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਵੇਗਾ"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ਆਪਣਾ ਪਿੰਨ ਦਾਖਲ ਕਰੋ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ਸੁਰੱਖਿਆ ਲਈ, ਇੱਕ ਪਿੰਨ ਸੈੱਟ ਕਰੋ"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> ਤੋਂ ਵਧੇਰੇ ਘੱਟ ਅੰਕਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ਸਿਰਫ਼ 0-9 ਤੱਕ ਅੰਕ ਸ਼ਾਮਲ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ਡੀਵਾਈਸ ਪ੍ਰਸ਼ਾਸਕ ਇੱਕ ਹਾਲੀਆ ਪਿੰਨ ਵਰਤਣ ਨਹੀਂ ਦਿੰਦਾ ਹੈ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ਆਮ ਪਿੰਨ ਤੁਹਾਡੇ IT ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਕੋਈ ਵੱਖਰਾ ਪਿੰਨ ਵਰਤੋ।"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ਆਮ ਪਿੰਨ ਤੁਹਾਡੇ IT ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਕੋਈ ਵੱਖਰਾ ਪਿੰਨ ਵਰਤੋ।"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ਇਸ ਵਿੱਚ ਇੱਕ ਅਵੈਧ ਅੱਖਰ-ਚਿੰਨ੍ਹ ਸ਼ਾਮਲ ਨਹੀਂ ਹੋ ਸਕਦਾ।"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ਪਾਸਵਰਡ ਵੈਧ ਹੈ, ਘੱਟੋ-ਘੱਟ 4 ਅੱਖਰ-ਚਿੰਨ੍ਹਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ਡੀਵਾਈਸ ਪ੍ਰਸ਼ਾਸਕ ਇੱਕ ਹਾਲੀਆ ਪਾਸਵਰਡ ਵਰਤਣ ਨਹੀਂ ਦਿੰਦਾ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ਆਮ ਪਾਸਵਰਡ ਤੁਹਾਡੇ IT ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਕੋਈ ਵੱਖਰਾ ਪਾਸਵਰਡ ਵਰਤੋ।"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ਆਮ ਪਾਸਵਰਡ ਤੁਹਾਡੇ IT ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਕੋਈ ਵੱਖਰਾ ਪਾਸਵਰਡ ਵਰਤੋ।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ਅੰਕਾਂ ਦਾ ਵਧਦਾ ਕ੍ਰਮ, ਘਟਦਾ ਕ੍ਰਮ, ਜਾਂ ਦੁਹਰਾਈ ਗਈ ਲੜੀ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ਸਕ੍ਰੀਨ ਲਾਕ ਦੇ ਵਿਕਲਪ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ਦਿਨ ਪਹਿਲਾਂ"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter ਕੁੰਜੀ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ਡੈਮੋ ਮੋਡ ਤੋ ਬਾਹਰ ਜਾਓ"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ਡੈਮੋ ਮੋਡ ਤੋ ਬਾਹਰ ਜਾਓ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ਇਹ ਡੈਮੋ ਖਾਤੇ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸਿਸਟਮ ਦਾ ਫੈਕਟਰੀ ਡਾਟਾ ਰੀਸੈੱਟ ਹੋ ਜਾਵੇਗਾ। ਸਾਰਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਗੁੰਮ ਹੋ ਜਾਵੇਗਾ।"</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ਡੈਮੋ ਮੋਡ ਤੋ ਬਾਹਰ ਜਾਓ"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ਚਲਦੀ ਗੱਡੀ ਵਿੱਚ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ਚਲਦੀ ਗੱਡੀ ਵਿੱਚ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"ਖੋਜ"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant ਅਤੇ Voice"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 3a8fff3..5a4f287 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Wyświetlacz"</string>
     <string name="brightness" msgid="2919605130898772866">"Poziom jasności"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Automatyczna jasność"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Dostosuj poziom jasności do oświetlenia"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Dopasuj jasność ekranu do otoczenia"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Podświetlenie nocne włączone"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, ekran dotykowy"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"przyciemnij ekran, ekran dotykowy, bateria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"przyciemnij ekran, ekran dotykowy, bateria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"przyciemnij ekran, noc, odcień"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Tryb nocny"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Sieć i internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Sieć komórkowa"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Ustawianie ostrzeżenia o użyciu danych"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Ustawianie limitu użycia danych"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Ustaw"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Sieć OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Między %2$s a %3$s zużyto %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Połącz się z inną siecią"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Ustawienia sieci"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Włączam Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wyłączam Wi-Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nie udało się połączyć z siecią"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj sieć"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Połącz"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Łączę…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Poza zasięgiem sieci"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Hasło"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Pokaż hasło"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Wpisz nazwę sieci"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikacja chce ustawić moduł główny jako wykrywalny dla innych urządzeń Bluetooth przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> chce włączyć Bluetooth i ustawić moduł główny jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%2$d</xliff:g> s."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikacja chce włączyć Bluetooth i ustawić moduł główny jako widoczny dla innych urządzeń przez <xliff:g id="TIMEOUT">%1$d</xliff:g> s."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Urządzenie wyświetla się innym jako %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moje urządzenia"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Wcześniej połączone"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Połączono: %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Odłączono: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Prośba o sparowanie Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sparuj i połącz"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kod parowania Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Domyślny dźwięk powiadomienia"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Domyślny dźwięk alarmu"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Zapisz"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Dźwięki alertu"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Dzwonek, powiadomienia, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Jasność"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Zmniejsz jasność ekranu przy niewielkiej ilości światła"</string>
     <string name="units_settings" msgid="402325305096925886">"Jednostki"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Prędkość"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Odległość"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Pokaż wszystkie aplikacje"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplikacje domyślne"</string>
     <string name="app_permissions" msgid="32799922508313948">"Uprawnienia aplikacji"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacje używające uprawnień: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontroluj dostęp aplikacji do danych"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacje o aplikacji"</string>
     <string name="force_stop" msgid="2153183697014720520">"Wymuś zatrzymanie"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Wymusić zatrzymanie?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Odinstaluj"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jeśli wyłączysz tę aplikację, Android i inne aplikacje mogą działać nieprawidłowo."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Wyłącz aplikację"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Niezainstalowana dla tego użytkownika"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Niezainstalowano w tym profilu"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Uprawnienia"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Powiadomienia"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Miejsce na dane i pamięć podręczna"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Wersja %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Brak przyznanych uprawnień"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Brak próśb o przyznanie uprawnień"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nieużywane aplikacje"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nieużywane aplikacje</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nieużywanych aplikacji</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nieużywanej aplikacji</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nieużywana aplikacja</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Usuń uprawnienia i zwolnij miejsce"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s w pamięci wewnętrznej"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Użycie danych"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Aplikacja – użycie danych"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Zawsze pytaj"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Nie otwieraj w tej aplikacji"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Obsługiwane linki"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacje"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Ostatnio otwierane"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Wyświetlaj wszystkie aplikacje (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Menedżer uprawnień"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontroluj dostęp aplikacji do danych"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"W przypadku Asystenta i nie tylko"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"W przypadku ustawień systemowych i innych"</string>
     <string name="special_access" msgid="5730278220917123811">"Aplikacje ze specjalnym dostępem"</string>
     <string name="show_system" msgid="4401355756969485287">"Pokaż systemowe"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ukryj systemowe"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ukryj aplikacje systemowe"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modyfikowanie ustawień systemu"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Te uprawnienia umożliwiają aplikacji modyfikowanie ustawień systemu."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Dostęp do powiadomień"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Brak ostatnich próśb o lokalizację"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Uprawnienia na poziomie aplikacji"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Usługi lokalizacyjne"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Używaj lokalizacji"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizacje systemu"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Zaawansowane"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informacje, informacje prawne, resetowanie itp."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Wersja Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stan aktualizacji zabezpieczeń Androida"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model i sprzęt"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Zresetuje to wszystkie ustawienia:\n\n"<li>"wyłączonych aplikacji,"</li>\n<li>"wyłączonych powiadomień z aplikacji,"</li>\n<li>"domyślnych aplikacji dla wybranych czynności,"</li>\n<li>"ograniczeń korzystania przez aplikacje z danych w tle,"</li>\n<li>"wszystkich ograniczeń dotyczących uprawnień."</li>\n\n"Nie stracisz żadnych danych aplikacji."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetuj aplikacje"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Ustawienia aplikacji zostały zresetowane"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Wykasuj wszystkie dane"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Zostaną usunięte wszystkie dane z radioodtwarzacza pojazdu, między innymi:\n\n"<li>"Twoje konto Google,"</li>\n<li>"dane i ustawienia aplikacji i systemu,"</li>\n<li>"pobrane aplikacje."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"W tej chwili używasz kont:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"W tym pojeździe są też zapisani inni użytkownicy."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Zresetuj pojazd"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Zresetować?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Wymazać wszystkie Twoje dane osobowe i pobrane aplikacje? Tego działania nie można cofnąć."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Wymaż wszystko"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wymazuję"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Zaczekaj…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Wykasuj wszystkie dane"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Usuń wszystkie dane i profile z systemu multimedialno-rozrywkowego"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Spowoduje to usunięcie wszystkich danych z systemu multimedialno-rozrywkowego w pojeździe, w tym:\n\n"<li>"Twojego konta Google,"</li>\n<li>"danych i ustawień aplikacji i systemu,"</li>\n<li>"pobranych aplikacji."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"W tej chwili używasz kont:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"W tym pojeździe są też zapisane inne profile."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Usuń wszystkie dane"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Usunąć wszystkie dane?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Spowoduje to usunięcie wszystkich danych, kont i pobranych aplikacji z profilu osobistego w tym systemie multimedialno-rozrywkowym.\n\nTej czynności nie można cofnąć."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Wymaż wszystko"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Kasuję"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Czekaj…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data i godzina"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ustaw datę, godzinę, strefę czasową i formaty."</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatyczna data i godzina"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Zalogowano jako administratora"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Wszystkie uprawnienia administratora"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Przyznaj uprawnienia administratora"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Użytkownik będzie mógł usuwać innych użytkowników (również administratorów) i przywracać ustawienia fabryczne systemu."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil będzie mógł usuwać inne profile (również administratorów) i przywracać ustawienia fabryczne systemu."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Tego działania nie można cofnąć."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Tak, przyznaj uprawnienia administratora"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Tworzenie nowych użytkowników"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Utwórz nowe profile"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Dzwonienie"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Wysyłanie SMS-ów przez sieć pojazdu"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalowanie nowych aplikacji"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinstalowywanie aplikacji"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj użytkownika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nowy użytkownik"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodać nowego użytkownika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Gdy dodasz nowego użytkownika, musi on skonfigurować swój profil."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Każdy użytkownik może aktualizować aplikacje wszystkich innych użytkowników."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Osiągnięto limit użytkowników"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="few">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkowników.</item>
-      <item quantity="many">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkowników.</item>
-      <item quantity="other">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkownika.</item>
-      <item quantity="one">Można utworzyć tylko jednego użytkownika.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Dodaj profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nowy profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Dodać nowy profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Gdy dodasz nowy profil, jego właściciel będzie musiał go skonfigurować."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Każdy profil może aktualizować aplikacje we wszystkich innych profilach."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Osiągnięto limit liczby profili"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="few">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> profile.</item>
+      <item quantity="many">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> profili.</item>
+      <item quantity="other">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> profilu.</item>
+      <item quantity="one">Możesz utworzyć tylko 1 profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Nowy użytkownik nie został utworzony"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Usunąć tego użytkownika?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Zostaną usunięte wszystkie aplikacje i dane."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Nie udało się usunąć użytkownika."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nie udało się utworzyć nowego profilu"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Usunąć ten profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Wszystkie aplikacje i dane z tego profilu zostaną usunięte"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Nie udało się usunąć profilu."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ten profil zostanie usunięty, gdy przełączysz się na inny profil lub ponownie uruchomisz pojazd."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zamknij"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Ponów"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Usunąć użytkownika?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Usunięcie ostatniego aktywnego użytkownika tego samochodu spowoduje utworzenie nowego administratora."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Zostaną usunięte wszystkie dane, ustawienia i aplikacje powiązane z tym użytkownikiem. Konieczne będzie ponowne skonfigurowanie systemu."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Usunąć ostatni profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Jeśli w tym samochodzie usuniesz ostatni profil, wszystkie dane, ustawienia i aplikacje powiązane z tym profilem zostaną usunięte."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Po zresetowaniu możesz założyć nowy profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Wybierz nowego administratora"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrzebujesz co najmniej jednego administratora. Aby usunąć tego, najpierw wybierz jego następcę."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Wybierz administratora"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ty (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nazwa"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nieskonfigurowany"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Edytowanie nazwy użytkownika"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edytuj nazwę w profilu"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Pole nie może być puste."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Podana nazwa użytkownika jest nieprawidłowa."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Nazwa profilu jest nieprawidłowa."</string>
     <string name="users_list_title" msgid="770764290290240909">"Użytkownicy"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profile"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Uprawnienia użytkownika %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Miejsce na dane"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzyka i nagrania audio"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Pliki audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Obliczam…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Rozmiar aplikacji"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dane użytkownika"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dane profilowe"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Pamięć podręczna"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Razem"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Wyczyść pamięć"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anuluj synchronizację"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Podczas synchronizacji wystąpiły problemy. Zostanie ona wkrótce wznowiona."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Prywatność"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dane w pojeździe"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontroluj dostęp aplikacji do lokalizacji"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontroluj dostęp aplikacji do mikrofonu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dane w pojeździe"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Zarządzaj aktywnością i informacjami zapisywanymi w tym pojeździe"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Usuń swój profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Usuń swoje profile i konta z systemu multimedialno-rozrywkowego"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"W Twoim profilu nie można wykonać tego działania"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpieczenia"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blokada ekranu"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Brak"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Usunąć blokadę ekranu?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Każdy będzie mógł mieć dostęp do Twojego konta"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Blokada profilu"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Skonfiguruj automatyczne odblokowywanie"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Wpisz kod PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Wpisz hasło"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Ze względów bezpieczeństwa ustaw kod PIN"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Musi mieć mniej cyfr niż <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Może zawierać tylko cyfry od 0 do 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administrator urządzenia nie zezwala na ustawianie niedawno używanego kodu PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Popularne kody PIN zostały zablokowane przez administratora. Użyj innego kodu PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Popularne kody PIN zostały zablokowane przez administratora. Użyj innego kodu PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Nie może zawierać nieprawidłowego znaku."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Hasło jest nieprawidłowe. Musisz użyć co najmniej czterech znaków."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administrator urządzenia nie zezwala na ustawianie niedawno używanego hasła"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Błąd podczas zapisywania hasła"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Popularne hasła zostały zablokowane przez administratora. Użyj innego hasła."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Popularne hasła zostały zablokowane przez administratora. Użyj innego hasła."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ciąg cyfr rosnących, malejących lub powtarzających się jest niedozwolony."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcje blokady ekranu"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dni temu"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Klawisz Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Zamknij tryb demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Zamknij tryb demonstracyjny"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Spowoduje to usunięcie konta demonstracyjnego i przywrócenie danych fabrycznych systemu. Utracisz wszystkie swoje dane użytkownika."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Spowoduje to usunięcie konta demonstracyjnego i przywrócenie danych fabrycznych systemu. Utracisz wszystkie dane profilowe."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Zamknij tryb demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ZAMKNIJ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcja niedostępna podczas jazdy"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Nie można dodać użytkownika podczas jazdy"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Nie można dodawać profilu podczas jazdy"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Szukaj"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asystent i głos"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacja Asystent"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Używaj tekstu na ekranie"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Zezwalaj Asystentowi na dostęp do zawartości ekranu"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Używaj zrzutu ekranu"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Zezwalaj Asystentowi na dostęp do obrazu ekranu"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Ostatnio wysłane"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Wszystkie aplikacje"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profile i konta"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Zarządzaj innymi profilami"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Dodaj profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Usuń ten profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Dodaj profil"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index abe88fd..db9f62b 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ecrã"</string>
     <string name="brightness" msgid="2919605130898772866">"Nível de luminosidade"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Luminosidade adaptável"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Otimizar o nível de luminosidade de acordo com a luz disponível"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ajuste o brilho do ecrã ao ambiente"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"A Luz noturna está ativada"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ecrã, ecrã tátil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"escurecer ecrã, ecrã tátil, bateria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"escurecer ecrã, ecrã tátil, bateria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"escurecer ecrã, noite, tonalidade"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Defina o aviso de utilização de dados"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Defina o limite de utilização de dados"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Definir"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rede OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Utilização de %1$d MB de %2$s a %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Aderir a outra rede"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferências de rede"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"A ligar Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"A desligar Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Não foi possível estabelecer ligação à rede."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adicionar rede"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ligar"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"A ligar…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"A rede não está ao alcance"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Palavra-passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar palavra-passe"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Introduza um nome da rede."</string>
@@ -168,7 +170,7 @@
     <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sem nome"</string>
     <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos sincronizados"</string>
     <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Sincronizar novo dispositivo"</string>
-    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"O Bluetooth será ativado para a sincronização"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"O Bluetooth será ativado para a sincronização."</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Desassociar o dispositivo?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"O veículo irá desassociar-se do dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Endereço Bluetooth do veículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Uma aplicação pretende tornar a sua unidade principal visível para outros dispositivos Bluetooth durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"A aplicação <xliff:g id="APP_NAME">%1$s</xliff:g> pretende ativar o Bluetooth e tornar a sua unidade principal visível para outros dispositivos durante <xliff:g id="TIMEOUT">%2$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Uma aplicação pretende ativar o Bluetooth e tornar a sua unidade principal visível para outros dispositivos durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visível como %1$s para os outros dispositivos"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Os meus dispositivos"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Ligados anteriormente"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ligado"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s desligado"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Pedido de sincronização de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar e ligar"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de sincronização Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Som de notificação predefinido"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Som de alarme predefinido"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Guardar"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sons de alerta"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Toque, notificações, alarme"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brilho"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ajuste o ecrã para pouca luz"</string>
     <string name="units_settings" msgid="402325305096925886">"Unidades"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocidade"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distância"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostrar todas as aplicações"</string>
     <string name="default_applications" msgid="1558183275638697087">"Apps predefinidas"</string>
     <string name="app_permissions" msgid="32799922508313948">"Autorizações da app"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps que utilizam <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controle o acesso de apps aos seus dados"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informações da aplicação"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forçar paragem"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Pretende forçar a paragem?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se desativar esta aplicação, o Android e outras aplicações podem deixar de funcionar corretamente."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desativar aplicação"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Não instalado para este utilizador"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Não instalada para este perfil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorizações"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificações"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Armazenamento e cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versão: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nenhuma autorização concedida."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nenhuma autorização solicitada."</string>
+    <string name="unused_apps" msgid="648471933781010395">"Apps não utilizadas"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apps não utilizadas</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> app não utilizada</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remover autorizações e libertar espaço"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s de memória de armazenamento interno"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilização de dados"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utiliz. dados da app"</string>
@@ -317,7 +334,7 @@
     <string name="app_list_preference_none" msgid="7753357799926715901">"Nenhuma"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Selecionada"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"O assistente pode ler informações sobre aplicações utilizadas no seu sistema, incluindo informações visíveis no ecrã ou acessíveis nas aplicações."</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Certifique-se de que confia nesta aplicação&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="autofill_add_service" msgid="6413893366443609951">"Adicionar serviço"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Abertura de links"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Apps instaladas"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Perguntar sempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Não abrir com esta aplicação"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Links compatíveis"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Abertas recentemente"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ver todas as %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gestor de autorizações"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controle o acesso de apps aos seus dados"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Para o Assistente e mais"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Para o sistema e outras definições"</string>
     <string name="special_access" msgid="5730278220917123811">"Acesso especial a aplicações"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostrar sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ocultar sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ocultar apps do sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar definições sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Esta autorização permite que uma aplicação modifique as definições do sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acesso a notificações"</string>
@@ -355,10 +380,15 @@
     <string name="location_settings_title" msgid="901334356682423679">"Localização"</string>
     <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Pedidos de localização recentes"</string>
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Sem pedidos de localização recentes."</string>
-    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizações de nível de app"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizações de nível de aplicação"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Serviços de localização"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Utilizar localização"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avançadas"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Acerca de, informações legais, reposição e muito mais"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo e hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Esta ação irá repor todas as preferências de:\n\n"<li>"Apps desativadas"</li>\n<li>"Notificações de apps desativadas"</li>\n<li>"Apps predefinidas para ações"</li>\n<li>"Restrições de dados de segundo plano para apps"</li>\n<li>"Todas as restrições de autorização"</li>\n\n"Não irá perder quaisquer dados das apps."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Repor aplicações"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"As preferências das apps foram repostas."</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Apagar todos os dados (repor dados de fábrica)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Esta ação irá apagar todos os dados da unidade principal do veículo, incluindo:\n\n"<li>"A Conta Google"</li>\n<li>"Dados e definições do sistema e da aplicação"</li>\n<li>"Aplicações transferidas"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Atualmente, tem sessão iniciada nas seguintes contas:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Existem outros utilizadores presentes neste veículo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Repor veículo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Pretende repor?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Pretende apagar todas as informações pessoais e as apps transferidas? Não é possível anular esta ação!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Apagar tudo"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"A apagar…"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Aguarde…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Apagar todos os dados (repor)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Apague todos os dados e perfis do sistema de infoentretenimento"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Esta ação apaga todos os dados do sistema de infoentretenimento do veículo, incluindo:\n\n"<li>"A sua Conta Google"</li>\n<li>"Dados e definições do sistema e de apps"</li>\n<li>"Apps transferidas"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Atualmente, tem sessão iniciada nas seguintes contas:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Existem outros perfis presentes neste veículo."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Apagar todos os dados"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Quer apagar todos os dados?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Esta ação apaga todos os dados do perfil pessoal, contas e apps transferidas neste sistema de infoentretenimento.\n\nNão é possível anular esta ação."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Apagar tudo"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"A apagar…"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Aguarde…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Definir data, hora, fuso horário e formatos"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data e hora automáticas"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sessão iniciada como administrador"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todas as autorizações de administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tornar administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O utilizador poderá eliminar utilizadores, incluindo outros administradores, e repor os dados de fábrica do sistema."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"O perfil poderá eliminar perfis, incluindo outros administradores, e efetuar uma reposição de fábrica do sistema."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Esta ação não é reversível."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sim, tornar administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Criar novos utilizadores"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Criar novos perfis"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fazer chamadas telefónicas"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensagem via dados móveis do carro"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novas aplicações"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicações"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar utilizador"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo utilizador"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Pretende adicionar um novo utilizador?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite de utilizadores alcançado"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Pode criar até <xliff:g id="COUNT">%d</xliff:g> utilizadores.</item>
-      <item quantity="one">Apenas é possível criar um utilizador.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Adicionar perfil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Novo perfil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Quer adicionar o novo perfil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Ao adicionar um novo perfil, essa pessoa tem de configurar o respetivo espaço."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Qualquer perfil pode atualizar apps para todos os outros perfis."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Limite de perfis atingido"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Pode criar até <xliff:g id="COUNT">%d</xliff:g> perfis.</item>
+      <item quantity="one">Apenas pode criar um perfil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Falha ao criar um novo utilizador"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminar este utilizador?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Todas as apps e os dados serão eliminados."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Falha ao eliminar o utilizador"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Falha ao criar um novo perfil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Pretende eliminar este perfil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Todos os dados e apps deste perfil serão eliminados"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Falha ao eliminar o perfil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Este perfil vai ser eliminado quando mudar de perfil ou arrancar novamente o veículo"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorar"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar novamente"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Elim. último utilizador?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Depois de eliminar o único utilizador restante deste automóvel, será criado um novo administrador."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Todos os dados, as definições e as aplicações associados a este utilizador serão eliminados. Terá de configurar o sistema novamente."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Quer eliminar o último perfil restante?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Se eliminar o único perfil restante para este veículo, todos os dados, definições e apps associados a este perfil serão apagados."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Após a reposição, pode configurar um novo perfil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolher novo administrador"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Necessita de, pelo menos, um administrador. Para eliminar este, primeiro escolha um substituto."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Escolher administrador"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"O utilizador (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Não configurado"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editar o nome do utilizador"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Edite o nome do perfil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"O campo não pode estar em branco."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"O nome de utilizador introduzido é inválido."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"O nome do perfil introduzido é inválido."</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilizadores"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Perfis"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Autorizações concedidas a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Armazenamento"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música e áudio"</string>
@@ -501,13 +534,13 @@
     <string name="storage_detail_dialog_system" msgid="796365720531622361">"O sistema inclui ficheiros utilizados para executar a versão <xliff:g id="VERSION">%s</xliff:g> do Android."</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Ficheiros de áudio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"A calcular…"</string>
-    <string name="storage_application_size_label" msgid="1146156683170661354">"Tamanho da app"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dados do utilizador"</string>
+    <string name="storage_application_size_label" msgid="1146156683170661354">"Tamanho da aplicação"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dados do perfil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Limpar armazenamento"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Limpar cache"</string>
-    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Eliminar dados da app?"</string>
+    <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Eliminar dados da aplicação?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Todos os dados desta aplicação serão eliminados permanentemente. Isto inclui todos os ficheiros, definições, contas, bases de dados, etc."</string>
     <string name="storage_clear_failed_dlg_text" msgid="6710485971686866306">"Impossível limpar o armazenamento da aplicação."</string>
     <string name="storage_unmount_success" msgid="1553591517580407021">"<xliff:g id="NAME">%1$s</xliff:g> foi ejetado com segurança."</string>
@@ -517,7 +550,7 @@
     <string name="no_accounts_added" msgid="5148163140691096055">"Nenhuma conta adicionada"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Contas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
     <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar dados automaticamente"</string>
-    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que as apps atualizem dados automaticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que as aplicações atualizem dados automaticamente"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Ativar sincron. autom. de dados?"</string>
     <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Qualquer alteração que efetue nas contas a partir da Web será copiada automaticamente para o dispositivo.\n\nAlgumas contas também podem copiar automaticamente para a Web qualquer alteração que efetue no telemóvel. É assim que funciona uma Conta Google."</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Desativar sincroniz. automática?"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronização"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"A sincronização está atualmente com problemas e será retomada em breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacidade"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dados do veículo"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controle o acesso de apps à sua localização"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microfone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controle o acesso de apps ao microfone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dados do veículo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Efetue a gestão das atividades e informações guardadas neste veículo"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Eliminar perfil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Apague o seu perfil e contas do sistema de infoentretenimento"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Esta ação está indisponível para o seu perfil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurança"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueio de ecrã"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nenhum"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remover o bloqueio de ecrã?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Desta forma, qualquer pessoa pode aceder à sua conta."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Bloqueio do perfil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configure o desbloqueio automático"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Introduzir o PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Introduza a palavra-passe"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Por motivos de segurança, defina um PIN."</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Tem de ter menos de <xliff:g id="NUMBER">%d</xliff:g> dígitos."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Tem de incluir apenas dígitos de 0 a 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"O administrador do dispositivo não permite a utilização de um PIN recente."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Os PINs comuns estão bloqueados pelo seu gestor de TI. Experimente outro PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Os PINs comuns estão bloqueados pelo seu gestor de TI. Experimente outro PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Não pode incluir um caráter inválido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Palavra-passe inválida. Tem de ter, pelo menos, 4 carateres."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"O admin. do disp. não permite a utilização de uma palavra-passe recente."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Erro ao guardar a palavra-passe."</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"As palavras-passe comuns estão bloqueadas pelo seu gestor de TI. Experimente outra palavra-passe."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"As palavras-passe comuns estão bloqueadas pelo seu gestor de TI. Experimente outra palavra-passe."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitida uma sequência de dígitos ascendente, descendente ou repetida."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de ecrã"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: há <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Sair da demonstração"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sair do modo de demonstração"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Esta ação elimina a conta de demonstração e efetua a reposição de dados de fábrica do sistema. Todos os dados do utilizador são perdidos."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Esta ação elimina a conta de demonstração e efetua a reposição de dados de fábrica do sistema. Todos os dados do perfil são perdidos."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sair da demonstração"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORAR"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funcionalidade não disponível durante a condução."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Não é possível adicionar o utilizador durante a condução."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Não pode adicionar um perfil durante a condução"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Pesquisar"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistente e voz"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"App Assistente"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Utilizar o texto do ecrã"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permita que o Assistente aceda ao conteúdo do ecrã"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Utilizar captura de ecrã"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permita que o Assistente aceda à imagem do ecrã"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Enviadas recentemente"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Todas as apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Perfis e contas"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gerir outros perfis"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Adicionar um perfil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Eliminar este perfil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Adicionar perfil"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4040b44..8b2201a 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Tela"</string>
     <string name="brightness" msgid="2919605130898772866">"Nível de brilho"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Brilho adaptável"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Otimizar nível de brilho de acordo com a luz disponível"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ajustar o brilho da tela para o ambiente"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"O Modo noturno está ativado"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"tela, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"escurecer tela, touchscreen, bateria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"escurecer tela, touchscreen, bateria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"escurecer tela, noite, tingir"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Definir aviso de uso de dados"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Definir limite do uso de dados"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Definir"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rede OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB usados %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Conectar outra rede"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferências de rede"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ativando Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desativando Wi-Fi..."</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Falha ao conectar à rede"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adicionar rede"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Conectando…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Rede fora do alcance"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Senha"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar senha"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Insira um nome de rede"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Um app quer tornar sua unidade principal visível para outros dispositivos Bluetooth por <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> quer ativar o Bluetooth e tornar sua unidade principal visível para outros dispositivos por <xliff:g id="TIMEOUT">%2$d</xliff:g> segundos."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Um app quer ativar o Bluetooth e tornar sua unidade principal visível para outros dispositivos por <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Visível como %1$s para outros dispositivos"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Meus dispositivos"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Conectados anteriormente"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s conectado"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s desconectado"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitação de pareamento Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parear e conectar"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de pareamento Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Som de notificação padrão"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Som de alarme padrão"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Salvar"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sons de alerta"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Toque, notificações, alarme"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Brilho"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ajustar a tela para locais com pouca luz"</string>
     <string name="units_settings" msgid="402325305096925886">"Unidades"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Velocidade"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distância"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Mostrar todos os apps"</string>
     <string name="default_applications" msgid="1558183275638697087">"Apps padrão"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permissões do app"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Apps usando <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controlar acesso de apps aos seus dados"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informações do app"</string>
     <string name="force_stop" msgid="2153183697014720520">"Forçar fechamento"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Forçar fechamento?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desativar app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Não instalado para o usuário"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Não instalado neste perfil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permissões"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificações"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Armazenamento e cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versão: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nenhuma permissão concedida"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nenhuma permissão solicitada"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Apps não usados"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> app não usado</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apps não usados</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Remover permissões e liberar espaço"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s no armazenamento interno"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de dados"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de dados do app"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Perguntar sempre"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Não abrir neste app"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Links compatíveis"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Apps"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Abertos recentemente"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ver todos os %1$d apps"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Gerenciar permissões"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controlar acesso de apps aos seus dados"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Para o Assistente e mais"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Para configurações do sistema e outras"</string>
     <string name="special_access" msgid="5730278220917123811">"Acesso especial ao app"</string>
     <string name="show_system" msgid="4401355756969485287">"Mostrar sistema"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ocultar sistema"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ocultar os apps do sistema"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar config. do sistema"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Permite que um app modifique configurações do sistema."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acesso a notificações"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nenhuma solicitação recente de local"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permissões no app"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Serviços de localização"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Usar local"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avançadas"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Sobre, informações legais, redefinir e mais"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo e hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Isso redefinirá todas as preferências para:\n\n"<li>" apps desativados;"</li>" \n "<li>"notificações de apps desativados; "</li>\n<li>"apps padrão para ações;"</li>\n<li>"restrições de dados em segundo plano para apps; "</li>\n<li>"qualquer restrição de permissão."</li>\n\n"Você não perderá os dados dos apps."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Redefinir apps"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"As preferências do app foram redefinidas"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Limpar todos os dados"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Essa ação apagará todos os dados da unidade principal do seu veículo, incluindo:\n\n"<li>"sua Conta do Google;"</li>\n<li>"dados e configurações do sistema e do app;"</li>\n<li>"apps transferidos."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"No momento, as seguintes contas estão conectadas:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Há outros usuários neste veículo."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Redefinir veículo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Redefinir?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Limpar todas as suas informações pessoais e apps transferidos por download? Não é possível desfazer essa ação."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Apagar tudo"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Apagando"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Aguarde…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Limpar todos os dados"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Apague todos os dados e perfis do sistema de infoentretenimento"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Essa ação apagará todos os dados do sistema de infoentretenimento do seu veículo, incluindo:\n\n"<li>"sua Conta do Google;"</li>\n<li>"dados e configurações do sistema e de apps;"</li>\n<li>"apps transferidos."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"No momento, as seguintes contas estão conectadas:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Há outros perfis neste veículo."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Limpar todos os dados"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Limpar todos os dados?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Isso apagará todos os dados do seu perfil pessoal, contas e apps transferidos neste sistema de infoentretenimento.\n\nNão é possível desfazer essa ação."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Apagar tudo"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Apagando"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Aguarde…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Definir data, hora, fuso horário e formatos"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data e hora automáticas"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Conectado como administrador"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todas as permissões de administrador"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tornar administrador"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O usuário poderá excluir outros usuários, incluindo administradores, e redefinir o sistema para a configuração original."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"O perfil poderá excluir perfis, incluindo outros administradores, e redefinir o sistema para a configuração original."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Esta ação não pode ser revertida."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Sim, tornar administrador"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Criar novos usuários"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Criar novos perfis"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fazer chamadas telefônicas"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensagens com dados móveis do carro"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novos apps"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar apps"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar usuário"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuário"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Adicionar novo usuário?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quando você adiciona um usuário novo, essa pessoa precisa configurar o espaço dela."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer usuário pode atualizar os apps para todos os demais."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite de usuários atingido"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">É possível criar até <xliff:g id="COUNT">%d</xliff:g> usuário.</item>
-      <item quantity="other">É possível criar até <xliff:g id="COUNT">%d</xliff:g> usuários.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Adicionar perfil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Novo perfil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Adicionar novo perfil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Quando você adiciona um perfil novo, essa pessoa precisa configurar o espaço dela."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Qualquer perfil pode atualizar apps para todos os outros perfis."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Limite de perfis atingido"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Você pode criar até <xliff:g id="COUNT">%d</xliff:g> perfil.</item>
+      <item quantity="other">Você pode criar até <xliff:g id="COUNT">%d</xliff:g> perfis.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Falha ao criar um novo usuário"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Excluir este usuário?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Todos os apps e dados serão excluídos."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Falha ao excluir usuário."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Ocorreu uma falha ao criar um perfil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Excluir este perfil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Todos os apps e dados deste perfil serão excluídos"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Falha ao excluir o perfil."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Este perfil será excluído ao trocar de perfis ou reiniciar o sistema do veículo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dispensar"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar novamente"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Excluir o último usuário?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Após a exclusão do único usuário restante deste carro, um novo usuário administrador será criado."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Todos os dados, configurações e apps associados ao usuário serão excluídos. Será necessário configurar o sistema novamente."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Excluir o último perfil restante?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Se você excluir o único perfil restante deste veículo, todos os dados, configurações e apps associados a ele serão apagados."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Depois da redefinição, será possível configurar um novo perfil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolher novo administrador"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Você precisa de pelo menos um administrador. Para excluir este, primeiro escolha um substituto."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Escolher administrador"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Você (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Não configurado"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editar nome de usuário"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Editar nome do perfil"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"O campo não pode ficar em branco."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"O nome de usuário informado é inválido."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"O nome de perfil inserido é inválido."</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuários"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Perfis"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permissões concedidas a %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Armazenamento"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Música e áudio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Arquivos de áudio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Calculando…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Tamanho do app"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dados do usuário"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dados do perfil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Limpar armazenamento"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar a sincronização"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"A sincronização está enfrentando problemas no momento. Ela será retomada em breve."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacidade"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dados do veículo"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controlar o acesso de apps ao seu local"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microfone"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controle o acesso de apps ao microfone"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dados do veículo"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gerenciar as atividades e informações salvas no veículo"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Excluir seu perfil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Apague seu perfil e contas do sistema de infoentretenimento"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Esta ação não está disponível para seu perfil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurança"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueio de tela"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nenhum"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Ok"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remover bloqueio de tela?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Qualquer pessoa poderá acessar sua conta"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Bloqueio de perfil"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configurar o desbloqueio automático"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Digite seu PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Digite sua senha"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Por segurança, defina um PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Precisa ter menos de <xliff:g id="NUMBER">%d</xliff:g> dígitos"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Precisa ter apenas dígitos de 0 a 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"O administrador do dispositivo não permite o uso de um PIN recente"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"PINs comuns foram bloqueados pelo seu administrador de TI. Tente um PIN diferente."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"PINs comuns foram bloqueados pelo seu administrador de TI. Tente um PIN diferente."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Não pode incluir um caractere inválido."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Senha inválida. Ela precisa ter pelo menos quatro caracteres."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"O administrador do dispositivo não permite usar uma senha recente"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Erro ao salvar a senha"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Senhas comuns foram bloqueadas pelo seu administrador de TI. Tente uma senha diferente."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Senhas comuns foram bloqueadas pelo seu administrador de TI. Tente uma senha diferente."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitido usar uma sequência de dígitos em ordem crescente, decrescente ou repetidos."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de tela"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias atrás"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tecla Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Sair da demonstração"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sair do modo de demonstração"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Isso excluirá a conta de demonstração e redefinirá o sistema para a configuração original. Todos os dados do usuário serão perdidos."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Isso excluirá a conta de demonstração e redefinirá o sistema para a configuração original. Todos os dados do perfil serão perdidos."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sair da demonstração"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISPENSAR"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Recurso não disponível enquanto você dirige"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Não é possível adicionar usuários enquanto você dirige"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Não é possível adicionar perfis enquanto você dirige"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Pesquisa"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistente e Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"App do Assistente"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Usar texto da tela"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permitir que o Assistente acesse os conteúdos da tela"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Usar captura de tela"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permitir que o Assistente acesse a imagem da tela"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Enviadas recentemente"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Todos os apps"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Perfis e contas"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gerenciar outros perfis"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Adicionar um perfil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Excluir este perfil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Adicionar perfil"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 31c7b54..4088263 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ecran"</string>
     <string name="brightness" msgid="2919605130898772866">"Nivel de luminozitate"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Luminozitate adaptivă"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizează nivelul de luminozitate în funcție de lumina disponibilă"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ajustați luminozitatea ecranului în funcție de mediu"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Lumina de noapte este activată"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ecran, ecran tactil"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"reduceți luminozitatea ecranului, ecran tactil, baterie"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"reduceți luminozitatea ecranului, ecran tactil, baterie"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"reduceți luminozitatea ecranului, noapte, nuanță"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modul noapte"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rețea și internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rețea mobilă"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Setați un avertisment privind utilizarea datelor"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Setați o limită de utilizare a datelor"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Setați"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rețea OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB folosiți în perioada %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Alăturați-vă unei alte rețele"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferințe privind rețeaua"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Se activează Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Se dezactivează Wi-Fi…"</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nu s-a realizat conexiunea la rețea"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adăugați o rețea"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectați"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Se conectează…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Rețeaua este în afara ariei de acoperire"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parolă"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afișează parola"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Introduceți numele unei rețele"</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"O aplicație încearcă să facă unitatea principală vizibilă pentru alte dispozitive Bluetooth timp de <xliff:g id="TIMEOUT">%1$d</xliff:g> secunde."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> încearcă să activeze Bluetooth și să facă unitatea principală vizibilă pentru alte dispozitive timp de <xliff:g id="TIMEOUT">%2$d</xliff:g> secunde."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"O aplicație încearcă să activeze Bluetooth și să facă unitatea principală vizibilă pentru alte dispozitive timp de <xliff:g id="TIMEOUT">%1$d</xliff:g> secunde."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Vizibil ca %1$s pentru alte dispozitive"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Dispozitivele mele"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Conectate anterior"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s s-a conectat"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s s-a deconectat"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitare de conectare prin Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Asociați și conectați"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Cod de conectare prin Bluetooth"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Sunet de notificare prestabilit"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sunet de alarmă prestabilit"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Salvați"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sunetele alertelor"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ton de sonerie, notificări, alarmă"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Luminozitate"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ajustați ecranul pentru condiții de lumină slabă"</string>
     <string name="units_settings" msgid="402325305096925886">"Unități"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Viteză"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distanță"</string>
@@ -282,7 +293,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Afișați toate aplicațiile"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplicații prestabilite"</string>
     <string name="app_permissions" msgid="32799922508313948">"Permisiuni pentru aplicații"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplicații care folosesc <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Controlați accesul aplicațiilor la date"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informații despre aplicație"</string>
     <string name="force_stop" msgid="2153183697014720520">"Opriți forțat"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Opriți forțat?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Dezinstalați"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Dacă dezactivați această aplicație, este posibil ca Android și alte aplicații să nu mai funcționeze corespunzător."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Dezactivați aplicația"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nu este instalată pentru acest utilizator"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nu este instalată pentru acest profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisiuni"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Notificări"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Spațiul de stocare și memoria cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiunea: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nicio permisiune acordată"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nicio permisiune solicitată"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplicații nefolosite"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> aplicații nefolosite</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de aplicații nefolosite</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplicație nefolosită</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Eliminați permisiuni și eliberați spațiu"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s în memoria internă"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilizarea datelor"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utilizare date aplicație"</string>
@@ -337,9 +355,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Întreabă de fiecare dată"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Nu deschide în această aplicație"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Linkuri acceptate"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplicații"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Deschise recent"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Vedeți toate cele %1$d aplicații"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Manager de permisiuni"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Controlați accesul aplicațiilor la date"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Pentru Asistent și altele"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"La sistem și alte setări"</string>
     <string name="special_access" msgid="5730278220917123811">"Acces special pentru aplicații"</string>
     <string name="show_system" msgid="4401355756969485287">"Afișați procesele de sistem"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ascundeți procesele de sistem"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ascundeți aplicațiile de sistem"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modifică setările de sistem"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Având această permisiune, o aplicație poate să modifice setările de sistem."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Acces la notificări"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nu există solicitări recente privind locația"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisiuni la nivel de aplicație"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Servicii de localizare"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Folosiți locația"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizări de sistem"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avansate"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Despre, informații legale, resetare și altele"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versiunea Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivelul corecției de securitate Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model și hardware"</string>
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Astfel vor fi resetate toate preferințele pentru:\n\n"<li>"aplicații dezactivate,"</li>\n<li>"notificări de aplicații dezactivate,"</li>\n<li>"aplicații prestabilite pentru acțiuni,"</li>\n<li>"restricții privind datele de fundal pentru aplicații,"</li>\n<li>"orice restricții de permisiuni."</li>\n\n"Nu veți pierde datele aplicațiilor."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetați aplicațiile"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferințele pentru aplicații au fost resetate"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Ștergeți datele (reveniți la setările din fabrică)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Astfel, vor fi șterse toate datele de pe unitatea principală a vehiculului, între care:\n\n"<li>"contul dvs. Google;"</li>\n<li>"datele și setările de sistem și de aplicație;"</li>\n<li>"aplicațiile descărcate"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Sunteți conectat(ă) la următoarele conturi:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Există și alți utilizatori în acest vehicul."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetați vehiculul"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetați?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ștergeți toate informațiile cu caracter personal și aplicațiile descărcate? Nu puteți anula această acțiune!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ștergeți tot"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Se șterge"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Așteptați..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Ștergeți datele (setări din fabrică)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Ștergeți toate datele și profilurile de pe sistemul de infotainment"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Astfel, vor fi șterse toate datele de pe sistemul de infotainment al vehiculului, între care:\n\n"<li>"Contul dvs. Google,"</li>\n<li>"datele și setările de sistem și de aplicație,"</li>\n<li>"aplicațiile descărcate."</li>"."</string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"V-ați conectat la următoarele conturi:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Există și alte profiluri pe acest vehicul."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Ștergeți toate datele"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Ștergeți toate datele?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Astfel, se vor șterge toate datele profilului personal, conturile și aplicațiile descărcate pe acest sistem de infotainment.\n\nNu puteți anula această acțiune."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Ștergeți tot"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Se șterge"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Așteptați…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data și ora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Setați data, ora, fusul orar și formatele"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Dată și oră automate"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Conectat(ă) ca administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Toate permisiunile de administrator"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Setați ca administrator"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Utilizatorul va putea să șteargă utilizatori, inclusiv alți administratori, și să readucă sistemul la setările din fabrică."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profilul va putea să șteargă profiluri, inclusiv alți administratori, și să revină la setările din fabrică ale sistemului."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Această acțiune nu este reversibilă."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, setez ca administrator"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Creați noi utilizatori"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Creați profiluri noi"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Efectuați apeluri telefonice"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mesaje – datele mobile ale mașinii"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalați aplicații noi"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Dezinstalați aplicații"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adăugați un utilizator"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Utilizator nou"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Adăugați utilizator nou?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Când adăugați un utilizator nou, acesta trebuie să-și configureze spațiul."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Orice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Ați atins limita de utilizatori"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="few">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> utilizatori.</item>
-      <item quantity="other">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> de utilizatori.</item>
-      <item quantity="one">Poate fi creat doar un utilizator.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Adăugați un profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Profil nou"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Adăugați un profil nou?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Când adăugați un profil nou, persoana respectivă trebuie să-și configureze spațiul."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Orice profil poate actualiza aplicații pentru toate celelalte profiluri."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Ați atins limita de profiluri"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="few">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> profiluri.</item>
+      <item quantity="other">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> de profiluri.</item>
+      <item quantity="one">Puteți crea un singur profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Nu s-a creat noul utilizator"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Ștergeți utilizatorul?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Toate aplicațiile și datele vor fi șterse."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Utilizatorul nu a putut fi șters."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nu s-a creat un profil nou"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Ștergeți profilul?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Toate aplicațiile și datele din acest profil vor fi șterse"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Nu s-a șters profilul."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profilul va fi șters când comutați între profiluri sau reporniți mașina."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Închideți"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Reîncercați"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ștergeți ultimul utilizator?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"După ștergerea singurului utilizator rămas pentru această mașină, va fi creat un nou utilizator administrator."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Toate datele, setările și aplicațiile asociate acestui utilizator vor fi șterse. Va trebui să configurați din nou sistemul."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Ștergeți ultimul profil rămas?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Dacă ștergeți singurul profil rămas de pe acest vehicul, toate datele, setările și aplicațiile asociate profilului vor fi șterse."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"După resetare, puteți configura un profil nou."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Alegeți un administrator nou"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Aveți nevoie de cel puțin un administrator. Pentru a-l șterge pe acesta, mai întâi alegeți un înlocuitor."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Alegeți un administrator"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Dvs. (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nume"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Neconfigurat"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Editați numele de utilizator"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Modificați numele profilului"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Câmpul trebuie completat."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Numele de utilizator introdus este nevalid."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Numele de profil introdus nu este valid."</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilizatori"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiluri"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Permisiuni acordate pentru %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Stocare"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzică și audio"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Fișiere audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Se calculează…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Dimensiunea aplicației"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Datele utilizatorului"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Date de profil"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Memorie cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Total"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Ștergeți datele stocate"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anulați sincronizarea"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sincronizarea se confruntă cu probleme. Aceasta va fi funcțională în curând."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Confidențialitate"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Date de pe vehicul"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Controlați accesul aplicațiilor la locație"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Microfon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Controlați accesul aplicațiilor la microfon"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Date de pe vehicul"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Gestionați activitățile și informațiile salvate pe acest vehicul"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Ștergeți profilul"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Ștergeți profilul și conturile de pe sistemul de infotainment"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Acțiunea nu este disponibilă pentru profilul dvs."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Securitate"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blocarea ecranului"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Fără"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Eliminați blocarea ecranului?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Acțiunea va permite oricui să vă acceseze contul"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Blocarea profilului"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Configurați deblocarea automată"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Introduceți codul PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Introduceți parola"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Pentru securitate, setați un cod PIN"</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Trebuie să conțină maximum <xliff:g id="NUMBER">%d</xliff:g> cifre"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Trebuie să conțină numai cifre de la 0 la 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administratorul dispozitivului nu permite folosirea unui PIN recent"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Codurile PIN obișnuite sunt blocate de administratorul IT. Încercați alt cod PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Codurile PIN obișnuite sunt blocate de administratorul IT. Încercați alt cod PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Aceasta nu poate include un caracter nevalid."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Parolă nevalidă. Trebuie să conțină minimum 4 caractere."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administratorul dispozitivului nu permite folosirea unei parole recente"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Eroare la salvarea parolei"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Parolele obișnuite sunt blocate de administratorul IT. Încercați altă parolă."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Parolele obișnuite sunt blocate de administratorul IT. Încercați altă parolă."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Șirurile de cifre ascendente, descendente sau repetate nu sunt permise."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opțiuni de blocare a ecranului"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: acum <xliff:g id="NUM_DAYS">%3$s</xliff:g> zile"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tasta Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Închideți demonstrația"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Închideți modul demonstrativ"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Această acțiune va șterge contul demonstrativ, iar sistemul va reveni la setările din fabrică. Toate datele utilizatorului se vor pierde."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Această acțiune va șterge contul demonstrativ, iar sistemul va reveni la setările din fabrică. Toate datele profilului se vor pierde."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Închideți demonstrația"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"RESPINGEȚI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funcția nu este disponibilă când conduceți"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Nu puteți adăuga un utilizator în timp ce conduceți"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Nu puteți adăuga un profil în timp ce conduceți"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Căutați"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistent și voce"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplicația Asistent"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Folosiți textul de pe ecran"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Permiteți Asistentului să acceseze conținutul de pe ecran"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Folosiți captura de ecran"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Permiteți Asistentului să acceseze imaginea de pe ecran"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Trimise recent"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Toate aplicațiile"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiluri și conturi"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Gestionați alte profiluri"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Adăugați un profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Ștergeți profilul"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Adăugați un profil"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 700570f..19a8dfa 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -22,14 +22,10 @@
     <string name="display_settings" msgid="5325515247739279185">"Экран"</string>
     <string name="brightness" msgid="2919605130898772866">"Яркость"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Адаптивная яркость"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Менять яркость с учетом уровня освещенности"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Изменять яркость экрана в зависимости от освещения"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Ночная подсветка включена"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"экран, сенсорный экран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"снижение яркости, сенсорный экран, батарея"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"снижение яркости, сенсорный экран, батарея"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"снижение яркости, ночь, оттенок"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ночной режим"</string>
-    <string name="network_and_internet" msgid="4229023630498537530">"Сеть и интернет"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Сеть и Интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобильная сеть"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
       <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карта</item>
@@ -42,7 +38,7 @@
     <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активно (cкачанная SIM-карта)"</string>
     <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактивно (скачанная SIM-карта)"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Добавить"</string>
-    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильный интернет"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильный Интернет"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ к Интернету по мобильной сети"</string>
     <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Отключить мобильный Интернет?"</string>
     <string name="sim_selection_required_pref" msgid="6599562910262785784">"Выберите SIM-карту"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Настройка предупреждения"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Лимит трафика"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Сохранить"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Сеть OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Использовано %2$s – %3$s: %1$d МБ"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Подключиться к другой сети"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Настройки сетевого подключения"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Включение Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Отключение Wi-Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не удалось подключиться к сети"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Добавить сеть"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Подключить"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Подключение…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Вы находитесь вне зоны действия сети."</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показать пароль"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Введите название сети."</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Приложению требуется, чтобы ваше головное устройство было доступно для поиска через Bluetooth на других устройствах в течение <xliff:g id="TIMEOUT">%1$d</xliff:g> сек."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Приложению \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" требуется включить Bluetooth и сделать ваше головное устройство доступным для поиска на других устройствах в течение <xliff:g id="TIMEOUT">%2$d</xliff:g> сек."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Одному из приложений требуется включить Bluetooth и сделать ваше головное устройство доступным для поиска на других устройствах в течение <xliff:g id="TIMEOUT">%1$d</xliff:g> сек."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Название в списке устройств: %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Мои устройства"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Ранее подключенные устройства"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Устройство \"%1$s\" подключено."</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Устройство \"%1$s\" отключено."</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запрос на подключение через Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Установить соединение и подключить"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код подключения через Bluetooth"</string>
@@ -215,7 +222,7 @@
     <string name="keyboard_settings" msgid="1959697870618278081">"Клавиатура"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Управление клавиатурами"</string>
     <string name="text_to_speech_settings" msgid="811985746199507343">"Озвучивание текста"</string>
-    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Синтезатор речи по умолчанию"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Синтезатор по умолчанию"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Текущий синтезатор"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Скорость речи"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"Тон"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Звук уведомления по умолчанию"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Звук будильника по умолчанию"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Сохранить"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Звуки оповещений"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Рингтон, будильник и уведомления"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Яркость"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Настроить яркость экрана для использования при слабом освещении"</string>
     <string name="units_settings" msgid="402325305096925886">"Единицы"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Скорость"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Расстояние"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Показать все приложения"</string>
     <string name="default_applications" msgid="1558183275638697087">"Приложения по умолчанию"</string>
     <string name="app_permissions" msgid="32799922508313948">"Разрешения для приложений"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Приложения, которым разрешен доступ (<xliff:g id="APPS">%1$s</xliff:g>)"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Управление доступом приложений к вашим данным"</string>
     <string name="applications_settings" msgid="794261395191035632">"Сведения о приложениях"</string>
     <string name="force_stop" msgid="2153183697014720520">"Остановить"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Остановить принудительно?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Удалить"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Отключение этого приложения может привести к некорректной работе системы Android и других приложений."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Отключить приложение"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Не установлено для этого пользователя"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Не установлено в этом профиле."</string>
     <string name="permissions_label" msgid="2701446753515612685">"Разрешения"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Уведомления"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Хранилище и кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версия: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"У приложения нет разрешений"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Приложение не запрашивало разрешения"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Неиспользуемые приложения"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> неиспользуемое приложение</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> неиспользуемых приложения</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> неиспользуемых приложений</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> неиспользуемого приложения</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Удалять разрешения и освобождать место"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s: внутренняя память"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Передача данных"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Трафик приложения"</string>
@@ -315,9 +334,9 @@
     <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Помощник и голосовой ввод"</string>
     <string name="assist_app_settings" msgid="9085261410166776497">"Помощник"</string>
     <string name="assist_access_context_title" msgid="8034851731390785301">"Использовать текст с экрана"</string>
-    <string name="assist_access_context_summary" msgid="2374281280599443774">"Разрешить просматривать содержимое экрана в виде текста"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Разрешить Помощнику доступ к тексту на экране."</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Использовать скриншот"</string>
-    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Разрешить приложению-помощнику доступ к изображению экрана"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Разрешить Помощнику доступ к изображению экрана."</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Голосовой ввод"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Автозаполнение"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Нет"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Всегда спрашивать"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Не открывать в этом приложении"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Поддерживаемые ссылки"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Приложения"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Недавно открытые приложения"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Посмотреть все приложения (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Управление разрешениями"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Управление доступом приложений к вашим данным"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Для Ассистента и не только"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Доступ к системным и другим настройкам"</string>
     <string name="special_access" msgid="5730278220917123811">"Специальный доступ для приложений"</string>
     <string name="show_system" msgid="4401355756969485287">"Показать системные"</string>
     <string name="hide_system" msgid="8845453295584638040">"Скрыть системные процессы"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Скрыть системные приложения"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Изменение системных настроек"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Приложение сможет изменять системные настройки."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Доступ к уведомлениям"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нет недавних запросов местоположения."</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Разрешения для приложений"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Геолокация"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Использовать данные о местоположении"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Обновления системы"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Дополнительно"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Сведения о системе, юридическая информация, сброс настроек и т. д."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версия Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Обновление системы безопасности"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Модель и аппаратное обеспечение"</string>
@@ -389,7 +421,7 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторские права"</string>
     <string name="license_title" msgid="936705938435249965">"Лицензия"</string>
     <string name="terms_title" msgid="5201471373602628765">"Условия использования"</string>
-    <string name="webview_license_title" msgid="6442372337052056463">"Лицензии System WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Системные лицензии WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Обои"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Спутниковые фотографии:\n© 2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"Модель"</string>
@@ -413,7 +445,7 @@
     <string name="reset_network_title" msgid="1284233059990797263">"Сбросить настройки сети"</string>
     <string name="reset_network_desc" msgid="602381374544634925">"Будут сброшены все настройки, в том числе:"</string>
     <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
-    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобильный интернет"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобильный Интернет"</li></string>
     <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
     <string name="reset_esim_title" msgid="8132107637911831211">"Удалить данные всех eSIM автомобиля"</string>
     <string name="reset_esim_desc" msgid="1437276625485586740">"Это действие не отменит ваш тарифный план."</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Будут сброшены следующие настройки:\n\n"<li>"Отключенные приложения."</li>\n<li>"Отключенные уведомления приложений."</li>\n<li>"Приложения по умолчанию."</li>\n<li>"Ограничения на передачу данных в фоновом режиме."</li>\n<li>"Все ограничения разрешений."</li>\n\n"Данные приложений удалены не будут."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Сбросить настройки"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Настройки приложений сброшены."</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Стереть все данные (заводские настройки)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Будут удалены все данные из головного устройства автомобиля, в том числе:\n\n"<li>"ваш аккаунт Google;"</li>\n<li>"настройки/данные системы и приложений;"</li>\n<li>"установленные приложения."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Вы вошли в следующие аккаунты:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"В этом автомобиле есть другие пользователи."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Сбросить настройки автомобиля"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Сбросить настройки?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Удалить всю личную информацию и скачанные приложения? Это действие нельзя отменить."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Стереть все"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Удаление…"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Подождите..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Стереть все данные (заводские настройки)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Удалить все данные и профили из информационно-развлекательной системы"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Будут удалены все данные из информационно-развлекательной системы автомобиля, в том числе:\n\n"<li>"ваш аккаунт Google;"</li>\n<li>"данные и настройки системы и приложений;"</li>\n<li>"скачанные приложения."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Вы вошли в следующие аккаунты:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"В системе этого автомобиля есть другие профили."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Удалить все данные"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Удалить все данные?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Из информационно-развлекательной системы будут удалены все данные личных профилей, аккаунты и скачанные приложения.\n\nЭто действие нельзя отменить."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Стереть все"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Удаление…"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Подождите…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата и время"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Установка даты, времени, часового пояса и формата"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Дата и время сети"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Вы вошли как администратор"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Все права администратора"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Назначить администратором"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Пользователь сможет удалять других пользователей (в том числе администраторов) и сбрасывать системные настройки."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Пользователь сможет удалять профили (в том числе других администраторов) и сбрасывать настройки системы."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Это действие нельзя будет отменить."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Назначить администратором"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Создание профилей пользователей"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Создание профилей"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Исходящие телефонные звонки"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS по мобильному Интернету в авто"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Установка новых приложений"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Удаление приложений"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавить пользователя"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новый пользователь"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Добавить пользователя?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когда вы добавите пользователя, ему потребуется настроить профиль."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Любой пользователь устройства может обновлять приложения для всех аккаунтов."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнуто ограничение"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователя.</item>
-      <item quantity="few">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователей.</item>
-      <item quantity="many">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователей.</item>
-      <item quantity="other">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователя.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Добавить профиль"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Новый профиль"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Добавить профиль?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Когда вы добавите профиль, пользователю потребуется его настроить."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Любой пользователь может обновлять приложения для других профилей."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Нельзя создать больше профилей"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Можно создать до <xliff:g id="COUNT">%d</xliff:g> профиля.</item>
+      <item quantity="few">Можно создать до <xliff:g id="COUNT">%d</xliff:g> профилей.</item>
+      <item quantity="many">Можно создать до <xliff:g id="COUNT">%d</xliff:g> профилей.</item>
+      <item quantity="other">Можно создать до <xliff:g id="COUNT">%d</xliff:g> профиля.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Не удалось создать пользователя"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Удалить пользователя?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Будут удалены все приложения и данные."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Не удалось удалить пользователя"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Не удалось создать профиль"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Удалить профиль?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Все приложения и данные этого профиля будут удалены."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Не получилось удалить профиль"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Этот профиль удалится, когда вы войдете в другой или перезапустите автомобиль"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрыть"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторить попытку"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Удалить последнего пользователя?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"После удаления единственного оставшегося пользователя в системе вам будет предложено создать новый профиль администратора."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Будут удалены все данные, настройки и приложения, связанные с этим пользователем. Вам потребуется заново настроить систему."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Удалить последний профиль?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Если вы удалите единственный оставшийся профиль, все его данные, настройки и приложения также будут удалены."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"После сброса настроек вы сможете создать новый профиль."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Выберите нового администратора"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"В системе должен быть хотя бы один администратор. Прежде чем удалить этого администратора, выберите того, кто его заменит."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Выбрать администратора"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Вы (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Имя"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не настроен"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Изменение имени пользователя"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Название профиля"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Поле должно быть заполнено."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Указано недопустимое имя пользователя."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Недопустимое название профиля."</string>
     <string name="users_list_title" msgid="770764290290240909">"Пользователи"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профили"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s: разрешения"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Хранилище"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музыка"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудиофайлы"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Подождите…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Размер приложения"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Данные пользователя"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Данные профиля"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Всего"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Очистить хранилище"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Отменить синхронизацию"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Проблемы с синхронизацией. Скоро все заработает."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Конфиденциальность"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Данные автомобиля"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Управление доступом приложений к данным о вашем местоположении"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Управление доступом приложений к микрофону"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Данные автомобиля"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Управление информацией о действиях и другими данными, которые сохраняются в системе этого автомобиля"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Удалить профиль"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Удалить все профили и аккаунты из информационно-развлекательной системы"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Это действие недоступно для вашего профиля."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безопасность"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блокировка экрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нет"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"ОК"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Отключить блокировку экрана?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Доступ к вашему аккаунту сможет получить кто угодно."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Блокировка профиля"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Настроить автоматическую разблокировку"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Введите PIN-код"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Введите пароль"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Для защиты системы создайте PIN-код."</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"PIN-код должен содержать менее <xliff:g id="NUMBER">%d</xliff:g> цифр"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"PIN-код должен содержать только цифры."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Использовать недавний PIN-код запрещено"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ИТ-администратор запретил использовать простые PIN-коды. Выберите более сложную комбинацию."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ИТ-администратор запретил использовать простые PIN-коды. Выберите более сложную комбинацию."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Использованы недопустимые символы."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Пароль должен содержать не менее четырех символов."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Использовать недавний пароль запрещено"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Не удалось сохранить пароль"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ИТ-администратор запретил использовать простые пароли. Выберите более сложную комбинацию."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ИТ-администратор запретил использовать простые пароли. Выберите более сложную комбинацию."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Нельзя использовать последовательности из идущих подряд или повторяющихся цифр."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Варианты блокировки экрана"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (<xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. назад)"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Клавиша Ввод"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Выйти из деморежима"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Выход из деморежима"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Произойдет сброс настроек. Тестовый аккаунт и все пользовательские данные будут удалены."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Произойдет сброс настроек. Тестовый аккаунт и все данные профилей будут удалены."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Выйти из деморежима"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЗАКРЫТЬ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Эта функция недоступна во время вождения."</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Невозможно добавить пользователя во время вождения."</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Невозможно добавить профиль во время вождения."</string>
     <string name="default_search_query" msgid="3137420627428857068">"Поиск"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Ассистент и голосовое управление"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Помощник"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Использовать текст с экрана"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Разрешить помощнику использовать контент на экране"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Использовать скриншот"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Разрешить помощнику использовать изображение экрана"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Недавно отправленные"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Все приложения"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профили и аккаунты"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Перейти к другим профилям"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Добавить профиль"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Удалить этот профиль"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Добавить профиль"</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 843bb80..4fd1290 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"සංදර්ශකය"</string>
     <string name="brightness" msgid="2919605130898772866">"දීප්ති මට්ටම"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"අනුවර්තක දීප්තිය"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"පවතින ආලෝකය සඳහා දීප්තිමත් මට්ටම ප්‍රශස්ත කරන්න"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"තිර දීප්තිය පරිසරයට ගළපන්න"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"රාත්‍රී ආලෝකය ක්‍රියාත්මකයි"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"තිරය, ස්පර්ශ තිරය"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"අඳුරු තිරය, ස්පර්ශ තිරය, බැටරිය"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"අඳුරු තිරය, ස්පර්ශ තිරය, බැටරිය"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"අඳුරු තිරය, රාත්‍රිය, වර්ණ ගැන්වීම"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"රාත්‍රී ප්‍රකාරය"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"ජාලය සහ අන්තර්ජාලය"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"ජංගම ජාලය"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"දත්ත භාවිතයේ අවවාද සකසන්න"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"දත්ත භාවිත සීමාවක් සකසන්න"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"සකසන්න"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ජාලය"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB භාවිත කළ %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"වෙනත් ජාලයකට එක් වන්න"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"ජාල මනාප"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ක්‍රියාත්මක කරමින්…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi ක්‍රියා විරහිත කරමින්…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ජාලයට සම්බන්ධ වීමට අසමත් විය"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ජාලය එක් කරන්න"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"සබඳින්න"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"සම්බන්ධ වෙමින්…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"ජාලය පරාසය තුළ නැත"</string>
     <string name="wifi_password" msgid="5565632142720292397">"මුරපදය"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"මුරපදය පෙන්වන්න"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"ජාල නමක් ඇතුළු කරන්න"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"යෙදුමකට ඔබේ ප්‍රධාන ඒකකය තත්පර <xliff:g id="TIMEOUT">%1$d</xliff:g>ක් සඳහා වෙනත් බ්ලූටූත් උපාංගවලට දෘශ්‍යමාන කිරීමට අවශ්‍යයි."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> හට බ්ලූටූත් ක්‍රියාත්මක කර ඔබේ ප්‍රධාන ඒකකය තත්පර <xliff:g id="TIMEOUT">%2$d</xliff:g>ක් සඳහා වෙනත් උපාංගවලට දෘශ්‍යමාන කිරීමට අවශ්‍යයි."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"යෙදුමකට බ්ලූටූත් ක්‍රියාත්මක කර ඔබේ ප්‍රධාන ඒකකය තත්පර <xliff:g id="TIMEOUT">%1$d</xliff:g>ක් සඳහා වෙනත් උපාංගවලට දෘශ්‍යමාන කිරීමට අවශ්‍යයි."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"වෙනත් උපාංගවලට %1$s ලෙස දෘශ්‍යමානයි"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"මගේ උපාංග"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"පෙර සම්බන්ධිත"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s සම්බන්ධ විය"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s විසන්ධි විය"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"බ්ලූටූත් යුගලන ඉල්ලීම"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"යුගලනය සහ සබැඳීම"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"බ්ලූටූත් යුගල කේතය"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"පෙරනිමි දැනුම්දීම් හඬ"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"පෙරනිමි එලාම හඬ"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"සුරකින්න"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"ඇඟවීම් හඬවල්"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"රින්ග්ටෝන්, දැනුම්දීම්, එලාමය"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"දීප්තිය"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"අඩු ආලෝකය සඳහා තිරය ගළපන්න"</string>
     <string name="units_settings" msgid="402325305096925886">"ඒකක"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"වේගය"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"දුර"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"සියලුම යෙදුම් පෙන්වන්න"</string>
     <string name="default_applications" msgid="1558183275638697087">"පෙරනිමි යෙදුම්"</string>
     <string name="app_permissions" msgid="32799922508313948">"යෙදුම් අවසර"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> භාවිතා කරන යෙදුම්"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"ඔබ‍ගේ දත්ත වෙත යෙදුම් ප්‍රවේශය පාලනය කරන්න"</string>
     <string name="applications_settings" msgid="794261395191035632">"යෙදුම් තතු"</string>
     <string name="force_stop" msgid="2153183697014720520">"බලෙන් නවත්වන්න"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"බලෙන් නවතන්න ද?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"අස්ථාපනය"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"ඔබ මෙම යෙදුම අබල කළහොත්, Android සහ වෙනත් යෙදුම් බලාපොරොත්තු වන පරිදි ක්‍රියා නොකරනු ඇත."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"යෙදුම අබල කරන්න"</string>
-    <string name="not_installed" msgid="4218816013370552746">"මෙම පරිශීලකයා සඳහා ස්ථාපනය කර නොමැත"</string>
+    <string name="not_installed" msgid="4163454337822508007">"මෙම පැතිකඩ සඳහා ස්ථාපනය කර නැත"</string>
     <string name="permissions_label" msgid="2701446753515612685">"අවසර"</string>
     <string name="notifications_label" msgid="6586089149665170731">"දැනුම්දීම්"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"ආචයනය සහ කෑෂය"</string>
     <string name="application_version_label" msgid="8556889839783311649">"අනුවාදය: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"අවසර ලබා දී නැත"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"අවසර ඉල්ලා නැත"</string>
+    <string name="unused_apps" msgid="648471933781010395">"භාවිත නොකළ යෙදුම්"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">භාවිත නොකළ යෙදුම් <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="other">භාවිත නොකළ යෙදුම් <xliff:g id="COUNT_1">%d</xliff:g></item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"අවසර ඉවත් කරන්න සහ ඉඩ හිස් කරන්න"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"අභ්‍යන්තර ආචයනයේ %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"දත්ත භාවිතය"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"යෙදුම් දත්ත භාවිතය"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"සැම විටම අසන්න"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"මෙම යෙදුම තුළ විවෘත නොකරන්න"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"සහාය දක්වන සබැඳි"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"යෙදුම්"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"මෑතකදී විවෘත කරන ලද"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"සියලු යෙදුම් %1$d බලන්න"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"අවසර කළමනාකරු"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"ඔබ‍ගේ දත්ත වෙත යෙදුම් ප්‍රවේශය පාලනය කරන්න"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"සහායක සහ තවත් දේ සඳහා"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"පද්ධති සහ වෙනත් සැකසීම්වලට"</string>
     <string name="special_access" msgid="5730278220917123811">"විශේෂ යෙදුම් ප්‍රවේශය"</string>
     <string name="show_system" msgid="4401355756969485287">"පද්ධතිය පෙන්වන්න"</string>
     <string name="hide_system" msgid="8845453295584638040">"පද්ධතිය සඟවන්න"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"පද්ධති යෙදුම් සඟවන්න"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"පද්ධති සැකසීම් විකරණය"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"මෙම අවසරය යෙදුමකට පද්ධති සැකසීම් විකරණයට ඉඩ දෙයි."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"දැනුම්දීම් ප්‍රවේශය"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"මෑත ස්ථාන ඉල්ලීම් නැත"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"යෙදුම්-මට්ටමේ අවසර"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"ස්ථානීය සේවා"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ස්ථානය භාවිත කරන්න"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"පද්ධතිය"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"පද්ධති යාවත්කාලීන"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"උසස්"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"ගැන, නීතිමය තොරතුරු, යළි පිහිටුවීම සහ තවත් දේ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android අනුවාදය"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ආරක්ෂක පැච් මට්ටම"</string>
     <string name="hardware_info" msgid="3973165746261507658">"මාදිලිය සහ දෘඨාංග"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"මෙමඟින් මේ සඳහා සියලු මනාප යළි පිහිටුවනු ඇත:\n\n"<li>"අබලිත යෙදුම්"</li>\n<li>"අබලිත යෙදුම් දැනුම්දීම්"</li>\n<li>"ක්‍රියා සඳහා පෙරනිමි යෙදුම්"</li>\n<li>"යෙදුම් සඳහා පසුබිම් දත්ත සීමා කිරීම්"</li>\n<li>"ඕනෑම අවසර සීමාවක්"</li>\n\n"ඔබට කිසිදු යෙදුම් දත්තයක් නැති වන්නේ නැත."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"යෙදුම් යළි පිහිටුවන්න"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"යෙදුම් මනාප යළි පිහිටුවා ඇත"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"සියලු දත්ත මකන්න (කම්හල් යළි පිහිටුවීම)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"මෙමඟින් මේවා ඇතුළුව, ඔබේ වාහනයේ ප්‍රධාන ඒකකයෙන් සියලුම දත්ත මකනු ඇත:\n\n"<li>"ඔබේ Google ගිණුම"</li>\n<li>"පද්ධති සහ යෙදුම් දත්ත සහ සැකසීම්"</li>\n<li>"බාගත් යෙදුම්"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"ඔබ දැනට පහත ගිණුම් වෙත පුරනය වී සිටියි:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"මෙම වාහනයෙහි වෙනත් පරිශීලකයින් සිටී."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"වාහනය යළි පිහිටුවන්න"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"යළි පිහිටුවන්න ද?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ඔබේ සියලු පුද්ගලික තොරතුරු සහ බාගත් යෙදුම් මකන්න ද? ඔබට මෙම ක්‍රියාව ආපසු හැරවිය නොහැක!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"සියල්ල මකන්න"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"මකමින්"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"රැඳී සිටින්න..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"සියලු දත්ත මකන්න (කර්මාන්තශාලා සැකසීම)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"සියලු දත්ත සහ පැතිකඩවල් තොරතුරු විනෝදාස්වාද පද්ධතියෙන් මකන්න"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"මෙය මේවා ඇතුළුව, ඔබ‍ගේ වාහනයේ විනෝදාස්වාද පද්ධතියෙන් සියලු දත්ත මකනු ඇත:\n\n"<li>"ඔබ‍ගේ Google ගිණුම"</li>\n<li>"පද්ධති සහ යෙදුම් දත්ත සහ සැකසීම්"</li>\n<li>"බාගත් යෙදුම්"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"ඔබ දැනට පහත ගිණුම් වෙත පුරා සිටියි:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"මෙම වාහනයෙහි වෙනත් පැතිකඩවල් ඇත."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"සියලු දත්ත මකන්න"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"සියලු දත්ත මකන්නද?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"මෙම තොරතුරු විනෝදාස්වාද පද්ධතියේ ඔබගේ සියලු පුද්ගලික පැතිකඩ දත්ත, ගිණුම් සහ බාගත් යෙදුම් මකනු ඇත.\n\nඔබට මෙම ක්‍රියාව පසුගමනය කළ නොහැකිය."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"සියල්ල මකන්න"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"මකමින්"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"කරුණාකර රැඳී සිටින්න..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"දිනය සහ වේලාව"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"දිනය, වේලාව, වේලා කලාපය සහ ආකෘති සකසන්න"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ස්වයංක්‍රීය දිනය සහ වේලාව"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"පරිපාලක ලෙස පුරනය වී ඇත"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"පරිපාලක අවසර සියල්ල"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"පරිපාලක කරන්න"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"පරිශීලකයාට වෙනත් පරිපාලකයින් ඇතුළුව, පරිශීලකයින් මැකීමට සහ පද්ධතිය කම්හල් යළි පිහිටුවීමට හැකි වනු ඇත."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"පැතිකඩට වෙනත් පරිපාලකයින් ඇතුළුව, පැතිකඩවල් මැකීමට සහ පද්ධතිය කර්මාන්තශාලා යළි සැකසීම සිදු කිරීමට හැකි වනු ඇත."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"මෙම ක්‍රියාව ආපසු හැරවිය නොහැක."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ඔව්, පරිපාලක කරන්න"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"නව පරිශීලකයින් සාදන්න"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"නව පැතිකඩවල් තනන්න"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"දුරකථන ඇමතුම් ලබා ගන්න"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"මෝටර් රථයේ ජංගම දත්ත හරහා පණිවුඩ යැවීම"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"නව යෙදුම් ස්ථාපන කරන්න"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"යෙදුම් අස්ථාපන කරන්න"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"පරිශීලක එක් කරන්න"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"නව පරිශීලකයා"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"අලුත් පරිශීලක එක් කරනව ද?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ඔබ අලුත් පරිශීලකයෙක් එක් කරන විට, එම පුද්ගලයාට තමන්ගේ ඉඩ සකසා ගැනීමට අවශ්‍ය වේ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"සියලුම අනෙක් පරිශීලකයින් සඳහා ඕනෑම පරිශීලකයෙකුට යෙදුම් යාවත්කාලීන කළ හැක."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"පරිශීලක සීමාවට ළඟා විය"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">ඔබට පරිශීලකයින් <xliff:g id="COUNT">%d</xliff:g> දෙනෙක් දක්වා නිර්මාණ කළ හැක.</item>
-      <item quantity="other">ඔබට පරිශීලකයින් <xliff:g id="COUNT">%d</xliff:g> දෙනෙක් දක්වා නිර්මාණ කළ හැක.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"පැතිකඩ එක් කරන්න"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"නව පැතිකඩ"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"නව පැතිකඩ එක් කරන්නද?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"ඔබ අලුත් පැතිකඩක් එක් කරන විට, එම පුද්ගලයා තමන්ගේ ඉඩ පිහිටුවා ගැනීම අවශ්‍ය වේ."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ඕනෑම පැතිකඩකට අනෙක් සියලු පැතිකඩ සඳහා යෙදුම් යාවත්කාලීන කළ හැකිය."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"පැතිකඩ සීමාව ළඟා විය"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">ඔබට පැතිකඩ <xliff:g id="COUNT">%d</xliff:g>ක් දක්වා තැනිය හැකිය.</item>
+      <item quantity="other">ඔබට පැතිකඩ <xliff:g id="COUNT">%d</xliff:g>ක් දක්වා තැනිය හැකිය.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"නව පරිශීලකයෙකු සෑදීමට අසමත් විය"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"මෙම පරිශීලකයා මකන්නද?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"සියලුම යෙදුම් සහ දත්ත මකා දැමෙනු ඇත."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"පරිශීලක මකා දැමීමට අසමත් විය."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"නව පැතිකඩක් තැනීම අසාර්ථක විය"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"මෙම පැතිකඩ මකන්නද?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"මෙම පැතිකඩ සඳහා වන සියලු යෙදුම් සහ දත්ත මකනු ඇත."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"පැතිකඩ මැකීම අසාර්ථක විය."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"ඔබ පැතිකඩවල් මාරු කරන විට හෝ වාහනය යළි පණගන්වන විට මෙම පැතිකඩ මකනු ඇත."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ඉවතලන්න"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"යළි උත්සාහ කරන්න"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"අවසාන පරිශීලක මකන්නද?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"මෙම මෝටර් රථය සඳහා ඉතිරිව ඇති ඉතිරි පරිශීලක මකා දැමීමෙන් පසු, නව පරිපාලක පරිශීලකයකු තනනු ඇත."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"මෙම පරිශීලකයාට සම්බන්ධ සියලු දත්ත, සැකසීම් සහ යෙදුම් මකා දමනු ලැබේ. ඔබ නැවතත් පද්ධතිය සැකසිය යුතුයි."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"අවසන් ඉතිරි පැතිකඩ මකන්නද?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"මෙම වාහනය සඳහා ඉතිරිව ඇති එකම පැතිකඩ ඔබ මැකුවහොත්, මෙම පැතිකඩ හා සම්බන්ධ සියලු දත්ත, සැකසීම් සහ යෙදුම් මකනු ඇත."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"යළි සැකසීමෙන් පසුව, ඔබට නව පැතිකඩක් පිහිටුවිය හැකිය."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"නව පරිපාලක තෝරන්න"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"ඔබට අවම වශයෙන් එක් පරිපාලකයෙකු සිටිය යුතුය. මෙම කොටස මකා දැමීම සඳහා, මුලින්ම විකල්පයක් තෝරා ගන්න."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"පරිපාලක තෝරන්න"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"ඔබ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"නම‍"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"සකසා නැත"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"පරිශීලක නම සංස්කරණය"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"පැතිකඩ නම සංස්කරණය කරන්න"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ක්ෂේත්‍රය හිස් විය නොහැක."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ඇතුළු කළ පරිශීලක නාමය අවලංගුයි."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ඇතුළු කළ පැතිකඩ නම වලංගු නැත."</string>
     <string name="users_list_title" msgid="770764290290240909">"පරිශීලකයින්"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"පැතිකඩවල්"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ට අවසර දෙන ලදි"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"ආචයනය"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"සංගීතය සහ ශ්‍රව්‍ය"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ශ්‍රව්‍ය ගොනු"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"ගණනය කරමින්…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"යෙදුම් විශාලත්වය"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"පරිශීලක දත්ත"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"පැතිකඩ දත්ත"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"හැඹිලිය"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"එකතුව"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ආචයනය හිස් කරන්න"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"සමමුහුර්තය අවලංගු කරන්න"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"සමමුහුර්තය දැනට ගැටලුවලට මුහුණ පා ඇත. එය සුළු මොහොතකින් ආපසු පැමිණෙනු ඇත."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"රහස්‍යතාව"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"වාහන දත්ත"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"ඔබගේ ස්ථානයට යෙදුම් ප්‍රවේශය පාලනය කරන්න"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"මයික්‍රෆෝනය"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"මයික්‍රෆෝනය වෙත යෙදුම් ප්‍රවේශය පාලනය කරන්න"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"වාහන දත්ත"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"මෙම වාහනයේ සුරකින ලද ක්‍රියාකාරකම් සහ තොරතුරු කළමනාකරණය කරන්න"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"ඔබගේ පැතිකඩ මකන්න"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ඔබ‍ගේ පැතිකඩ සහ ගිණුම් විනෝදාස්වාද පද්ධතියෙන් මකන්න"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"මෙම ක්‍රියාව ඔබගේ පැතිකඩ සඳහා ලබා ගත නොහැකිය"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ආරක්ෂාව"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"තිර අගුල"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"කිසිවක් නැත"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"හරි"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"තිර අගුල ඉවත් කරන්නද?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"මෙය ඔබගේ ගිණුමට පිවිසීමට ඕනෑම අයෙකුට ඉඩ දෙනු ඇත"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"පැතිකඩ අගුල"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ස්වයංක්‍රිය අගුලු හැරීම පිහිටුවන්න"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ඔබේ PIN ඇතුළු කරන්න"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ඔබේ මුරපදය ඇතුළු කරන්න"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ආරක්ෂාව සඳහා, PIN එකක් සකසන්න"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ඉලක්කම් <xliff:g id="NUMBER">%d</xliff:g>කට වඩා අඩු විය යුතුය"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"0-9 දක්වා ඉලක්කම් පමණක් අඩංගු විය යුතුය."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"උපාංග පරිපාලක මෑත PIN එකක් භාවිතා කිරීමට ඉඩ නොදේ"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ඔබේ IT පරිපාලක විසින් සුලබ PIN අවහිර කරනු ලැබේ. වෙනස් PIN එකක් උත්සාහ කරන්න."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ඔබේ IT පරිපාලක විසින් සුලබ PIN අවහිර කරනු ලැබේ. වෙනස් PIN එකක් උත්සාහ කරන්න."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"මෙහි අවලංගු අනුලකුණක් ඇතුළත් විය නොහැකිය."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"මුරපදය වලංගු නොවන අතර, අවම වශයෙන් අනුලකුණු 4ක් විය යුතුය."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"උපාංග පරිපාලක මෑත මුරපදයක් භාවිතා කිරීමට අවසර නොදේ"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"මුරපදය සුරැකීමේ දෝෂයකි"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ඔබේ IT පරිපාලක විසින් සුලබ මුරපද අවහිර කරනු ලැබේ. වෙනස් මුරපදයක් උත්සාහ කරන්න."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ඔබේ IT පරිපාලක විසින් සුලබ මුරපද අවහිර කරනු ලැබේ. වෙනස් මුරපදයක් උත්සාහ කරන්න."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ආරෝහණ, අවරෝහණ හෝ පුනරාවර්ත අනුක්‍රමයේ ඉලක්කම්වලට ඉඩ නොදේ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"තිර අගුළු විකල්ප"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : දින <xliff:g id="NUM_DAYS">%3$s</xliff:g>කට පෙර"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter යතුර"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ආදර්ශනයෙන් ඉවත් වන්න"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ආදර්ශන ප්‍රකාරයෙන් ඉවත් වන්න"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"මෙමගින් ආදර්ශන ගිණුම මකා පද්ධතිය කර්මාන්තශාලා දත්ත යළි පිහිටුවීම කරනු ඇත. සියලු පරිශීලක දත්ත අහිමි වනු ඇත."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"මෙය ආදර්ශන ගිණුම මකා පද්ධතිය කර්මාන්තශාලා දත්ත යළි පිහිටුවීම සිදු කරනු ඇත. සියලු පරිශීලක දත්ත අහිමි වනු ඇත."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ආදර්ශනයෙන් ඉවත් වන්න"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"අස් කරන්න"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"රිය පදවන අතරේ විශේෂාංගය නොමැත"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"රිය පදවන අතරේ පරිශීලකයා එක් කළ නොහැක"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"රිය පදවන අතරතුර පැතිකඩ එක් කළ නොහැකිය"</string>
     <string name="default_search_query" msgid="3137420627428857068">"සෙවීම"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"සහායක සහ කටහඬ"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"සහායක යෙදුම"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"තිරයෙන් පෙළ භාවිත කරන්න"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"තිර අන්තර්ගතයට ප්‍රවේශ වීමට සහායකට ඉඩ දෙන්න"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"තිර රුව භාවිත කරන්න"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"තිර රූපයට ප්‍රවේශ වීමට සහායකට ඉඩ දෙන්න"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"මෑතකදී එවන ලද"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"සියලු යෙදුම්"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"පැතිකඩ සහ ගිණුම්"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"අනෙකුත් පැතිකඩවල් කළමණාකරණය කරන්න"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"පැතිකඩක් එක් කරන්න"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"මෙම පැතිකඩ මකන්න"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"පැතිකඩ එක් කරන්න"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 4c32dde..7e1772e 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Obrazovka"</string>
     <string name="brightness" msgid="2919605130898772866">"Úroveň jasu"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prispôsobivý jas"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimalizovať jas podľa okolitého svetla"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Prispôsobenie jasu obrazovky prostrediu"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nočný režim je zapnutý"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"obrazovka, dotyková obrazovka"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"stlmiť obrazovku, dotyková obrazovka, batéria"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"stlmiť obrazovku, dotyková obrazovka, batéria"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"stlmenie obrazovky, noc, tónovanie"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nočný režim"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Sieť a internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilná sieť"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Nastavenie upozornenia na spotrebu dát"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Nastavenie limitu spotreby dát"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Nastaviť"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Sieť OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Od %2$s do %3$s bola spotreba %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Pripojenie k inej sieti"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Nastavenia siete"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Zapína sa Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Vypína sa Wi‑Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nepodarilo sa pripojiť k sieti"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pridať sieť"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Pripojiť"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Pripája sa…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Sieť nie je v dosahu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Heslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Zobraziť heslo"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Zadajte názov siete"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikácia chce na <xliff:g id="TIMEOUT">%1$d</xliff:g> s prepnúť autorádio do režimu, v ktorom bude viditeľné pre ostatné zariadenia Bluetooth."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> chce na <xliff:g id="TIMEOUT">%2$d</xliff:g> s zapnúť Bluetooth a prepnúť autorádio do režimu, v ktorom bude viditeľné pre ostatné zariadenia."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikácia chce na <xliff:g id="TIMEOUT">%1$d</xliff:g> s zapnúť Bluetooth a prepnúť autorádio do režimu, v ktorom bude viditeľné pre ostatné zariadenia."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Ostatným zariadeniam sa zobrazuje ako %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moje zariadenia"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Predtým pripojené zariadenia"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Zariadenie %1$s je pripojené"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Zariadenie %1$s je odpojené"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Žiadosť o párovanie zariadenia Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párovať a pripojiť"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Párovací kód Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Predvolený zvuk upozornenia"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Predvolený zvuk budíka"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Uložiť"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvuky upozornení"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Tón zvonenia, upozornenia, budík"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Jas"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Prispôsobujte obrazovku pri slabom svetle"</string>
     <string name="units_settings" msgid="402325305096925886">"Jednotky"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Rýchlosť"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Vzdialenosť"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Zobraziť všetky aplikácie"</string>
     <string name="default_applications" msgid="1558183275638697087">"Predvolené aplikácie"</string>
     <string name="app_permissions" msgid="32799922508313948">"Povolenia aplikácie"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikácie s povoleniami <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Ovládanie prístupu aplikácií k vašim údajom"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informácie o aplikáciách"</string>
     <string name="force_stop" msgid="2153183697014720520">"Vynútiť zastavenie"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Chcete vynútiť zastavenie?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Odinštalovať"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ak aplikáciu deaktivujete, systém a ďalšie aplikácie už nemusia fungovať podľa očakávaní."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktivovať aplikáciu"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Pre tohto používateľa nebola nainštalovaná"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nie je nainštalovaná pre tento profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Povolenia"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Upozornenia"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Ukladací priestor a vyrovnávacia pamäť"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzia: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Neboli udelené žiadne povolenia"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Neboli požadované žiadne povolenia"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Nepoužívané aplikácie"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nepoužívané aplikácie</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> unused apps</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nepoužívaných aplikácií</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nepoužívaná aplikácia</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Odstraňovať povol. a uvoľňovať priestor"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s v internom úložisku"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Spotreba dát"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Spotreba dát aplikácie"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Vždy sa opýtať"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Neotvárať v tejto aplikácii"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podporované odkazy"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikácie"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedávno otvorené"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Zobraziť všetky aplikácie (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Správca povolení"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Ovládajte prístup aplikácií k vašim údajom"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Pre Asistenta a ďalšie aplikácie"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Pre systém a ďalšie nastavenia"</string>
     <string name="special_access" msgid="5730278220917123811">"Špeciálny prístup aplikácií"</string>
     <string name="show_system" msgid="4401355756969485287">"Zobraziť systémové"</string>
     <string name="hide_system" msgid="8845453295584638040">"Skryť systémové procesy"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Skryť systémové aplikácie"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Úprava nastavení systému"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Toto povolenie umožňuje aplikácii upravovať nastavenia systému."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Prístup k upozorneniam"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žiadne nedávne žiadosti o polohu"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Povolenia na úrovni aplikácie"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Služby určovania polohy"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Používať polohu"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizácie systému"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Rozšírené"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Popis, právne informácie, reset a ďalšie"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzia Androidu"</string>
     <string name="security_patch" msgid="4794276590178386903">"Úroveň opráv zabezpečenia systému"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model a hardvér"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Touto akciou resetujete nasledujúce nastavenia:\n\n "<li>"deaktivované aplikácie,"</li>\n" "<li>"deaktivované upozornenia aplikácií,"</li>\n" "<li>"predvolené aplikácie pre rôzne akcie,"</li>\n" "<li>"obmedzenia dátových prenosov na pozadí pre aplikácie,"</li>\n" "<li>"všetky obmedzenia povolení."</li>\n\n" Neprídete o žiadne dáta aplikácií."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Obnoviť aplikácie"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Nastavenia aplikácií boli resetované"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Vymazať dáta (obnoviť výrobné nastavenia)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Týmto vymažete z riadiacej jednotky vozidla všetky dáta, napríklad:\n\n"<li>"svoj účet Google,"</li>\n<li>"dáta aj nastavenia systému a aplikácií,"</li>\n<li>"stiahnuté aplikácie."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Aktuálne ste prihlásený/-á do nasledujúcich účtov:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tomto vozidle sú ďalší používatelia."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetovať vozidlo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetovať?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Chcete vymazať všetky osobné údaje a stiahnuté aplikácie? Túto akciu nebude možné vrátiť späť."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vymazať všetko"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Prebieha vymazávanie"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Čakajte…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Vymazať dáta (obnoviť výrobné nastavenia)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Vymazanie všetkých údajov a profilov z palubného systému"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Týmto vymažete všetky údaje z palubného systému vozidla vrátane:\n\n"<li>"svojho účtu Google,"</li>\n<li>"dát a nastavení systému aj aplikácií,"</li>\n<li>"stiahnutých aplikácií."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Aktuálne ste prihlásený/-á do nasledujúcich účtov:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"V tomto vozidle sú ďalšie profily."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Vymazať všetky údaje"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Chcete vymazať všetky údaje?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Týmto vymažete všetky údaje svojho osobného profilu, účty aj stiahnuté aplikácie v tomto palubnom systéme.\n\nTúto akciu nemôžete vrátiť späť."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Vymazať všetko"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Maže sa"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Čakajte…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dátum a čas"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nastaviť dátum, čas, časové pásmo a formáty"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatický dátum a čas"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prihlásený/-á ako správca"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Všetky povolenia správcu"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nastaviť ako správcu"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Používateľ bude môcť odstrániť ostatných používateľov (vrátane správcov) a obnoviť systém do výrobných nastavení."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil bude môcť odstrániť profily (vrátane iných správcov) a obnoviť výrobné nastavenia systému."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Túto akciu nie je možné vrátiť späť."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Áno, nastaviť ako správcu"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Vytvorenie nových používateľov"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Vytvárať nové profily"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonovanie"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS cez mobilné dáta auta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Inštalácia nových aplikácií"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinštalovanie aplikácií"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridať používateľa"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nový používateľ"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Pridať nového používateľa?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Každý používateľ môže aktualizovať aplikácie pre všetkých ostatných používateľov."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dosiahnutý limit počtu používateľov"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="few">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> používateľov.</item>
-      <item quantity="many">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
-      <item quantity="other">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> používateľov.</item>
-      <item quantity="one">Môžete vytvoriť iba jedného používateľa.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Pridanie profilu"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nový profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Chcete pridať nový profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Keď pridáte nový profil, musí si nastaviť vlastný priestor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Každý profil môže aktualizovať aplikácie pre všetky ostatné profily."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Dosiahnutý maximálny počet profilov"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="few">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> profily.</item>
+      <item quantity="many">You can create up to <xliff:g id="COUNT">%d</xliff:g> profiles.</item>
+      <item quantity="other">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> profilov.</item>
+      <item quantity="one">Dá sa vytvoriť iba jeden profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Vytvorenie nového používateľa zlyhalo"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Odobrať tohto používateľa?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Všetky aplikácie a dáta budú odstránené."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Používateľa sa nepodarilo odstrániť."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Nový profil sa nepodarilo vytvoriť"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Chcete odstrániť tento profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Všetky aplikácie a údaje v tomto profile budú odstránené"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profil sa nepodarilo odstrániť."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Keď prepnete profily alebo reštartujete vozidlo, tento profil bude odstránený."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zavrieť"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Skúsiť znova"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Odstrániť posledného používateľa?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po odstránení posledného zostávajúceho používateľa tohto auta sa vytvorí nový správca."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Všetky údaje, nastavenia a aplikácie priradené k tomuto používateľovi budú odstránené. Budete musieť znova nastaviť systém."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Chcete odstrániť posledný profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ak odstránite posledný profil tohto vozidla, všetky údaje, nastavenia a aplikácie spojené s týmto profilom budú vymazané."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Po resetovaní môžete vytvoriť nový profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Výber nového správcu"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrebujete aspoň jedného správcu. Ak chcete tohto odstrániť, najprv vyberte jeho náhradníka."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Vybrať správcu"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Meno"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nenastavené"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Úprava používateľského mena"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Úprava mena v profile"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Pole nesmie byť prázdne."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Zadané používateľské meno je neplatné."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Zadané meno v profile je neplatné."</string>
     <string name="users_list_title" msgid="770764290290240909">"Používatelia"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profily"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Povolenia používateľa %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Úložisko"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Hudba a zvuk"</string>
@@ -512,10 +547,10 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Zvukové súbory"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Prebieha výpočet…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Veľkosť aplikácie"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Údaje používateľa"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Údaje profilu"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Vyrovnávacia pamäť"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Celkove"</string>
-    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Vymazať priestor"</string>
+    <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Vymazať obsah úložiska"</string>
     <string name="storage_clear_cache_btn_text" msgid="8449547925966775612">"Vymazať vyrovnávaciu pamäť"</string>
     <string name="storage_clear_data_dlg_title" msgid="5863775997588969879">"Chcete odstrániť dáta aplikácie?"</string>
     <string name="storage_clear_data_dlg_text" msgid="795055288575727801">"Všetky údaje tejto aplikácie vrátane súborov, nastavení, účtov, databáz atď. budú navždy odstránené."</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Zrušiť synchronizáciu"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Vyskytli sa problémy so synchronizáciou. Služba bude čoskoro obnovená."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Ochrana súkromia"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Údaje o vozidle"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Ovládať prístup aplikácií k polohe"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofón"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Ovládanie prístupu aplikácií k mikrofónu"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Údaje o vozidle"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Správa aktivít a informácií uložených v tomto vozidle"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Odstrániť profil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Vymazanie profilu a účtov z palubného systému"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Táto akcia nie je k dispozícii pre váš profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpečenie"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zámka obrazovky"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Žiadna zámka"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Odstrániť zámku obrazovky?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Ktokoľvek bude mať prístup do vášho účtu"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zámka profilu"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Nastavte si automatického odomykanie"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Zadajte PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Zadajte svoje heslo"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Z bezpečnostných dôvodov nastavte PIN"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Musí mať menej ako <xliff:g id="NUMBER">%d</xliff:g> číslic"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Musí obsahovať len číslice 0 až 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Správca zariadenia neumožňuje používať nedávny kód PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Bežné kódy PIN zablokoval správca IT. Skúste iný PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Bežné kódy PIN zablokoval správca IT. Skúste iný PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Musí obsahovať iba platné znaky."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Heslo nie je platné, musí obsahovať najmenej 4 znaky."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Správca zariadenia neumožňuje používať nedávne heslo"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Pri ukladaní hesla sa vyskytla chyba"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Bežné heslá zablokoval správca IT. Skúste iné heslo."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Bežné heslá zablokoval správca IT. Skúste iné heslo."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Vzostupná, zostupná alebo opakovaná sekvencia čísiel nie je povolená."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámky obrazovky"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : pred <xliff:g id="NUM_DAYS">%3$s</xliff:g> dňami"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Kláves Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Ukončiť ukážku"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ukončenie ukážkového režimu"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ukážkový účet bude odstránený a systém sa obnoví do výrobných nastavení. Všetky dáta používateľa budú stratené."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Týmto odstránite ukážkový účet a obnovíte výrobné nastavenia systému. O všetky údaje profilu prídete."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Ukončiť ukážku"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ZAVRIEŤ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcia nie je k dispozícii počas jazdy"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Za jazdy nie je možné pridať používateľa"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Za jazdy sa nedá pridať profil"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Hľadať"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistent a hlas"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Asistenčná aplikácia"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Použiť text z obrazovky"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Povoľte asistenčnej aplikácii prístup k obsahu obrazovky"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Použiť snímku obrazovky"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Povoľte asistenčnej aplikácii prístup k obrázku obrazovky"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedávno odoslané"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Všetky aplikácie"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profily a účty"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Spravovať iné profily"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Pridať profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Odstrániť tento profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Pridanie profilu"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index c127db4..1cce21a 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Zaslon"</string>
     <string name="brightness" msgid="2919605130898772866">"Raven svetlosti"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Prilagodljiva svetlost"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimiziranje ravni svetlosti glede na razpoložljivo svetlobo"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Prilagajanje svetlosti zaslona okolici"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nočna svetloba je vklopljena"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"zaslon, zaslon na dotik"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"zatemnitev zaslona, zaslon na dotik, akumulator"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatemnitev zaslona, zaslon na dotik, akumulator"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"zatemnitev zaslona, noč, obarvanje"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nočni način"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Omrežje in internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilno omrežje"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Nastavitev opozorila o prenes. količini podatkov"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Nastavitev omejitve količine prenesenih podatkov"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Nastavi"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Omrežje OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB uporabljenih %2$s–%3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Pridružitev drugemu omrežju"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Omrežne nastavitve"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Vklapljanje povezave Wi‑Fi …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Izklapljanje povezave Wi‑Fi …"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Vzpostavljanje povezave z omrežjem ni uspelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj omrežje"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Povezovanje …"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Omrežje ni v dosegu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Geslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži geslo"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Vnesite ime omrežja"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Aplikacija želi omogočiti, da bo avtomobilski vmesnik viden drugim napravam Bluetooth toliko sekund: <xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> želi vklopiti Bluetooth in omogočiti, da bo avtomobilski vmesnik viden drugim napravam toliko sekund: <xliff:g id="TIMEOUT">%2$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Aplikacija želi vklopiti Bluetooth in omogočiti, da bo avtomobilski vmesnik viden drugim napravam toliko sekund: <xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Drugim napravam vidna kot %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Moje naprave"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Predhodno povezane naprave"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s – povezava vzpostavljena"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s – povezava prekinjena"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahteva za seznanitev naprave Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Seznanitev in povezava"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Koda za seznanitev naprave Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Privzeti zvok obvestila"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Privzeti zvok alarma"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Shrani"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Zvoki opozoril"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ton zvonjenja, obvestila, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Svetlost"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Prilagajanje svetlosti pri šibki svetlobi"</string>
     <string name="units_settings" msgid="402325305096925886">"Enote"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hitrost"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Razdalja"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Pokaži vse aplikacije"</string>
     <string name="default_applications" msgid="1558183275638697087">"Privzete aplikacije"</string>
     <string name="app_permissions" msgid="32799922508313948">"Dovoljenja za aplikacije"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacije, ki uporabljajo to: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Nadzor dostopa aplikacij do podatkov"</string>
     <string name="applications_settings" msgid="794261395191035632">"Podatki o aplikaciji"</string>
     <string name="force_stop" msgid="2153183697014720520">"Prisilna ustavitev"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Želite prisilno ustaviti aplikacijo?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Odmesti"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Če onemogočite to aplikacijo, Android in druge aplikacije morda ne bodo več delovali, kot bi morali."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogočanje aplikacije"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ni nameščeno za tega uporabnika"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Ni nameščeno za ta profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dovoljenja"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Obvestila"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Shramba in predpomnilnik"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Različica: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ni odobrenih dovoljenj"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ni zahtevanih dovoljenj"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Neuporabljene aplikacije"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> neuporabljena aplikacija</item>
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> neuporabljeni aplikaciji</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> neuporabljene aplikacije</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> neuporabljenih aplikacij</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Odstrani dovoljenja in sprosti prostor"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s v notranji shrambi"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Prenes. količina podatkov"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Pren. kol. podat. aplik."</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Vedno vprašaj"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ne odpri v tej aplikaciji"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Podprte povezave"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacije"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Nedavno odprte"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Ogled vseh toliko aplikacij: %1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Upravitelj dovoljenj"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Nadzor dostopa aplikacij do podatkov"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Za Pomočnika in drugo"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Na nastavitve sistema in druge nastavitve"</string>
     <string name="special_access" msgid="5730278220917123811">"Posebni dostop za aplikacije"</string>
     <string name="show_system" msgid="4401355756969485287">"Prikaz sistemskih procesov"</string>
     <string name="hide_system" msgid="8845453295584638040">"Skrivanje sistemskih procesov"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Skrivanje sistemskih aplikacij"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Spreminjanje sist. nastavitev"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"To dovoljenje aplikaciji dovoljuje spreminjanje sistemskih nastavitev."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Dostop do obvestil"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ni nedavnih zahtev za lokacijo"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dovoljenja na ravni aplikacije"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Lokacijske storitve"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Uporaba lokacije"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Posodobitve sistema"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Dodatno"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Vizitka, pravne informacije, ponastavitev in drugo"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Različica Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Raven popravkov za varnost v Androidu"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model in strojna oprema"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"S tem bodo ponastavljene vse nastavitve za:\n\n"<li>" onemogočene aplikacije,"</li>\n<li>" obvestila za onemogočene aplikacije,"</li>\n<li>" privzete aplikacije za dejanja,"</li>\n<li>" omejitev prenosa podatkov v ozadju za aplikacije,"</li>\n<li>" omejitve dovoljenj."</li>\n\n" Podatkov aplikacij ne boste izgubili."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ponastavi aplikacije"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Nastavitve aplikacij so ponastavljene"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Izbriši vse podatke (pon. na tov. nast.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"S tem boste iz glavne enote vozila izbrisali vse podatke, med drugim:\n\n"<li>"Račun za Google"</li>\n<li>"Podatke in nastavitve sistema in aplikacij"</li>\n<li>"Prenesene aplikacije"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni v te račune:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tem vozilu so drugi uporabniki."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Ponastavi vozilo"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Želite ponastaviti?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite izbrisati vse osebne podatke in prenesene aplikacije? Tega dejanja ni mogoče razveljaviti."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši vse"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Počakajte ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Izbriši vse podatke (tovarniška ponast.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Izbris vseh podatkov in profilov iz informativno-razvedrilnega sistema"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"S tem boste iz informativno-razvedrilnega sistema vozila izbrisali vse podatke, med drugim:\n\n"<li>"račun Google,"</li>\n<li>"podatke in nastavitve sistema in aplikacij,"</li>\n<li>"prenesene aplikacije."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Trenutno ste prijavljeni v te račune:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"V tem vozilu so drugi profili."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Brisanje vseh podatkov"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Želite izbrisati vse podatke?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"S tem bodo v informativno-razvedrilnem sistemu izbrisani vsi podatki osebnega profila, računi in prenesene aplikacije.\n\nTega dejanja ni mogoče razveljaviti."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Izbriši vse"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Brisanje"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Počakajte …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum in ura"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nastavi datum, uro, časovni pas in oblike"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Samodejna datum in ura"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kot skrbnik"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Vsa dovoljenja za skrbnika"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Spremeni v skrbnika"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Uporabnik bo lahko brisal uporabnike, vključno s skrbniki, ter sistem ponastavil na tovarniške nastavitve."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil bo lahko brisal profile, vključno z drugimi skrbniki, ter sistem ponastavil na tovarniške nastavitve."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Dejanja ne bo mogoče preklicati."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, spremeni v skrbnika"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Ustvarjanje novih uporabnikov"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Ustvarjanje novih profilov"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefoniranje"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sporočanje prek mob. povezave avta"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Namestitev novih aplikacij"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odstranitev aplikacij"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodajanje uporabnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nov uporabnik"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodaj. novega uporabnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Vsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Omejitev uporabnikov je dosežena"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnika.</item>
-      <item quantity="two">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnika.</item>
-      <item quantity="few">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnike.</item>
-      <item quantity="other">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnikov.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Dodajanje profila"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Nov profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Želite dodati nov profil?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Ko dodate nov profil, mora ta oseba nastaviti svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Vsak profil lahko posodobi aplikacije za vse druge profile."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Dosežena omejitev števila profilov"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> profil.</item>
+      <item quantity="two">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> profila.</item>
+      <item quantity="few">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> profile.</item>
+      <item quantity="other">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> profilov.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Ni uspelo ustvariti novega uporabnika."</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbris tega uporabnika?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Vse aplikacije in vsi podatki bodo izbrisani."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje uporabnika ni uspelo."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Novega profila ni bilo mogoče ustvariti"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Želite izbrisati ta profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Vse aplikacije in podatki za ta profil bodo izbrisani."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profila ni bilo mogoče izbrisati."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ta profil bo izbrisan, ko preklopite med profili ali znova zaženete vozilo."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Opusti"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Poskusi znova"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Izbris zadnj. uporabnika?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po izbrisu edinega preostalega uporabnika za ta avtomobil bo ustvarjen nov skrbnik."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Vsi podatki, nastavitve in aplikacije, povezani s tem uporabnikom, bodo izbrisani. Znova boste morali nastaviti sistem."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Želite izbrisati preostali profil?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Če izbrišete edini preostali profil za to vozilo, bodo izbrisani vsi podatki, nastavitve in aplikacije, povezani s tem profilom."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Po ponastavitvi lahko nastavite nov profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Izberite novega skrbnika"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrebujete vsaj enega skrbnika. Če želite izbrisati tega, najprej izberite zamenjavo."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Izberite skrbnika"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Uporabnik ni nastavljen"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Urejanje imena uporabnika"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Urejanje imena profila"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Polje ne sme biti prazno."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Vneseno uporabniško ime ni veljavno."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Vneseno ime profila ni veljavno."</string>
     <string name="users_list_title" msgid="770764290290240909">"Uporabniki"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profili"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Dovoljenja, odobrena osebi %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Shramba"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Glasba in zvok"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Zvočne datoteke"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Izračunavanje …"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Velikost aplikacije"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Uporabniški podatki"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Podatki profila"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Predpomnilnik"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Skupaj"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Počisti shrambo"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Prekliči sinhronizacijo"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Težava pri sinhronizaciji. Kmalu bo spet na voljo."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Zasebnost"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Podatki o vozilu"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Nadziranje dostopa aplikacije do lokacije"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Nadziranje dostopa aplikacije do mikrofona"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Podatki o vozilu"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Upravljanje dejavnosti in podatkov, shranjenih v tem vozilu."</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Brisanje profila"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Izbris profila in računov iz informativno-razvedrilnega sistema"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"To dejanje ni na voljo za vaš profil."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Varnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaklepanje zaslona"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Brez"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"V redu"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Želite odstr. zaklep. zaslona?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"S tem bo lahko vsak dostopal do računa."</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Zaklepanje profila"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Nastavitev samodejnega odklepanja"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Vnesite kodo PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Vnesite geslo"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Zaradi varnosti nastavite kodo PIN"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Vsebovati mora manj kot toliko števk: <xliff:g id="NUMBER">%d</xliff:g>."</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Vsebovati sme samo števke od 0 do 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Skrbnik naprave ne dovoli uporabe nedavne kode PIN."</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Skrbnik za IT je blokiral pogoste kode PIN. Poskusite z drugo kodo PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Skrbnik za IT je blokiral pogoste kode PIN. Poskusite z drugo kodo PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Ne sme vsebovati neveljavnih znakov."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Geslo je neveljavno, vsebovati mora najmanj 4 znake."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Skrbnik naprave ne dovoli uporabe nedavnega gesla."</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Napaka pri shranjevanju gesla"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Skrbnik za IT je blokiral pogosta gesla. Poskusite z drugim geslom."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Skrbnik za IT je blokiral pogosta gesla. Poskusite z drugim geslom."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Naraščajoč, padajoč ali ponavljajoč se niz števk je prepovedan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zaklepanja zaslona"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pred toliko dnevi: <xliff:g id="NUM_DAYS">%3$s</xliff:g>"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tipka Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Zapri predstavitev"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Zapri predstavitveni način"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"S tem izbrišete predstavitveni račun in ponastavite sistem na tovarniške nastavitve. Vsi uporabniški podatki bodo izgubljeni."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"S tem izbrišete predstavitveni račun in ponastavite sistem na tovarniške nastavitve. Vsi podatki profila bodo izgubljeni."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Zapri predstavitev"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"OPUSTI"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funkcija med vožnjo ni na voljo"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Med vožnjo ni mogoče dodati uporabnika"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Med vožnjo ni mogoče dodati profila."</string>
     <string name="default_search_query" msgid="3137420627428857068">"Iskanje"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Pomočnik in govor"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacija Pomočnik"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Uporaba besedila na zaslonu"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Omogočanje Pomočniku dostop do vsebine zaslona"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Uporaba posnetka zaslona"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Omogočanje Pomočniku dostop do slike zaslona"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nedavno poslano"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Vse aplikacije"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profili in računi"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Upravljaj druge profile"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Dodaj profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Izbriši ta profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Dodajanje profila"</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index a785c13..090861f 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekrani"</string>
     <string name="brightness" msgid="2919605130898772866">"Niveli i ndriçimit"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Ndriçimi i përshtatshëm"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimizo nivelin e ndriçimit sipas ambientit"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Rregullo ndriçimin e ekranit sipas ambientit"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"\"Drita e natës\" është aktive"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, ekran me prekje"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"zbeh ekranin, ekran me prekje, bateri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zbeh ekranin, ekran me prekje, bateri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"errëso ekranin, natë, ngjyrosje"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modaliteti i natës"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Rrjeti dhe interneti"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Rrjeti celular"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Cakto paralajmërimin për përdorimin e të dhënave"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Cakto kufirin e përdorimit të të dhënave"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Cakto"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Rrjeti OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Të përdorura: %1$d MB (%2$s - %3$s)"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Bashkohu në një rrjet tjetër"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Preferencat e rrjetit"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Po aktivizon Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Po çaktivizon Wi‑Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Lidhja me rrjetin dështoi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Shto një rrjet"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Lidhu"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Po lidhet…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Rrjeti nuk është brenda rrezes"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Fjalëkalimi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Shfaq fjalëkalimin"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Fut një emër rrjeti"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Një aplikacion kërkon ta bëjë njësinë tënde kryesore të dukshme ndaj pajisjeve të tjera me Bluetooth për <xliff:g id="TIMEOUT">%1$d</xliff:g> sekonda."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> kërkon të aktivizojë Bluetooth-in dhe ta bëjë njësinë tënde kryesore të dukshme ndaj pajisjeve të tjera për <xliff:g id="TIMEOUT">%2$d</xliff:g> sekonda."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Një aplikacion kërkon të aktivizojë Bluetooth-in dhe ta bëjë njësinë tënde kryesore të dukshme ndaj pajisjeve të tjera për <xliff:g id="TIMEOUT">%1$d</xliff:g> sekonda."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"E dukshme si %1$s për pajisjet e tjera"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Pajisjet e mia"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Të lidhura më parë"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s u lidh"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s u shkëput"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Kërkesë çiftimi me Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ҫifto dhe lidh"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kodi i çiftimit të Bluetooth-it"</string>
@@ -198,7 +205,7 @@
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Të çiftohet me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Lejo që <xliff:g id="DEVICE_NAME">%1$s</xliff:g> të ketë qasje te kontaktet dhe historiku i telefonatave"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"Mund të duhet gjithashtu ta shkruash këtë kod PIN në pajisjen tjetër."</string>
-    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Mund të duhet gjithashtu ta shkruash këtë çelës kalimi në pajisjen tjetër."</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Mund të duhet gjithashtu ta shkruash këtë kod në pajisjen tjetër."</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Duhet të ketë 16 shifra"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Zakonisht 0000 ose 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Kërkesa e çiftimit"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Tingulli i parazgjedhur i njoftimit"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Tingulli i parazgjedhur i alarmit"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Ruaj"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Tingujt e sinjalizimeve"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Toni i ziles, njoftimet, alarmi"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Ndriçimi"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Rregullo ekranin për nivelin e ulët të dritës"</string>
     <string name="units_settings" msgid="402325305096925886">"Njësitë"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Shpejtësia"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Distanca"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Shfaq të gjitha aplikacionet"</string>
     <string name="default_applications" msgid="1558183275638697087">"Aplikacionet e parazgjedhura"</string>
     <string name="app_permissions" msgid="32799922508313948">"Lejet e aplikacionit"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Aplikacionet që përdorin <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrollo qasjen e aplikacioneve te të dhënat e tua"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacioni mbi aplikacionin"</string>
     <string name="force_stop" msgid="2153183697014720520">"Ndalo me forcë"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Të ndalohet me forcë?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Çinstalo"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Nëse e çaktivizon këtë aplikacion, Android dhe aplikacionet e tjera mund të mos funksionojnë më siç pritet."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Çaktivizo aplikacionin"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Nuk është i instaluar për këtë përdorues"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Nuk është instaluar për këtë profil"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Lejet"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Njoftime"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Hapësira ruajtëse dhe memoria specifike"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versioni: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nuk është dhënë leje"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nuk është kërkuar leje"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Aplikacionet e papërdorura"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aplikacione të papërdorura</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aplikacion i papërdorur</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Hiq lejet dhe liro hapësirën"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s në hapësirën e brendshme të ruajtjes"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Përdorimi i të dhënave"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Përdorimi i të dhënave"</string>
@@ -334,21 +351,29 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Pyet çdo herë"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Mos e hap në këtë aplikacion"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Lidhjet e mbështetura"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Aplikacionet"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Hapur së fundi"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Shiko të gjitha aplikacionet (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Menaxheri i lejeve"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrollo qasjen e aplikacioneve te të dhënat e tua"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Për \"Asistentin\" dhe më shumë"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Te cilësimet e sistemit dhe cilësime të tjera"</string>
     <string name="special_access" msgid="5730278220917123811">"Qasja e veçantë e aplikacioneve"</string>
     <string name="show_system" msgid="4401355756969485287">"Shfaq sistemin"</string>
     <string name="hide_system" msgid="8845453295584638040">"Fshih sistemin"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Fshih aplikacionet e sistemit"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Modifiko cilësimet e sistemit"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Kjo leje e lejon një aplikacion të modifikojë cilësimet e sistemit."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Hyrja te njoftimet"</string>
-    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Të lejohet qasja te njoftimet për \"<xliff:g id="SERVICE">%1$s</xliff:g>\"?"</string>
+    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Të lejohet hyrja te njoftimet për <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> do të jetë në gjendje të lexojë të gjitha njoftimet, duke përfshirë informacionin personal si p.sh. emrat e kontakteve dhe tekstin e mesazheve që merr. Ai do të jetë po ashtu në gjendje t\'i heqë njoftimet ose të aktivizojë butonat e veprimeve që përmbajnë.\n\nKjo do t\'i japë aplikacionit aftësinë për të aktivizuar ose çaktivizuar opsionin \"Mos shqetëso\" dhe për të ndryshuar cilësimet përkatëse."</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Nëse çaktivizon hyrjen te njoftimet për <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, mund të çaktivizohet edhe hyrja tek opsioni \"Mos shqetëso\"."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Çaktivizo"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Anulo"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Qasja te mesazhet SMS premium"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"Mesazhet SMS premium mund të kushtojnë dhe do të rritin faturat e operatorit tënd celular. Nëse e aktivizon lejen për një aplikacion, do të mund të dërgosh mesazhe SMS premium me atë aplikacion."</string>
-    <string name="usage_access_title" msgid="7153427122072303254">"Qasja te përdorimi"</string>
-    <string name="usage_access_description" msgid="2413168719257435422">"Qasja te përdorimi lejon që një aplikacion të monitorojë se çfarë aplikacionesh të tjera po përdor ti dhe sa shpesh i përdor, si edhe operatorin celular, cilësimet e gjuhës dhe detaje të tjera."</string>
+    <string name="usage_access_title" msgid="7153427122072303254">"Qasja në përdorim"</string>
+    <string name="usage_access_description" msgid="2413168719257435422">"Qasja në përdorim lejon që një aplikacion të monitorojë se çfarë aplikacionesh të tjera po përdor ti dhe sa shpesh i përdor, si edhe operatorin celular, cilësimet e gjuhës dhe detaje të tjera."</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"Kontrolli i lidhjes Wi-Fi"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Kontrolli i lidhjes Wi-Fi lejon që një aplikacion të aktivizojë ose të çaktivizojë Wi-Fi, të skanojë dhe të lidhet me rrjetet Wi-Fi, të shtojë ose të heqë rrjetet ose të nisë një zonë qasjeje për internetin vetëm në nivel lokal."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"Më shumë"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nuk ka kërkesa të vendndodhjeve të fundit"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Lejet në nivel aplikacioni"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Shërbimet e vendndodhjes"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Përdor vendndodhjen"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistemi"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Përditësimet e sistemit"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Të përparuara"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Informacione, informacione ligjore, rivendosja etj."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versioni i Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Niveli i korrigjimit të sigurisë së Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modeli dhe hardueri"</string>
@@ -420,21 +450,22 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Kjo do t\'i rivendosë të gjitha preferencat për:\n\n"<li>" Aplikacionet e çaktivizuara"</li>\n<li>" Njoftimet e aplikacioneve të çaktivizuara"</li>\n<li>" Aplikacionet e parazgjedhura për veprimet"</li>\n<li>" Kufizimet e të dhënave në sfond për aplikacionet"</li>\n<li>" Çdo kufizim të autorizimeve"</li>\n\n" Nuk do të humbësh asnjë të dhënë aplikacioni."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Rivendos aplikacionet"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferencat e aplikacioneve janë rivendosur"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Spastro të gjitha të dhënat (rivendosja e fabrikës)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Kjo do të spastrojë të gjitha të dhënat nga njësia kryesore e automjetit tënd, duke përfshirë:\n\n"<li>"Llogarinë tënde të Google"</li>\n<li>"Të dhënat dhe cilësimet e sistemit dhe të aplikacioneve"</li>\n<li>"Aplikacionet e shkarkuara"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Je i identifikuar aktualisht në llogaritë e mëposhtme:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Ka përdorues të tjerë të pranishëm në këtë automjet."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Rivendose automjetin"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Të rivendoset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Të spastrohen të gjitha informacionet e tua personale dhe aplikacionet e shkarkuara? Ky veprim nuk mund të zhbëhet!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Spastroji të gjitha"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Po spastrohen"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Qëndro në pritje..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Spastro të gjitha të dhënat (rivendosja e fabrikës)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Spastro të gjitha të dhënat dhe profilet nga ky sistem info-argëtues"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Kjo do të spastrojë të gjitha të dhënat nga sistemi info-argëtues i automjetit tënd, duke përfshirë:\n\n"<li>"Llogarinë tënde të Google"</li>\n<li>"Të dhënat dhe cilësimet e sistemit dhe të aplikacioneve"</li>\n<li>"Aplikacionet e shkarkuara"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Je i identifikuar aktualisht në llogaritë e mëposhtme:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Ka profile të tjera të pranishme në këtë automjet."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Spastro të gjitha të dhënat"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Të spastrohen të gjitha të dhënat?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Kjo do të spastrojë të gjitha të dhënat e profilit tënd personal, llogaritë e tua dhe aplikacionet e shkarkuara në këtë sistem info-argëtues.\n\nNuk mund ta zhbësh këtë veprim."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Spastroji të gjitha"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Po spastron"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Qëndro në pritje..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data dhe ora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Cakto datën, orën, brezin orar dhe formatet"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Data dhe ora automatike"</string>
     <string name="date_time_auto_summary" msgid="3311706425095342759">"Përdor orën e ofruar nga rrjeti"</string>
-    <string name="zone_auto" msgid="3701878581920206160">"Brezi orar automatik"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"Brezi orar, automatik"</string>
     <string name="zone_auto_summary" msgid="4345856882906981864">"Përdor brezin orar të ofruar nga rrjeti"</string>
     <string name="date_time_24hour_title" msgid="3025576547136168692">"Formati 24 orë"</string>
     <string name="date_time_24hour" msgid="1137618702556486913">"Përdor formatin 24 orë"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Identifikuar si administrator"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Të gjitha autorizimet e administratorit"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Bëje administrator"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Përdoruesi do të jetë në gjendje të fshijë përdoruesit, duke përfshirë administratorët e tjerë, si dhe të rivendosë sistemin në gjendje fabrike."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profili do të jetë në gjendje të fshijë profilet, duke përfshirë administratorët e tjerë, si dhe të rivendosë sistemin në gjendje fabrike."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ky veprim është i pakthyeshëm."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Po, bëje administrator"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Krijo përdorues të rinj"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Krijo profile të reja"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Kryej telefonata"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mesazhet përmes të dhënave celulare të makinës"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalo aplikacione të reja"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Çinstalo aplikacione"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Shto përdorues"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Përdorues i ri"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Të shtohet përdoruesi i ri?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Çdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"U arrit kufiri i përdoruesve"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Mund të krijosh deri në <xliff:g id="COUNT">%d</xliff:g> përdorues.</item>
-      <item quantity="one">Mund të krijohet vetëm një përdorues.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Shto profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Profili i ri"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Të shtohet një profil i ri?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kur shton një profil të ri, ai person duhet të konfigurojë hapësirën e vet."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Çdo profil mund të përditësojë aplikacionet për të gjitha profilet e tjera."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Është arritur kufiri i profileve"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Mund të krijosh deri në <xliff:g id="COUNT">%d</xliff:g> profile.</item>
+      <item quantity="one">Mund të krijohet vetëm një profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Krijimi i një përdoruesi të ri dështoi"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Të fshihet ky përdorues?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Të gjitha aplikacionet dhe të dhënat do të fshihen."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Fshirja e përdoruesit dështoi."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Krijimi i një profili të ri dështoi"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Të fshihet ky profil?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Të gjitha aplikacionet dhe të dhënat për këtë profil do të fshihen"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Fshirja e profilit dështoi."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ky profil do të fshihet kur të ndërrosh profilet ose të ndezësh përsëri automjetin."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Hiq"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Riprovo"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Të fshihet përdoruesi i fundit?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pas fshirjes së përdoruesit të vetëm të mbetur për këtë makinë, do të krijohet një përdorues i ri administrator."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Të gjitha të dhënat, cilësimet dhe aplikacionet e lidhura me këtë përdorues do të fshihen. Do të duhet ta konfigurosh përsëri sistemin."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Të fshihet profili i fundit i mbetur?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Nëse e fshin profilin e vetëm të mbetur për këtë automjet, të gjitha të dhënat, cilësimet dhe aplikacionet e lidhura me këtë profil do të spastrohen."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Pas rivendosjes, mund të konfigurosh një profil të ri."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Zgjidh një administrator të ri"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Të duhet të paktën një administrator. Për ta fshirë këtë, në fillim zgjidh një zëvendësues."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Zgjidh administratorin"</string>
@@ -488,21 +520,22 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ti (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Emri"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nuk është konfiguruar"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Redakto emrin e përdoruesit"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Redakto emrin e profilit"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Fusha nuk mund të lihet bosh."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Emri i përdoruesit që fute është i pavlefshëm."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Emri i profilit që ke futur është i pavlefshëm."</string>
     <string name="users_list_title" msgid="770764290290240909">"Përdoruesit"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profilet"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Lejet që ka marrë %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Hapësira ruajtëse"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muzika dhe audioja"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"Aplikacionet e tjera"</string>
     <string name="storage_files" msgid="6382081694781340364">"Skedarët"</string>
     <string name="storage_system" msgid="1271345630248014010">"Sistemi"</string>
-    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Sistemi përfshin skedarët që përdoren për ekzekutimin e versionit <xliff:g id="VERSION">%s</xliff:g> të Android"</string>
+    <string name="storage_detail_dialog_system" msgid="796365720531622361">"Sistemi përfshin skedarët e përdorur për ekzekutimin e versionit <xliff:g id="VERSION">%s</xliff:g> të Android"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Skedarët audio"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Po llogaritet…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Madhësia e aplikacionit"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Të dhënat e përdoruesit"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Të dhënat e profilit"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Memoria specifike"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totali"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Pastro hapësirën ruajtëse"</string>
@@ -536,7 +569,7 @@
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinkronizimi joaktiv për të gjithë artikujt"</string>
     <string name="sync_disabled" msgid="393531064334628258">"Sinkronizimi është JOAKTIV"</string>
     <string name="sync_error" msgid="6698021343089247914">"Gabim gjatë sinkronizimit"</string>
-    <string name="last_synced" msgid="4745124489150101529">"Sinkronizimi i fundit më <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Sinkronizuar për herë të fundit <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="1237573373537382416">"Po sinkronizon tani…"</string>
     <string name="sync_one_time_sync" msgid="491707183321353107">"Trokit për ta sinkronizuar tani<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anulo sinkronizimin"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizimi ka aktualisht probleme. Do të ofrohet sërish së shpejti."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privatësia"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Të dhënat e automjetit"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrollo qasjen e aplikacioneve te vendndodhja jote"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofoni"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontrollo qasjen e aplikacionit te mikrofoni"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Të dhënat e automjetit"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Menaxho aktivitetet dhe informacionin e ruajtur në këtë automjet"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Fshi profilin tënd"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Spastro profilin dhe llogaritë e tua nga sistemi info-argëtues"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ky veprim nuk ofrohet për profilin tënd"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Siguria"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kyçja e ekranit"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Asnjë"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Në rregull"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Të hiqet kyçja e ekranit?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Kjo do të lejojë këdo që të ketë qasje në llogarinë tënde"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Kyçja e profilit"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Konfiguro shkyçjen automatike"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Fut kodin PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Fut fjalëkalimin"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Për siguri, cakto një kod PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Duhet të jetë më pak se <xliff:g id="NUMBER">%d</xliff:g> shifra"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Duhet të përmbajë vetëm shifra 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Administratori i pajisjes nuk e lejon përdorimin e një kodi PIN të përdorur së fundi"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Kodet e zakonshme PIN janë bllokuar nga administratori i TI-së. Provo një kod tjetër PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Kodet e zakonshme PIN janë bllokuar nga administratori i TI-së. Provo një kod tjetër PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Kjo nuk mund të përfshijë një karakter të pavlefshëm."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Fjalëkalimi i pavlefshëm. Duhet të jetë të paktën 4 karaktere."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Administratori i pajisjes nuk e lejon përdorimin e një fjalëkalimi të përdorur së fundi"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Gabim gjatë ruajtjes së fjalëkalimit"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Fjalëkalimet e zakonshme janë bllokuar nga administratori i TI-së. Provo një fjalëkalim tjetër."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Fjalëkalimet e zakonshme janë bllokuar nga administratori i TI-së. Provo një fjalëkalim tjetër."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nuk lejohet një sekuencë shifrash në rritje, në zbritje ose me përsëritje."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsionet e kyçjes së ekranit"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ditë më parë"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Tasti \"Hyrje\""</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Dil nga demonstrimi"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Dil nga modaliteti i demonstrimit"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Kjo do të fshijë llogarinë e demonstrimit dhe sistemi do të rivendoset në të dhënat e fabrikës. Të gjitha të dhënat e përdoruesit do të humbasin."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Kjo do të fshijë llogarinë e demonstrimit dhe sistemi do të rivendoset në të dhënat e fabrikës. Të gjitha të dhënat e profilit do të humbasin."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Dil nga demonstrimi"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"HIQ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Veçoria nuk ofrohet gjatë drejtimit të makinës"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Përdoruesi nuk mund të shtohet gjatë drejtimit të makinës"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Profili nuk mund të shtohet gjatë drejtimit të makinës"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Kërko"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"\"Asistenti\" dhe zëri"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Aplikacioni \"Asistenti\""</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Përdor tekstin nga ekrani"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Lejo që \"Asistenti\" të ketë qasje te përmbajtjet e ekranit"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Përdor pamjen e ekranit"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Lejo që \"Asistenti\" të ketë qasje tek imazhi i ekranit"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Dërguar së fundi"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Të gjitha aplikacionet"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profilet dhe llogaritë"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Menaxho profilet e tjera"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Shto një profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Fshije këtë profil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Shto profil"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 543f019..43e4ab0 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Екран"</string>
     <string name="brightness" msgid="2919605130898772866">"Ниво осветљености"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Прилагодљива осветљеност"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Оптимизуј ниво осветљености према доступном светлу"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Прилагодите осветљење екрана окружењу"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Ноћно светло је укључено"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"екран, додирни екран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"затамнити екран, додирни екран, батерија"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затамнити екран, додирни екран, батерија"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"затамнити екран, ноћ, нијанса"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ноћни режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
@@ -86,6 +82,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Подесите упозорење о потрошњи података"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Подесите ограничење потрошње података"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Подеси"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Мрежа произвођача оригиналне опреме"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"У периоду %2$s– %3$s искоришћено је %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Придружи ме другој мрежи"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Подешавања мреже"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WiFi се укључује..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi се искључује..."</string>
@@ -95,6 +95,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Повезивање са мрежом није успело"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додај мрежу"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Повежи се"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Повезује се…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Мрежа није у домету"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Лозинка"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Прикажи лозинку"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Унесите назив мреже"</string>
@@ -129,7 +131,7 @@
     <string name="wifi_gateway" msgid="4975799192860431013">"Мрежни пролаз"</string>
     <string name="wifi_preferences_title" msgid="772788844257225510">"Подешавања Wi‑Fi-ја"</string>
     <string name="wifi_wakeup" msgid="7451825226044542000">"Аутоматски укључи Wi‑Fi"</string>
-    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"WiFi ће се поново укључити у  близини сачуваних мрежа високог квалитета, као што је кућна мрежа"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ће се поново укључити у близини сачуваних мрежа високог квалитета, као што је кућна мрежа"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Није доступно јер је локација искључена. Укључите "<annotation id="link">"локацију"</annotation>"."</string>
     <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Желите ли да укључите WiFi скенирање?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Укључи"</string>
@@ -192,6 +194,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Апликација жели да учини главну јединицу видљивом за друге Bluetooth уређаје на <xliff:g id="TIMEOUT">%1$d</xliff:g> сек."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> жели да укључи Bluetooth и учини главну јединицу видљивом за друге уређаје на <xliff:g id="TIMEOUT">%2$d</xliff:g> сек."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Апликација жели да укључи Bluetooth и учини главну јединицу видљивом за друге уређаје на <xliff:g id="TIMEOUT">%1$d</xliff:g> сек."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Други уређаји га виде као %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Моји уређаји"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Претходно повезано"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Повезано: %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Прекинута je веза: %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Захтев за Bluetooth упаривање"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Упари и повежи"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Кôд за упаривање са Bluetooth уређајем"</string>
@@ -230,6 +237,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Подразумевани звук обавештења"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Подразумевани звук аларма"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Сачувај"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Звукови обавештења"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Мелодија звона, обавештења, аларм"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Осветљеност"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Прилагодите екран слабом осветљењу"</string>
     <string name="units_settings" msgid="402325305096925886">"Јединице"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Брзина"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Раздаљина"</string>
@@ -282,7 +293,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Прикажи све апликације"</string>
     <string name="default_applications" msgid="1558183275638697087">"Подразумеване апликације"</string>
     <string name="app_permissions" msgid="32799922508313948">"Дозволе за апликације"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Апликације у којима се користи <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Контролишу приступ апликација подацима"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информације о апликацији"</string>
     <string name="force_stop" msgid="2153183697014720520">"Принудно заустави"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Желите ли да принудно зауставите?"</string>
@@ -292,13 +303,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"Деинсталирај"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако онемогућите ову апликацију, Android и друге апликације можда више неће радити исправно."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Онемогући апликацију"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Није инсталирано за овог корисника"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Није инсталирано за овај профил"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволе"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Обавештења"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Меморијски простор и кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Верзија: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ниједна дозвола није одобрена"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ниједна дозвола није захтевана"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Апликације које се не користе"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> апликација која се не користи</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> апликације које се не користе</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> апликација које се не користе</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Уклони дозволе и ослободи простор"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s у интерној меморији"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Потрошња података"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Потрошња података апл."</string>
@@ -337,15 +355,23 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Увек питај"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Не отварај у овој апликацији"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Подржани линкови"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Апликације"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Недавно отворено"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Прикажи све апликације (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Менаџер дозвола"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Контролишу приступ апликација подацима"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"За Помоћник и друго"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"За систем и друга подешавања"</string>
     <string name="special_access" msgid="5730278220917123811">"Посебан приступ апликацији"</string>
     <string name="show_system" msgid="4401355756969485287">"Прикажи системске"</string>
     <string name="hide_system" msgid="8845453295584638040">"Сакриј системске"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Сакриј системске апликације"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Измените подешавања система"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Ова дозвола омогућава апликацији да мења подешавања система."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Приступ обавештењима"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Желите ли да дозволите да <xliff:g id="SERVICE">%1$s</xliff:g> има приступ обавештењима?"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ће моћи да чита сва обавештења, укључујући личне податке, попут имена контаката и текста порука које примате. Моћи ће и да одбацује обавештења или да користи дугмад за радње која садрже. \n\nОво ће апликацији омогућити и да укључује или искључује режим Не узнемиравај и мења сродна подешавања."</string>
-    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ако искључите приступ обавештењима за <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, можда ћете искључити и приступ режиму Не узнемиравај."</string>
+    <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Ако искључите приступ обавештењима за корисника <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, можда ћете искључити и приступ режиму Не узнемиравај."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Искључи"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Откажи"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"Приступ премијум SMS-овима"</string>
@@ -360,8 +386,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема недавних захтева за локацију"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволе на нивоу апликација"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Услуге локације"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Користи локацију"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања система"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Напредно"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Основни подаци, правне информације, ресетовање и друго"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Верзија Android-а"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво безбедносне закрпе за Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Модел и хардвер"</string>
@@ -393,7 +424,7 @@
     <string name="status_serial_number" msgid="9158889113131907656">"Серијски број"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"Верзија хардвера"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
-    <string name="settings_license_activity_title" msgid="8499293744313077709">"Лиценце трећих страна"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"Лиценце треће стране"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Дошло је до проблема при учитавању лиценци."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Учитава се…"</string>
     <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
@@ -424,16 +455,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Овим ћете ресетовати сва подешавања за:\n\n"<li>"Онемогућене апликације"</li>\n<li>"Обавештења о онемогућеним апликацијама"</li>\n<li>"Подразумеване апликације за радње"</li>\n<li>"Ограничења за позадинске податке за апликације"</li>\n<li>"Сва ограничења за дозволе"</li>\n\n"Нећете изгубити никакве податке апликације."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ресетуј апликације"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Подешавања апликација су ресетована"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Обриши све податке (фабричка подешавања)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Овим бришете све податке из интерне меморије возила, укључујући:\n\n"<li>"Google налог"</li>\n<li>"податке и подешавања система и апликација"</li>\n<li>"преузете апликације"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Тренутно сте пријављени на следеће налоге:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У овом возилу су присутни и други корисници."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Ресетуј возило"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Желите ли да ресетујете?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Желите ли да обришете све личне податке и преузете апликације? Не можете да опозовете ову радњу!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Избриши све"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Брише се"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Сачекајте..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Обриши све податке (фабричка подешавања)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Обриши све податке и профиле из система за инфо-забаву"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Овим бришете све податке из система за инфо-забаву возила, укључујући:\n\n"<li>"Google налог"</li>\n<li>"податке и подешавања система и апликација"</li>\n<li>"преузете апликације"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Тренутно сте пријављени на следеће налоге:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"У овом возилу су присутни и други профили."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Обриши све податке"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Обрисаћете све податке?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Овим бришете све податке личног профила, налоге и преузете апликације у овом систему за инфо-забаву.\n\nОва радња не може да се опозове."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Обриши све"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Брише се"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Сачекајте…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Датум и време"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Подесите датум, време, временску зону и формате"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Аутоматски датум и време"</string>
@@ -456,34 +488,35 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Пријављени сте као администратор"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Све дозволе за администратора"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Постави за администратора"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Корисник ће моћи да брише кориснике, укључујући остале администраторе, и да ресетује систем на фабричка подешавања."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Профил ће моћи да брише профиле, укључујући друге администраторе, и да ресетује систем на фабричка подешавања."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Ова радња не може да се опозове."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, постави за администатора"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Направите нове кориснике"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Прави нове профиле"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Позивајте"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS преко мобилних података аута"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталирајте нове апликације"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталирајте апликације"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисника"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нови корисник"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Додајете новог корисника?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Када додате новог корисника, та особа треба да подеси свој простор."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Сваки корисник може да ажурира апликације за све остале кориснике."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнут максимални број корисника"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
-      <item quantity="few">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
-      <item quantity="other">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Додајте профил"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Нови профил"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Желите да додате нови профил?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Када додате нови профил, та особа треба да подеси свој простор."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Сваки профил може да ажурира апликације за све остале профиле."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Достигнут максималан број профила"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> профил.</item>
+      <item quantity="few">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> профила.</item>
+      <item quantity="other">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> профила.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Прављење новог корисника није успело"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Желите да избришете овог корисника?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Све апликације и подаци ће бити избрисани."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Брисање корисника није успело."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Прављење новог профила није успело"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Желите да избришете овај профил?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Избрисаћете све апликације и податке за овај профил"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Брисање профила није успело."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Овај профил се брише када пређете на други профил или рестартујете возило."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Одбаци"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Пробај поново"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Желите да избришете последњег корисника?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Нови администратор ће се направити када избришете јединог преосталог корисника за овај аутомобил."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Избрисаће се сви подаци, подешавања и апликације који су повезани са овим корисником. Мораћете да подесите систем поново."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Избрисаћете последњи преостали профил?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ако избришете једини преостали профил за ово возило, сви подаци, подешавања и апликације повезани са овим профилом ће бити обрисани."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"После ресетовања можете да подесите нови профил."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Одаберите новог администратора"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Треба вам најмање један администратор. Да бисте избрисали овог, прво одаберите замену."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Одаберите администратора"</string>
@@ -493,10 +526,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ви (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Није подешено"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Измените име корисника"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Измените назив профила"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Поље не сме да буде празно."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Корисничко име које сте унели је неважеће."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Унесено име профила је неважеће."</string>
     <string name="users_list_title" msgid="770764290290240909">"Корисници"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профили"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Дозвола је дата кориснику %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Меморијски простор"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музика и аудио"</string>
@@ -507,7 +541,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудио датотеке"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Израчунава се…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Величина апликације"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Подаци корисника"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Подаци профила"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Укупно"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Обриши меморијски простор"</string>
@@ -522,7 +556,7 @@
     <string name="no_accounts_added" msgid="5148163140691096055">"Ниједан налог није додат"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Налози за корисника <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
     <string name="account_auto_sync_title" msgid="3238816995364191432">"Аутоматски синхронизуј податке"</string>
-    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Омогућава апликацијама да аутоматски освежавају податке"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Омогући апликацијама да аутоматски освежавају податке"</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Укључити аутом. синх. података?"</string>
     <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Све промене које унесете на налоге на вебу ће аутоматски бити копиране на уређај.\n\nНеки налози могу и аутоматски да копирају на веб све промене које унесете на телефону. Тако функционише Google налог."</string>
     <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Искључити аутом. синх. података?"</string>
@@ -549,6 +583,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Откажи синхронизацију"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Синхронизација тренутно има проблема. Ускоро ће се наставити."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Приватност"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Подаци о возилу"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Контролишите приступ апликација локацији"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Микрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Контролише приступ апликација микрофону"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Подаци о возилу"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Управљајте активностима и информацијама сачуваним у овом возилу"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Избришите профил"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Обришите профил и налоге из система за инфо-забаву"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ова радња није доступна за профил"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безбедност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Закључавање екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нема"</string>
@@ -574,7 +617,7 @@
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Нови шаблон за откључавање"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Нацртајте шаблон за откључавање"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Подигните прст када завршите"</string>
-    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Шаблон је запамћен"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Шаблон је снимљен"</string>
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Поново нацртајте шаблон да бисте потврдили"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"Повежите бар 4 тачке. Пробајте поново."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"Погрешан шаблон"</string>
@@ -584,6 +627,8 @@
     <string name="okay" msgid="4589873324439764349">"Потврди"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Уклонићете закључавање екрана?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Тада ће свако моћи да приступи вашем налогу"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Закључавање профила"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Подесите аутоматско откључавање"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Унесите PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Унесите лозинку"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Подесите PIN из безбедносних разлога"</string>
@@ -607,7 +652,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Максималан број цифара је <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Мора да садржи само цифре 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Администратор уређаја не дозвољава употребу недавно коришћеног PIN-а"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ИТ администратор блокира честе PIN-ове. Изаберите други PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ИТ администратор блокира честе PIN-ове. Изаберите други PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Не сме да обухвата неважећи знак."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Лозинка је неважећа, мора да садржи најмање 4 знака."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -642,7 +687,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Администратор уређаја не дозвољава употребу недавно коришћене лозинке"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Грешка при чувању лозинке"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ИТ администратор блокира честе лозинке. Изаберите другу лозинку."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ИТ администратор блокира честе лозинке. Изаберите другу лозинку."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Растући, опадајући или поновљени низ цифара није дозвољен."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опције закључавања екрана"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пре <xliff:g id="NUM_DAYS">%3$s</xliff:g> дан(а)"</string>
@@ -663,10 +708,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Тастер Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Напустите режим демонстр."</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Да напустите режим демонстрације"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Овим ћете избрисати налог за демонстрације и ресетовати систем на фабричка подешавања. Сви подаци корисника ће бити изгубљени."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Овим ћете избрисати налог за демонстрације и ресетовати систем на фабричка подешавања. Сви подаци профила ће бити изгубљени."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Напусти режим демонстр."</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОДБАЦИ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Функција није доступна током вожње"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Не можете да додајете кориснике током вожње"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Не можете да додате профил током вожње"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Претражите"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Помоћник и глас"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Апликација Помоћник"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Користи текст са екрана"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Дозволите Помоћнику да приступа садржају екрана"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Користи снимак екрана"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Дозволите Помоћнику да приступа слици екрана"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Недавно послато"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Све апликације"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профили и налози"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Управљајте другим профилима"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Додај профил"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Избриши овај профил"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Додајте профил"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index b13f904..e934464 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Skärm"</string>
     <string name="brightness" msgid="2919605130898772866">"Ljusstyrka"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Anpassad ljusstyrka"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimera ljusstyrkan efter det tillgängliga ljuset"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Justera skärmens ljusstyrka efter omgivningen"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nattljus är aktiverat"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skärm, pekskärm"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"tona ned skärm, pekskärm, batteri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"tona ned skärm, pekskärm, batteri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"tona ned skärmen, natt, tona"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattläge"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Nätverk och internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnätverk"</string>
@@ -84,15 +80,21 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Ange varning för dataanvändning"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Ange gräns för dataanvändning"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Använd"</string>
-    <string name="wifi_settings" msgid="7701477685273103841">"wifi"</string>
-    <string name="wifi_starting" msgid="473253087503153167">"wifi aktiveras …"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM-nätverk"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB användes mellan %2$s och %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Anslut till andra nätverk"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Nätverksinställningar"</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
+    <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi aktiveras …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi inaktiveras …"</string>
-    <string name="loading_wifi_list" msgid="8584901433195876465">"wifi-listan läses in"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"wifi har inaktiverats"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi-Fi-listan läses in"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi har inaktiverats"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Det gick inte att glömma nätverket"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Det gick inte att ansluta till nätverket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lägg till nätverk"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Anslut"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Ansluter …"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Nätverket är inte inom räckvidd"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lösenord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Visa lösenord"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Ange ett nätverksnamn"</string>
@@ -125,15 +127,15 @@
     <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
     <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adresser"</string>
     <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
-    <string name="wifi_preferences_title" msgid="772788844257225510">"Inställningar för wifi"</string>
-    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktivera wifi automatiskt"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Inställningar för Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktivera Wi‑Fi automatiskt"</string>
     <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi aktiveras i närheten av sparade nätverk, t.ex ditt hemnätverk"</string>
     <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ej tillgängligt när plats är inaktiverat. Aktivera "<annotation id="link">"plats"</annotation>"."</string>
-    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vill du aktivera wifi-sökning?"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vill du aktivera Wi-Fi-sökning?"</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktivera"</string>
-    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wifi-sökning har aktiverats"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-sökning har aktiverats"</string>
     <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Byt till mobildata automatiskt"</string>
-    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Använd mobildata när wifi-nätverket inte är anslutet till internet. Avgifter för dataanvändning kan tillkomma."</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Använd mobildata när Wi-Fi-nätverket inte är anslutet till internet. Avgifter för dataanvändning kan tillkomma."</string>
     <string name="learn_more" msgid="8214605928933358604">"Läs mer"</string>
     <string name="wifi_hotspot_name_title" msgid="8844779338692535356">"Namn på surfzon"</string>
     <string name="wifi_hotspot_name_summary_connecting" msgid="5262510450498600038">"Aktiverar <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> …"</string>
@@ -153,9 +155,9 @@
     <string name="wifi_ap_band_select_one" msgid="615578175244067396">"Välj minst ett band för Wi‑Fi-surfzon:"</string>
     <string name="tether_settings_title_all" msgid="4663704772599383169">"Trådlös surfzon och internetdelning"</string>
     <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"Inaktivera surfzon automatiskt"</string>
-    <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"Wifi-surfzonen inaktiveras om inga enheter är anslutna"</string>
-    <string name="wifi_ask_enable" msgid="4452418245680754578">"<xliff:g id="REQUESTER">%s</xliff:g> vill aktivera wifi"</string>
-    <string name="wifi_ask_disable" msgid="2949290055916181553">"<xliff:g id="REQUESTER">%s</xliff:g> vill inaktivera wifi"</string>
+    <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"Wi-Fi-surfzonen inaktiveras om inga enheter är anslutna"</string>
+    <string name="wifi_ask_enable" msgid="4452418245680754578">"<xliff:g id="REQUESTER">%s</xliff:g> vill aktivera Wi-Fi"</string>
+    <string name="wifi_ask_disable" msgid="2949290055916181553">"<xliff:g id="REQUESTER">%s</xliff:g> vill inaktivera Wi-Fi"</string>
     <string name="wifi_error" msgid="3105105447117289410">"Fel"</string>
     <string name="network_connection_request_dialog_title" msgid="8449606155059098762">"Använd enheten med <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="network_connection_timeout_dialog_message" msgid="2536299451668687586">"Inga enheter hittades. Kontrollera att enheterna är på och går att ansluta till."</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"En app vill göra huvudenheten synlig för andra Bluetooth-enheter i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> vill aktivera Bluetooth och göra huvudenheten synlig för andra enheter i <xliff:g id="TIMEOUT">%2$d</xliff:g> sekunder."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"En app vill aktivera Bluetooth och göra huvudenheten synlig för andra enheter i <xliff:g id="TIMEOUT">%1$d</xliff:g> sekunder."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Synlig för andra enheter som %1$s"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Mina enheter"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Tidigare anslutna enheter"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s är ansluten"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s är frånkopplad"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Begäran om Bluetooth-koppling"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parkoppla och anslut"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kopplingskod för Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standardljud för aviseringar"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standardljud för alarm"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Spara"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Varningsljud"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringsignal, aviseringar, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Ljusstyrka"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Justera skärmen efter svag belysning"</string>
     <string name="units_settings" msgid="402325305096925886">"Enheter"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hastighet"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Avstånd"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Visa alla appar"</string>
     <string name="default_applications" msgid="1558183275638697087">"Standardappar"</string>
     <string name="app_permissions" msgid="32799922508313948">"Appbehörigheter"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Appar som använder <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Styr appåtkomst till din data"</string>
     <string name="applications_settings" msgid="794261395191035632">"Appinformation"</string>
     <string name="force_stop" msgid="2153183697014720520">"Tvinga att avsluta"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vill du tvinga appen att avsluta?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Avinstallera"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Om du inaktiverar den här appen kan det påverka Android och andra appar så att de inte längre fungerar som de ska."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inaktivera app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Ej installerad för användaren"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Inte installerat för den här profilen"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Behörigheter"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Aviseringar"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Lagringsutrymme och cacheminne"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Inga behörigheter har beviljats"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Inga behörigheter har begärts"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Appar som inte används"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> appar som inte används</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> app som inte används</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ta bort behörigheter och frigör utrymme"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s i internt lagringsutrymme"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Dataanvändning"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Appens dataanvändning"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Fråga varje gång"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Öppna inte i den här appen"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Länkar som stöds"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Appar"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Senast öppnade"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Visa alla %1$d appar"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Behörighetshantering"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Styr appåtkomst till din data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"För assistenten med mera"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Till systeminställningar och andra inställningar"</string>
     <string name="special_access" msgid="5730278220917123811">"Särskild appåtkomst"</string>
     <string name="show_system" msgid="4401355756969485287">"Visa systemet"</string>
     <string name="hide_system" msgid="8845453295584638040">"Dölj systemet"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Dölj systemappar"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Ändra systeminställningar"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Med den här behörigheten kan appen ändra systeminställningar."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Åtkomst till aviseringar"</string>
@@ -349,16 +374,21 @@
     <string name="premium_sms_access_description" msgid="7119026067677052169">"Det kan hända att premium-sms kostar pengar och läggs till på dina fakturor från operatören. Om du ger en app åtkomst kan du skicka premium-sms med den appen."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"Åtkomst till användningsdata"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"Med åtkomst till användningsdata kan en app spåra vilka andra appar du använder och hur ofta, samt vilken operatör du har, språkinställningar och andra uppgifter."</string>
-    <string name="wifi_control_title" msgid="5660436566907731929">"Wifi-styrning"</string>
-    <string name="wifi_control_description" msgid="6021926850423169261">"Med wifi-styrning får den här appen behörighet att aktivera eller inaktivera wifi, söka efter och ansluta till wifi-nätverk, lägga till eller ta bort nätverk samt starta en lokal surfzon."</string>
+    <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-styrning"</string>
+    <string name="wifi_control_description" msgid="6021926850423169261">"Med Wi-Fi-styrning får den här appen behörighet att aktivera eller inaktivera Wi-Fi, söka efter och ansluta till Wi-Fi-nätverk, lägga till eller ta bort nätverk samt starta en lokal surfzon."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"Mer"</string>
     <string name="location_settings_title" msgid="901334356682423679">"Plats"</string>
-    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nyligen gjorda platsförfrågningar"</string>
-    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Inga platsförfrågningar har gjorts nyligen"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nyligen gjorda platsbegäranden"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Inga platsbegäranden har gjorts nyligen"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Behörigheter på appnivå"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Platstjänster"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Använd plats"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Systemuppdateringar"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Avancerat"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Om, juridisk information, återställning med mera"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Korrigeringsnivå för Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modell och maskinvara"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Detta återställer alla inställningar för:\n\n"<li>"Inaktiverade appar"</li>\n<li>"Inaktiverade appmeddelanden"</li>\n<li>"Standardappar för åtgärder"</li>\n<li>"Begränsningar av bakgrundsdata för appar"</li>\n<li>"Alla begränsningar av behörigheter"</li>\n\n"Ingen appdata försvinner."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Återställ appar"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Appinställningarna har återställts"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Rensa all data (återställ standardinst.)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Detta rensar all data från fordonets huvudenhet, bland annat:\n\n"<li>"Ditt Google-konto"</li>\n<li>"System- och appdata och inställningar"</li>\n<li>"Nedladdade appar"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Du är inloggad på följande konton:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Det finns andra användare av fordonet."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Återställ fordonet"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vill du återställa?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vill du rensa alla personliga uppgifter och nedladdade appar? Det går inte att ångra den här åtgärden."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Rensa allt"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Raderar"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vänta ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Rensa all data (återställ standardinst.)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Radera all data och alla profiler på infotainmentsystemet"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Detta gör att all data raderas från fordonets infotainmentsystem, bland annat:\n\n"<li>"ditt Google-konto"</li>\n<li>"system- och appdata och inställningar"</li>\n<li>"nedladdade appar."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Du är inloggad på följande konton:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Det finns andra profiler kopplade till fordonet."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Radera all data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Vill du radera all data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Detta raderar all data i den privata profilen samt alla konton och nedladdade appar på det här infotainmentsystemet.\n\nDet går inte att ångra den här åtgärden."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Rensa allt"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Rensar"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Vänta …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum och tid"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ange datum, tidszon och format"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Automatiskt datum och tid"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Inloggad som administratör"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alla administratörsbehörigheter"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gör till administratör"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Användaren kan ta bort användare, även andra administratörer, och återställa systemet till standardinställningarna."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profilen kan radera profiler, även andra administratörer, och återställa systemet till standardinställningarna."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Det går inte att ångra den här åtgärden."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, gör till administratör"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Skapa nya användare"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Skapa nya profiler"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Ringa telefonsamtal"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Meddelanden via bilens mobildata"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Installera nya appar"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Avinstallera appar"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lägg till användare"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny användare"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Lägga till ny användare?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alla användare kan uppdatera appar för andra användare."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Användargränsen har nåtts"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Det går att skapa upp till <xliff:g id="COUNT">%d</xliff:g> användare.</item>
-      <item quantity="one">Det går bara att skapa en användare.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Lägg till profil"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Ny profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Vill du lägga till profilen?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"När du lägger till en ny profil måste den personen konfigurera sitt utrymme."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Alla profiler kan uppdatera appar för samtliga profilers räkning."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Maximalt antal profiler har nåtts"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Du kan skapa upp till <xliff:g id="COUNT">%d</xliff:g> profiler.</item>
+      <item quantity="one">Det går bara att skapa en profil.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Det gick inte att skapa en ny användare"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vill du radera användaren?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alla appar och all data raderas."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Det gick inte att radera användaren."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Det gick inte att skapa en ny profil"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Vill du radera den här profilen?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Alla appar och all data för den här profilen raderas"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Det gick inte att radera profilen."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Den här profilen raderas när du byter till en annan profil eller startar fordonet igen."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Stäng"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Försök igen"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Vill du radera den sista användaren?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Om du raderar den sista användaren för bilen skapas en ny adminanvändare."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alla inställningar, appar och all data som är kopplade till användaren raderas. Du måste konfigurera systemet igen."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Vill du radera den sista profilen?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Om du raderar den sista profilen för det här fordonet raderas all data och alla inställningar och appar som är kopplade till profilen."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Efter återställningen kan du konfigurera en ny profil."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Välj en ny administratör"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Du måste ha minst en administratör. Välj en ersättare innan du tar bort administratören."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Välj administratör"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Du (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Namn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Inte konfigurerad"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Redigera användarnamn"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Redigera profilnamn"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Fältet får inte vara tomt."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Du har angett ett ogiltigt användarnamn."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Det angivna profilnamnet är ogiltigt."</string>
     <string name="users_list_title" msgid="770764290290240909">"Användare"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiler"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s har beviljats behörighet"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Lagringsutrymme"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musik och ljud"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Ljudfiler"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Beräknas …"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Appstorlek"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Användaruppgifter"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profildata"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cacheminne"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Totalt"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Rensa lagringsutrymme"</string>
@@ -543,7 +576,16 @@
     <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkronisera nu"</string>
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Avbryt synkronisering"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Det är för närvarande problem med synkronisering. Det fungerar igen om en stund."</string>
-    <string name="privacy_settings_title" msgid="3150145262029229572">"Integritet"</string>
+    <string name="privacy_settings_title" msgid="3150145262029229572">"Sekretess"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Fordonsdata"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Styr appåtkomst till din plats"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Styr appåtkomst till mikrofonen"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Fordonsdata"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Hantera aktiviteter och information som har sparats på det här fordonet"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Radera profilen"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Radera din profil och dina konton från infotainmentsystemet"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Den här åtgärden är inte tillgänglig för din profil"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Säkerhet"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skärmlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Inga"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Vill du ta bort skärmlåset?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Om du tar bort skärmlåset kan alla få åtkomst till kontot"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profillås"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Konfigurera automatisk upplåsning"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Ange pinkoden"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Ange ditt lösenord"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Av säkerhetsskäl måste du ange en pinkod"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Får inte innehålla fler än <xliff:g id="NUMBER">%d</xliff:g> siffror"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Får endast innehålla siffrorna 0–9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Enhetsadministratören tillåter inte att en pinkod som använts nyligen används igen"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT-adminstratören har blockerat de vanligaste pinkoderna. Testa en annan pinkod."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT-adminstratören har blockerat de vanligaste pinkoderna. Testa en annan pinkod."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Får inte innehålla ogiltiga tecken."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Lösenordet är ogiltigt. Det måste innehålla minst fyra tecken."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Enhetsadministratören tillåter inte att ett lösenord som använts nyligen används igen"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Lösenord kunde inte sparas"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-adminstratören har blockerat de vanligaste lösenorden. Testa ett annat lösenord."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT-adminstratören har blockerat de vanligaste lösenorden. Testa ett annat lösenord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En stigande, fallande eller upprepad siffersekvens är inte tillåten."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativ för skärmlås"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagar sedan"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Returtangent"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Avsluta demoläget"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Avsluta demoläge"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Detta raderar demokontot och återställer standardinställningarna för systemet. All användardata tas bort."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Detta raderar demokontot och återställer standardinställningarna för systemet. All profildata tas bort."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Avsluta demoläget"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORERA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Funktionen är inte tillgänglig när du kör"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Du kan inte lägga till användare medan du kör"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Du kan inte lägga till en profil medan du kör"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Sök"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent och röst"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent-app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Använda text från skärmen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Ge assistenten åtkomst till skärminnehållet"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Använda skärmdump"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Ge assistenten åtkomst till skärmbilden"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Nyligen skickat"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Alla appar"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiler och konton"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Hantera andra profiler"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Lägg till en profil"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Radera den här profilen"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Lägg till profil"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 5b7c225..6321956 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Onyesho"</string>
     <string name="brightness" msgid="2919605130898772866">"Hali ya mwangaza"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Ung\'aavu unaojirekebisha"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Boresha kiwango cha ung\'aavu kulingana na mwanga uliopo"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Rekebisha mwangaza wa skrini kulingana na mazingira"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Mwanga wa Usiku umewashwa"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"skrini, skrini ya kugusa"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"punguza mwanga wa skrini, skrini ya kugusa, betri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"punguza mwanga wa skrini, skrini ya kugusa, betri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"punguza mwangaza wa skrini, usiku, weka rangi maalum"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Hali ya usiku"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Mtandao na intaneti"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mtandao wa simu"</string>
@@ -68,13 +64,13 @@
     <string name="carrier_and_update_now_text" msgid="9058821833613481573">"Imesasishwa na <xliff:g id="ID_1">^1</xliff:g> sasa hivi"</string>
     <string name="no_carrier_update_now_text" msgid="5953142546373783189">"Imesasishwa sasa hivi"</string>
     <string name="launch_manage_plan_text" msgid="906657488611815787">"Angalia mpango wa data"</string>
-    <string name="app_data_usage" msgid="3878609885080232877">"Programu zinavyotumia data"</string>
+    <string name="app_data_usage" msgid="3878609885080232877">"Matumizi ya data ya programu"</string>
     <string name="data_usage_app_restricted" msgid="4570970078120010951">"imedhibitiwa"</string>
     <string name="cycle_reset_day_of_month_picker_title" msgid="1374568502823735361">"Badilisha tarehe ya kipindi cha kutumia data"</string>
     <string name="cycle_reset_day_of_month_picker_subtitle" msgid="5361061448258189846">"Tarehe ya kila mwezi:"</string>
     <string name="cycle_reset_day_of_month_picker_positive_button" msgid="6919858010423269305">"Weka"</string>
     <string name="data_warning_limit_title" msgid="4950868241810828601">"Kikomo na onyo kuhusu matumizi ya data"</string>
-    <string name="app_usage_cycle" msgid="8445927080245880296">"Awamu ya programu zinavyotumia data"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Awamu ya matumizi ya data ya programu"</string>
     <string name="set_data_warning" msgid="6628236612886588097">"Weka onyo la matumizi ya data"</string>
     <string name="data_warning" msgid="116776633806885370">"Onyo kuhusu matumizi ya data"</string>
     <string name="set_data_limit" msgid="7136539812414500084">"Weka kikomo cha data"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Weka onyo kwa matumizi ya data"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Weka kikomo cha matumizi ya data"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Weka"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Mtandao wa OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"MB %1$d zimetumika %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Unganisha kwenye mtandao mwingine"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Mapendeleo ya mtandao"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Inawasha Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Inazima Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Imeshindwa kuunganisha kwenye mtandao"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ongeza mtandao"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Unganisha"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Inaunganisha…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Mtandao hauko karibu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Nenosiri"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Onyesha nenosiri"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Tafadhali weka jina la mtandao"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Programu fulani inataka kufanya redio ya gari lako ionekane kwenye vifaa vingine vya Bluetooth kwa sekunde <xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> inataka kuwasha Bluetooth na kufanya redio ya gari lako ionekane kwenye vifaa vingine kwa sekunde <xliff:g id="TIMEOUT">%2$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Programu inataka kuwasha Bluetooth na kufanya redio ya gari lako ionekane kwenye vifaa vingine kwa sekunde <xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Kionekane kama %1$s kwa vifaa vingine"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Vifaa vyangu"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Vilivyounganishwa awali"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s imeunganishwa"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s imetenganishwa"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Ombi la kuoanisha Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Oanisha kisha unganisha"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Msimbo wa kuoanisha Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Sauti chaguomsingi ya arifa"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sauti chaguomsingi ya kengele"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Hifadhi"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Sauti za arifa"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Mlio, arifa, kengele"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Ung\'aavu"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Rekebisha skrini iwe na mwangaza wa chini"</string>
     <string name="units_settings" msgid="402325305096925886">"Vizio"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Kasi"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Umbali"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Onyesha programu zote"</string>
     <string name="default_applications" msgid="1558183275638697087">"Programu chaguomsingi"</string>
     <string name="app_permissions" msgid="32799922508313948">"Ruhusa za programu"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Programu zinazotumia <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Dhibiti uwezo wa programu kufikia data yako"</string>
     <string name="applications_settings" msgid="794261395191035632">"Maelezo ya programu"</string>
     <string name="force_stop" msgid="2153183697014720520">"Lazimisha kuzima"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Ungependa kuilazimisha izime?"</string>
@@ -290,16 +301,22 @@
     <string name="uninstall_text" msgid="277907956072833012">"Ondoa"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ukizima programu hii, huenda Android na programu zingine zikakosa kufanya kazi tena kama ilivyokusudiwa."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Zima programu"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Haijasakinishwa kwa ajili ya mtumiaji huyu"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Haijasakinishwa kwa wasifu huu"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Ruhusa"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Arifa"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Nafasi ya hifadhi na akiba"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Toleo: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hakuna ruhusa zilizotolewa"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hakuna ruhusa zilizoombwa"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Programu zisizotumika"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">Programu <xliff:g id="COUNT_1">%d</xliff:g> zisizotumika</item>
+      <item quantity="one">Programu <xliff:g id="COUNT_0">%d</xliff:g> isiyotumika</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ondoa ruhusa na upate nafasi"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s katika hifadhi ya mfumo"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Matumizi ya data"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Programu inavyotumia data"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Matumizi ya data ya programu"</string>
     <string name="computing_size" msgid="5791407621793083965">"Inahesabu…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">Ruhusa <xliff:g id="COUNT_1">%d</xliff:g> za ziada</item>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Uliza kila wakati"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Usifungue katika programu hii"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Viungo vinavyoweza kutumika"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Programu"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Ulizofungua hivi karibuni"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Angalia programu zote %1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Kidhibiti cha ruhusa"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Dhibiti uwezo wa programu kufikia data yako"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Kwa programu ya Mratibu na zaidi"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Kwa mfumo na mipangilio mingine"</string>
     <string name="special_access" msgid="5730278220917123811">"Ufikiaji wa programu maalum"</string>
     <string name="show_system" msgid="4401355756969485287">"Onyesha mfumo"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ficha mfumo"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ficha programu za mfumo"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Badilisha mipangilio ya mfumo"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Idhini hii huruhusu programu kubadilisha mipangilio ya mfumo"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Kufikia arifa"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hamna maombi ya hivi karibuni ya kutambua eneo"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Ruhusa za kiwango cha programu"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Huduma za Mahali"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Tumia data ya mahali"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Mfumo"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Masasisho ya mfumo"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Mipangilio ya kina"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Kuhusu, maelezo ya kisheria, kuweka upya na zaidi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Toleo la Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Usasishaji wa rekebisho la usalama kwenye Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Muundo na maunzi"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Hatua hii itaweka upya mapendeleo yote ya:\n\n"<li>"Programu zilizozimwa"</li>\n<li>"Arifa za programu zilizomwa"</li>\n<li>"Programu chaguomsingi za vitendo"</li>\n<li>"Masharti ya matumizi ya data chinichini katika programu"</li>\n<li>"Masharti yoyote ya ruhusa"</li>\n\n"Hutapoteza data yoyote ya programu."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Weka programu upya"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Mapendeleo ya programu yamewekwa upya"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Futa data yote (rejesha mipangilio ya kiwandani)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Hatua hii itafuta data yote kwenye sehemu ya mbele ya gari lako ikiwa ni pamoja na:\n\n"<li>" Akaunti yako ya Google"</li>\n<li>"Data na mipangilio ya mfumo na programu"</li>\n<li>"Programu ulizopakua"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Kwa sasa umeingia katika akaunti zifuatazo:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Watu wengine katika gari hili.wanatumia kifaa."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Badilisha mipangilio ya gari"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Ungependa kubadilisha?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ungependa kufuta taarifa yako yote ya binafsi na programu ulizopakua? Huwezi kutendua hatua hii!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Futa kila kitu"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Inafuta"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Tafadhali subiri..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Futa data yote (rejesha mipangilio ya kiwandani)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Futa data na wasifu zote kwenye mfumo wa burudani na habari"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Hatua hii itafuta data yote kwenye mfumo wa burudani na habari wa gari lako, ikiwa ni pamoja na:\n\n"<li>"Akaunti yako ya Google"</li>\n<li>"Data ya mfumo na programu na mipangilio"</li>\n<li>"Programu ulizopakua"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Kwa sasa umeingia katika akaunti zifuatazo:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Wasifu nyingine zinapatikana kwenye gari hilii."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Futa data yote"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Ungependa kufuta data yote?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Hatua hii itafuta data ya wasifu wako wa binafsi, akaunti na programu zote ulizopakua kwenye mfumo huu wa burudani na habari.\n\nHuwezi kutendua kitendo hiki."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Futa kila kitu"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Inafuta"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Tafadhali subiri..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarehe na saa"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Weka tarehe, saa, saa za eneo na mfumo"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Tarehe na saa otomatiki"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Umeingia katika akaunti ya msimamizi"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Ruhusa zote za msimamizi"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Mfanye awe Msimamizi"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Mtumiaji ataweza kufuta watumiaji, ikiwa ni pamoja na Wasimamizi wengine na kuweka upya mipangilio ya mfumo."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Wasifu utaweza kufuta wasifu, ikiwa ni pamoja na Wasimamizi wengine na kurejesha mipangilio ya mfumo ambayo kifaa kilitoka nayo kiwandani."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Hatua hii haiwezi kutenduliwa."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ndiyo, mfanye awe msimamizi"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Ongeza watumiaji wapya"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Unda wasifu mpya"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Piga simu"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Ujumbe kupitia data ya simu ya gari"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Sakinisha programu mpya"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ondoa programu"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ongeza mtumiaji"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Mtumiaji mpya"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ungependa kuongeza mtumiaji?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ukiongeza mtumiaji mpya, ni lazima aweke kikundi chake."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mtumiaji yeyote anaweza kusasisha programu za watumiaji wengine."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Umefikia kima cha juu cha watumiaji"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Unaruhusiwa kuongeza hadi watumiaji <xliff:g id="COUNT">%d</xliff:g>.</item>
-      <item quantity="one">Unaruhusiwa kuongeza mtumiaji mmoja pekee.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Weka wasifu"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Wasifu mpya"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Utaweka wasifu mpya?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Ukiweka wasifu mpya, mtu huyo anapaswa kuweka kikundi chake."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Wasifu wowote unaweza kusasisha programu za wasifu nyingine zote."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Umefikisha kikomo cha wasifu"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Unaweza kuunda hadi wasifu <xliff:g id="COUNT">%d</xliff:g>.</item>
+      <item quantity="one">Unaweza kuunda wasifu mmoja pekee.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Imeshindwa kuongeza mtumiaji mpya"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Ungependa kumfuta mtumiaji huyu?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Data na programu zote zitafutwa."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Imeshindwa kumfuta mtumiaji."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Imeshindwa kuunda wasifu mpya"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Ungependa kufuta wasifu huu?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Data na programu zote za wasifu huu zitafutwa"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Imeshindwa kufuta wasifu."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Wasifu huu utafutwa unapobadili wasifu au unapozima au kuwasha gari."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ondoa"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Jaribu tena"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ifute mtumiaji wa mwisho?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Baada ya kufuta mtumiaji aliyesalia wa gari hili, itaweka mtumiaji mwingine ambaye ni msimamizi."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Data, mipangilio, na programu zote zinazohusishwa na mtumiaji huyu zitafutwa. Utahitaji kuweka tena mipangilio ya mfumo."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Ungependa kufuta wasifu uliosalia?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Ukifuta wasifu uliosalia wa gari hili, data, mipangilio na programu zote zinazohusishwa na wasifu huu zitafutwa."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Baada ya kuweka upya, unaweza kuweka wasifu mpya."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Chagua msimamizi mwingine"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Unahitaji angalau msimamizi mmoja. Chagua kwanza msimamizi mwingine ili ufute msimamizi huyu."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Chagua msimamizi"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Wewe (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Jina"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Haijawekwa mipangilio"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Badilisha jina la mtumiaji"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Badilisha jina la wasifu"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Ni lazima ujaze sehemu hii."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Jina la mtumiaji uliloweka si sahihi."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Jina la wasifu uliloweka si sahihi."</string>
     <string name="users_list_title" msgid="770764290290240909">"Watumiaji"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Wasifu"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Ruhusa zilizotolewa kwa %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Hifadhi"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Muziki na sauti"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Faili za sauti"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Inahesabu…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Ukubwa wa programu"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Data ya mtumiaji"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Data ya wasifu"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Akiba"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Jumla"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Futa data ya hifadhi"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Ghairi usawazishaji"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Kwa sasa kipengele cha kusawazisha kina matatizo. Kitaanza kufanya kazi baada ya muda mfupi."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Faragha"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Data ya gari"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Dhibiti ufikiaji wa programu kwa data yako ya mahali"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Maikrofoni"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Dhibiti ufikiaji wa programu kwa maikrofoni"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Data ya gari"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Dhibiti shughuli na maelezo yaliyohifadhiwa kwenye gari hili"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Futa wasifu wako"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Futa wasifu na akaunti zako kwenye mfumo wa burudani na habari"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Kitendo hiki hakipatikani kwa wasifu wako"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Usalama"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kufunga skrini"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Hamna"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Sawa"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Utaondoa mbinu ya kufunga skrini?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Hatua hii itamruhusu mtu yeyote afikie akaunti yako"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Kufunga utumiaji wasifu"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Weka mipangilio ya kufungua kiotomatiki"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Weka PIN yako"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Weka nenosiri lako"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Kwa sababu za usalama, weka PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Ni lazima iwe na chini ya tarakimu <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Ni lazima iwe na tarakimu kuanzia 0 hadi 9 pekee."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Msimamizi wa kifaa haruhusu utumie PIN uliyotumia hivi majuzi"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"PIN zinazotumika zaidi zimezuiwa na msimamizi wako wa Tehama. Jaribu PIN tofauti."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"PIN zinazotumika zaidi zimezuiwa na msimamizi wako wa Tehama. Jaribu PIN tofauti."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Hali hii haiwezi kujumuisha herufi isiyoruhusiwa."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Nenosiri si sahihi. Ni lazima liwe na angalau herufi 4"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Msimamizi wa kifaa haruhusu kutumia nenosiri ulilotumia hivi majuzi"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Hitilafu ya kuhifadhi nenosiri"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Manenosiri yanayotumika sana yamezuiwa na msimamizi wako wa Tehama. Jaribu nenosiri tofauti."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Manenosiri yanayotumika sana yamezuiwa na msimamizi wako wa Tehama. Jaribu nenosiri tofauti."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Haturuhusu mpangilio wa tarakimu wa kupanda, kushuka au kujirudia."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Chaguo za kufunga skrini"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Siku <xliff:g id="NUM_DAYS">%3$s</xliff:g> zilizopita"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Kitufe cha Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Funga Onyesho"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Funga hali ya onyesho"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Hatua hii itafuta akaunti ya onyesho na kurejesha data ambayo kifaa kilitoka nayo kiwandani. Data yote ya mtumiaji itapotea."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Hatua hii itafuta akaunti ya onyesho na kurejesha data ya mfumo ambayo kifaa kilitoka nayo kiwandani. Data yote ya wasifu itapotea."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Funga Onyesho"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ONDOA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Kipengele hakipatikani unapoendesha gari"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Huwezi kuongeza mtumiaji unapoendesha gari"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Huwezi kuongeza wasifu unapoendesha gari"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Tafuta"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Mratibu na sauti"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Programu ya Mratibu"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Tumia maandishi kutoka kwenye skrini"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Ruhusu programu ya Mratibu ifikie maudhui ya skrini"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Tumia picha ya skrini"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Ruhusu programu ya Mratibu ifikie picha ya skrini"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Zilizotumwa hivi majuzi"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Programu zote"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Wasifu na akaunti"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Dhibiti wasifu nyingine"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Weka wasifu"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Futa wasifu huu"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Weka wasifu"</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 19be9c6..ce3d9b9 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"திரை"</string>
     <string name="brightness" msgid="2919605130898772866">"ஒளிர்வு நிலை"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"சூழலுக்கு ஏற்ற ஒளிர்வு"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"சுற்றியிருக்கும் ஒளிக்கேற்ப, ஒளிர்வு நிலையைச் சரிசெய்யும்"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"சூழலுக்கேற்றவாறு திரை ஒளிர்வைச் சரிசெய்யும்"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"நைட் லைட் ஆன் செய்யப்பட்டது"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"திரை, டச்ஸ்கிரீன்"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ஒளிமங்கல் திரை, டச்ஸ்கிரீன், பேட்டரி"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ஒளிமங்கல் திரை, டச்ஸ்கிரீன், பேட்டரி"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"ஒளிமங்கல் திரை, இரவு, மென்னிறம்"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"இரவுப் பயன்முறை"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"நெட்வொர்க் &amp; இணையம்"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"மொபைல் நெட்வொர்க்"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"டேட்டா உபயோக எச்சரிக்கையை அமைத்தல்"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"டேட்டா உபயோக வரம்பை அமைத்தல்"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"அமை"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM நெட்வொர்க்"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s வரை %1$d மெ.பை. பயன்படுத்தப்பட்டுள்ளது"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"பிற நெட்வொர்க்கில் இணை"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"நெட்வொர்க் விருப்பத்தேர்வுகள்"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"வைஃபை"</string>
     <string name="wifi_starting" msgid="473253087503153167">"வைஃபையை ஆன் செய்கிறது…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"வைஃபையை ஆஃப் செய்கிறது…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"நெட்வொர்க்குடன் இணைக்க முடியவில்லை"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"நெட்வொர்க்கைச் சேர்"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"இணை"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"இணைக்கிறது…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"தொடர்பு எல்லைக்குள் நெட்வொர்க் இல்லை"</string>
     <string name="wifi_password" msgid="5565632142720292397">"கடவுச்சொல்"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"கடவுச்சொல்லைக் காட்டு"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"நெட்வொர்க் பெயரை உள்ளிடவும்"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"உங்கள் ஹெட்யூனிட்டை பிற புளூடூத் சாதனங்களுக்கு <xliff:g id="TIMEOUT">%1$d</xliff:g> வினாடிகள் தெரியும்படி வைத்திருக்க ஆப்ஸ் விரும்புகிறது."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"புளூடூத்தை இயக்கி பிற சாதனங்களுக்கு <xliff:g id="TIMEOUT">%2$d</xliff:g> வினாடிகள் உங்கள் ஹெட்யூனிட்டைத் தெரியும்படி வைத்திருக்க <xliff:g id="APP_NAME">%1$s</xliff:g> விரும்புகிறது."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"புளூடூத்தை இயக்கி உங்கள் ஹெட்யூனிட்டை பிற சாதனங்களுக்கு <xliff:g id="TIMEOUT">%1$d</xliff:g> வினாடிகள் தெரியும்படி வைத்திருக்க ஆப்ஸ் விரும்புகிறது."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"பிற சாதனங்களில் %1$s என்று காட்டப்படும்"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"எனது சாதனங்கள்"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"ஏற்கெனவே இணைத்தவை"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s இணைக்கப்பட்டது"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s துண்டிக்கப்பட்டது"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"புளூடூத் இணைப்பிற்கான கோரிக்கை"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ஜோடி சேர்த்து, இணை"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"புளூடூத் இணைத்தல் குறியீடு"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"இயல்புநிலை அறிவிப்பிற்கான ஒலி"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"இயல்புநிலை அலாரத்திற்கான ஒலி"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"சேமி"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"விழிப்பூட்டல் ஒலிகள்"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"ரிங்டோன், அறிவிப்புகள், அலாரம்"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ஒளிர்வு"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"வெளிச்சத்திற்கேற்றவாறு திரை ஒளிர்வைச் சரிசெய்யும்"</string>
     <string name="units_settings" msgid="402325305096925886">"அலகுகள்"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"வேகம்"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"தொலைவு"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"அனைத்து ஆப்ஸையும் காட்டு"</string>
     <string name="default_applications" msgid="1558183275638697087">"இயல்புநிலை ஆப்ஸ்"</string>
     <string name="app_permissions" msgid="32799922508313948">"ஆப்ஸ் அனுமதிகள்"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g>ஐப் பயன்படுத்தும் ஆப்ஸ்"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"தரவுக்கான ஆப்ஸ் அணுகலைக் கட்டுப்படுத்தும்"</string>
     <string name="applications_settings" msgid="794261395191035632">"ஆப்ஸ் தகவல்"</string>
     <string name="force_stop" msgid="2153183697014720520">"உடனே நிறுத்து"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"உடனே நிறுத்தவா?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"நிறுவல் நீக்கு"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"இந்த ஆப்ஸை முடக்கினால் Androidடும் பிற ஆப்ஸும் எதிர்பார்த்தவாறு செயல்படாமல் போகக்கூடும்."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ஆப்ஸை முடக்கு"</string>
-    <string name="not_installed" msgid="4218816013370552746">"இவருக்கு நிறுவப்படவில்லை"</string>
+    <string name="not_installed" msgid="4163454337822508007">"இந்தச் சுயவிவரத்திற்கு நிறுவப்படவில்லை"</string>
     <string name="permissions_label" msgid="2701446753515612685">"அனுமதிகள்"</string>
     <string name="notifications_label" msgid="6586089149665170731">"அறிவிப்புகள்"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"சேமிப்பகமும் தற்காலிக சேமிப்பும்"</string>
     <string name="application_version_label" msgid="8556889839783311649">"பதிப்பு: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"அனுமதிகள் எதுவும் வழங்கப்படவில்லை"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"அனுமதிகள் எதையும் கோரவில்லை"</string>
+    <string name="unused_apps" msgid="648471933781010395">"பயன்படுத்தாத ஆப்ஸ்"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> பயன்படுத்தாத ஆப்ஸ்</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> பயன்படுத்தாத ஆப்ஸ்</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"அனுமதிகளை அகற்றி இடத்தைக் காலியாக்குதல்"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"அகச் சேமிப்பகத்தில் %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"டேட்டா உபயோகம்"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ஆப்ஸ் டேட்டா உபயோகம்"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ஒவ்வொரு முறையும் கேள்"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"இந்த ஆப்ஸில் திறக்காதே"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ஆதரிக்கப்படும் இணைப்புகள்"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"ஆப்ஸ்"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"சமீபத்தில் திறந்தவை"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"எல்லா %1$d ஆப்ஸையும் காட்டு"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"அனுமதி நிர்வாகம்"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"தரவுக்கான ஆப்ஸ் அணுகலைக் கட்டுப்படுத்தும்"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant மற்றும் பலவற்றுக்கு"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"சிஸ்டம் மற்றும் பிற அமைப்புகளுக்கு"</string>
     <string name="special_access" msgid="5730278220917123811">"ஆப்ஸிற்கான சிறப்பு அணுகல்"</string>
     <string name="show_system" msgid="4401355756969485287">"சிஸ்டம் ஆப்ஸைக் காட்டு"</string>
     <string name="hide_system" msgid="8845453295584638040">"சிஸ்டம் ஆப்ஸை மறை"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"சிஸ்டம் ஆப்ஸை மறை"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"சிஸ்டம் அமைப்புகளை மாற்று"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"இது சிஸ்டம் அமைப்புகளை மாற்ற அனுமதிக்கும்."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"அறிவிப்பு அணுகல்"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"இருப்பிடத் தகவல் குறித்த சமீபத்திய கோரிக்கைகள் இல்லை"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ஆப்ஸ் நிலை அனுமதிகள்"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"இருப்பிடச் சேவைகள்"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"இருப்பிடத்தைப் பயன்படுத்து"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"சிஸ்டம்"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"சிஸ்டம் புதுப்பிப்புகள்"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"மேம்பட்டவை"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"சாதனம் குறித்த தகவல், சட்டப்பூர்வத் தகவல், மீட்டமைத்தல் மற்றும் பல"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android பதிப்பு"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android பாதுகாப்பின் பேட்ச் நிலை"</string>
     <string name="hardware_info" msgid="3973165746261507658">"மாடல் &amp; வன்பொருள்"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"பின்வரும் விருப்பத்தேர்வுகளை இது மீட்டமைக்கும்:\n\n"<li>"முடக்கப்பட்டுள்ள ஆப்ஸ்"</li>\n<li>"முடக்கப்பட்டுள்ள ஆப்ஸ் அறிவிப்புகள்"</li>\n<li>"செயல்பாடுகளுக்கான இயல்புநிலை ஆப்ஸ்"</li>\n<li>"ஆப்ஸிற்கான பின்புலத் தரவுக் கட்டுப்பாடுகள்"</li>\n<li>"ஏதேனும் அனுமதிக் கட்டுப்பாடுகள்"</li>\n\n"இதன் காரணமாக எந்த ஆப்ஸ் தரவையும் இழக்கமாட்டீர்கள்."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ஆப்ஸை மீட்டமை"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ஆப்ஸ் விருப்பத்தேர்வுகள் மீட்டமைக்கப்பட்டன"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"எல்லாத் தரவையும் அழி (ஆரம்பநிலை ரீசெட்)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"இது உங்கள் கார் சாதனத்தின் முதன்மை யூனிட்டிலிருந்து அனைத்துத் தரவையும் அழித்துவிடும். இவற்றில்\n\n"<li>"உங்களின் Google கணக்கு"</li>\n<li>"சிஸ்டம் &amp; ஆப்ஸ் தரவுகள் மற்றும் அமைப்புகள்"</li>\n<li>"பதிவிறக்கப்பட்ட ஆப்ஸ்"</li>" ஆகியவை உள்ளடங்கும்"</string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"தற்போது பின்வரும் கணக்குகளில் உள்நுழைந்துள்ளீர்கள்:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"இந்தக் காரின் சாதனத்தைப் பிற பயனர்கள் பயன்படுத்துகின்றனர்."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"காரின் சாதனத்தை மீட்டமை"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"மீட்டமைக்கவா?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"உங்களின் தனிப்பட்ட தகவல்கள், பதிவிறக்கிய ஆப்ஸ் போன்ற அனைத்தையும் அழிக்கவா? இதைச் செயல்தவிர்க்க இயலாது!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"அனைத்தையும் அழி"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"அழிக்கிறது"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"காத்திருக்கவும்..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"அனைத்தையும் அழி (ஆரம்பநிலைக்கு மீட்டமை)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"இன்ஃபோடெயின்மென்ட் சிஸ்டத்தில் உள்ள எல்லாத் தரவையும் சுயவிவரங்களையும் அழித்துவிடும்"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"இது உங்கள் வாகனத்தின் இன்ஃபோடெயின்மென்ட் சிஸ்டத்தில் உள்ள எல்லாத் தரவையும் அழித்துவிடும், இவற்றில் அடங்குபவை:\n\n"<li>"உங்கள் Google கணக்கு"</li>\n<li>"சிஸ்டம் &amp; ஆப்ஸ் தரவு மற்றும் அமைப்புகள்"</li>\n<li>"பதிவிறக்கிய ஆப்ஸ்"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"பின்வரும் கணக்குகளில் உள்நுழைந்துள்ளீர்கள்:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"இந்த வாகனத்தில் பிற சுயவிவரங்களும் உள்ளன."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"எல்லாத் தரவையும் அழி"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"எல்லாத் தரவையும் அழிக்கவா?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"இந்த இன்ஃபோடெயின்மென்ட் சிஸ்டத்தில் உள்ள உங்களின் தனிப்பட்ட சுயவிவரத் தரவு, கணக்குகள், பதிவிறக்கிய ஆப்ஸ் ஆகிய அனைத்தையும் இது அழித்துவிடும்.\n\nஇதைச் செயல்தவிர்க்க முடியாது."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"அனைத்தையும் அழி"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"அழிக்கிறது"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"காத்திருக்கவும்..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"தேதி &amp; நேரம்"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"தேதி, நேரம், நேரமண்டலம் &amp; வடிவங்களை அமை"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"தானியங்கு தேதி &amp; நேரம்"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"நிர்வாகியாக உள்நுழைந்துள்ளீர்கள்"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"நிர்வாகி அனுமதிகளை வழங்குதல்"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"நிர்வாகியாக்கு"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"நிர்வாகியாக்கப்பட்ட பயனரால் மற்ற ’நிர்வாகிகள்’ உட்பட எவரையும் நீக்க முடிவதோடு சிஸ்டத்தையும் ஆரம்பநிலைக்கு மீட்டமைக்க முடியும்."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"இந்தச் சுயவிவரத்தால் பிற சுயவிவரங்களை (மற்ற நிர்வாகிகள் உட்பட) நீக்க முடிவதோடு சிஸ்டத்தையும் ஆரம்பநிலைக்கு மீட்டமைக்க முடியும்."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"இந்தச் செயலைத் திரும்பப் பெற இயலாது."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ஆம், நிர்வாகியாக்கு"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"புதிய பயனர்களை உருவாக்குதல்"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"புதிய சுயவிவரங்களை உருவாக்கு"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ஃபோன் அழைப்புகளைச் செய்தல்"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"காரின் மொபைல் டேட்டா மூலம் மெசேஜிங்"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"புதிய ஆப்ஸை நிறுவுதல்"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ஆப்ஸை நிறுவல்நீக்குதல்"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"பயனரைச் சேர்"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"புதிய பயனர்"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"புதிய பயனரைச் சேர்க்கவா?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"எந்தவொரு பயனரும், மற்ற பயனர்களுக்காக ஆப்ஸைப் புதுப்பிக்கலாம்."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"பயனர் வரம்பை அடைந்துவிட்டீர்கள்"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> பயனர்கள் வரை சேர்க்க முடியும்.</item>
-      <item quantity="one">ஒரு பயனரை மட்டுமே சேர்க்க முடியும்.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"சுயவிவரத்தைச் சேர்"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"புதிய சுயவிவரம்"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"புதிய சுயவிவரத்தைச் சேர்க்கவா?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"புதிய சுயவிவரத்தைச் சேர்க்கும்போது அவர் தனக்கான சேமிப்பிடத்தை அமைக்க வேண்டும்."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"எந்தவொரு சுயவிவரமும் மற்ற எல்லாச் சுயவிவரங்களுக்காகவும் ஆப்ஸைப் புதுப்பிக்கலாம்."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"அனுமதிக்கப்பட்ட அதிகபட்சச் சுயவிவரங்களை உருவாக்கிவிட்டீர்கள்"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> சுயவிவரங்கள் வரை உருவாக்கலாம்.</item>
+      <item quantity="one">ஒரு சுயவிவரத்தை மட்டுமே உருவாக்கலாம்.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"புதிய பயனரைச் சேர்க்க முடியவில்லை"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"இந்தப் பயனரை நீக்கவா?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"அனைத்து ஆப்ஸும் டேட்டாவும் நீக்கப்படும்."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"பயனரை நீக்க இயலவில்லை."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"புதிய சுயவிவரத்தை உருவாக்க முடியவில்லை"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"இந்தச் சுயவிவரத்தை நீக்கவா?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"இந்தச் சுயவிவரத்திற்கான அனைத்து ஆப்ஸும் தரவும் நீக்கப்படும்"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"சுயவிவரத்தை நீக்க முடியவில்லை."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"சுயவிவரங்களை மாற்றும்போதோ வாகனத்தை மீண்டும் தொடங்கும்போதோ இந்தச் சுயவிவரம் நீக்கப்படும்."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"நிராகரி"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"மீண்டும் முயலவும்"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"கடைசிப் பயனரை நீக்கவா?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"இந்தக் காருக்கான மீதியிருக்கும் ஒரேயொரு பயனரையும் நீக்கியபிறகு, புதிதாக ஒரு ’நிர்வாகிப் பயனர் கணக்கு’ உருவாக்கப்படும்."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"இந்தப் பயனர் கணக்குடன் தொடர்புடைய ஆப்ஸ், தரவு மற்றும் அமைப்புகள் அனைத்தும் நீக்கப்படும். சிஸ்டத்தை நீங்கள் மீண்டும் அமைத்திட வேண்டியிருக்கும்."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"மீதமுள்ள கடைசி சுயவிவரத்தையும் நீக்கவா?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"இந்த வாகனத்தில் மீதமுள்ள ஒரு சுயவிவரத்தையும் நீக்கிவிட்டால் அந்தச் சுயவிவரத்துடன் இணைக்கப்பட்டுள்ள தரவு, அமைப்புகள், ஆப்ஸ் ஆகிய அனைத்தும் அழிக்கப்படும்."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"மீட்டமைத்த பின்பு புதிய சுயவிவரத்தை அமைக்கலாம்."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"புதிய \'நிர்வாகிக் கணக்கைத்\' தேர்வு செய்க"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"குறைந்தபட்சம் ஒரு \'நிர்வாகிக் கணக்காவது’ இருக்க வேண்டும். இக்கணக்கை நீக்க, முதலில் ஒரு மாற்றுக் கணக்கைத் தேர்வு செய்யவும்."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"நிர்வாகியைத் தேர்வு செய்க"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"நீங்கள் (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"பெயர்"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"அமைக்கவில்லை"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"பயனர் பெயரைத் திருத்தவும்"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"சுயவிவரப் பெயரைத் திருத்து"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"காலியாக இருக்கக்கூடாது."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"பயனர்பெயரைத் தவறாக உள்ளிட்டுள்ளீர்கள்."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"உள்ளிட்ட சுயவிவரப் பெயர் தவறானது."</string>
     <string name="users_list_title" msgid="770764290290240909">"பயனர்கள்"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"சுயவிவரங்கள்"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sக்கு இந்த அனுமதிகள் உள்ளன"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"சேமிப்பகம்"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"இசை &amp; ஆடியோ"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ஆடியோ ஃபைல்கள்"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"கணக்கிடுகிறது…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ஆப்ஸின் அளவு"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"பயனர் தரவு"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"சுயவிவரத் தரவு"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"தற்காலிகச் சேமிப்பு"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"மொத்தம்"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"சேமிப்பகத்தில் உள்ளவற்றை அழி"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ஒத்திசைவை ரத்துசெய்"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"தற்போது ஒத்திசைக்க இயலவில்லை. விரைவில் இது சரிசெய்யப்படும்."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"தனியுரிமை"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"வாகனத் தரவு"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"இருப்பிடத்திற்கான ஆப்ஸ் அணுகலைக் கட்டுப்படுத்து"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"மைக்ரோஃபோன்"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"மைக்ரோஃபோனுக்கான ஆப்ஸ் அணுகலைக் கட்டுப்படுத்தலாம்"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"வாகனத் தரவு"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"இந்த வாகனத்தில் சேமிக்கப்பட்டுள்ள தகவல்களையும் செயல்பாடுகளையும் நிர்வகிக்கலாம்"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"எனது சுயவிவரத்தை நீக்கு"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"இன்ஃபோடெயின்மென்ட் சிஸ்டத்தில் உள்ள உங்கள் சுயவிவரத்தையும் கணக்குகளையும் அழிக்கும்"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"உங்கள் சுயவிவரத்தில் இந்தச் செயலைச் செய்ய முடியாது"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"பாதுகாப்பு"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"திரைப் பூட்டு"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"எதுவுமில்லை"</string>
@@ -567,18 +609,20 @@
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"அழி"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"ரத்துசெய்"</string>
     <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"திறப்பதற்கான புதிய பேட்டர்ன்"</string>
-    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"அன்லாக் பேட்டர்னை வரைக"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"திறப்பதற்கான பேட்டர்னை வரைக"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"முடிந்ததும் விரலை எடுக்கவும்"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"பேட்டர்ன் பதிவுசெய்யப்பட்டது"</string>
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"உறுதிப்படுத்த, மீண்டும் பேட்டர்னை வரைக"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"குறைந்தது 4 புள்ளிகளை இணைக்கவும். மீண்டும் முயல்க."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"தவறான பேட்டர்ன்"</string>
-    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"அன்லாக் பேட்டர்னை வரைவது எப்படி?"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"திறப்பதற்கான பேட்டர்னை வரைவது எப்படி?"</string>
     <string name="error_saving_lockpattern" msgid="2933512812768570130">"பேட்டர்னைச் சேமிப்பதில் பிழை"</string>
     <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="4636307830951251013">"பலமுறை தவறாக முயன்றுவிட்டீர்கள். <xliff:g id="NUMBER">%d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
     <string name="okay" msgid="4589873324439764349">"சரி"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"திரைப் பூட்டை அகற்றவா?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"திரைப் பூட்டை அகற்றினால், அனைவருக்கும் அணுகல் கிடைக்கும்"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"சுயவிவரப் பூட்டு"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"தானாக அன்லாக் செய்யும்படி அமைக்கலாம்"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"பின்னை உள்ளிடவும்"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"கடவுச்சொல்லை உள்ளிடவும்"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"பாதுகாப்பிற்கு, பின்னை அமைக்கவும்"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> இலக்கங்களை விட குறைவாக இருக்க வேண்டும்"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"0-9 இலக்கங்கள் மட்டுமே இருக்க வேண்டும்."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"சாதன நிர்வாகி சமீபத்திய பின்னைப் பயன்படுத்துவதை அனுமதிக்கவில்லை"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"உங்கள் IT நிர்வாகி, பொதுவான பின்களைத் தடுத்துள்ளார். வேறு பின்னைப் பயன்படுத்திப் பார்க்கவும்."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"உங்கள் IT நிர்வாகி, பொதுவான பின்களைத் தடுத்துள்ளார். வேறு பின்னைப் பயன்படுத்திப் பார்க்கவும்."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"இதில் தவறான எழுத்து இருக்கக்கூடாது."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"கடவுச்சொல் செல்லாது, குறைந்தது 4 எழுத்துகள் இருக்க வேண்டும்."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"சாதன நிர்வாகி சமீபத்திய கடவுச்சொல்லைப் பயன்படுத்துவதை அனுமதிக்கவில்லை"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"கடவுச்சொல்லைச் சேமிப்பதில் பிழை"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"உங்கள் IT நிர்வாகி, பொதுவான கடவுச்சொற்களைத் தடுத்துள்ளார். வேறு கடவுச்சொல்லைப் பயன்படுத்திப் பார்க்கவும்."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"உங்கள் IT நிர்வாகி, பொதுவான கடவுச்சொற்களைத் தடுத்துள்ளார். வேறு கடவுச்சொல்லைப் பயன்படுத்திப் பார்க்கவும்."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"இலக்கங்கள் ஏறுவரிசையில், இறங்குவரிசையில் அல்லது ஒரே இலக்கத்தைத் தொடர்ந்து பயன்படுத்துவது அனுமதிக்கப்படாது."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"திரைப் பூட்டு விருப்பங்கள்"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> நாட்கள் முன்பு"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"என்டர் விசை"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"டெமோவிலிருந்து வெளியேறு"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"டெமோ மோடிலிருந்து வெளியேறுதல்"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"இவ்வாறு செய்தால், டெமோ கணக்கு நீக்கப்படுவதோடு, சாதனமானது தரவின் ஆரம்பநிலைக்கு மீட்டமைக்கப்படும். எல்லாப் பயனர் தரவையும் இழப்பீர்கள்."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"இவ்வாறு செய்வது டெமோ கணக்கை நீக்குவதோடு, தரவின் ஆரம்பநிலைக்கு சிஸ்டத்தை மீட்டமைக்கும். இதனால் எல்லாச் சுயவிவரத் தரவையும் இழந்துவிடுவீர்கள்."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"டெமோவிலிருந்து வெளியேறு"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"நிராகரி"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"வாகனம் ஓட்டும்போது இந்த அம்சத்தைப் பயன்படுத்த இயலாது"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"வாகனம் ஓட்டும்போது பயனரைச் சேர்க்க முடியாது"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"வாகனம் ஓட்டும்போது சுயவிவரத்தைச் சேர்க்க முடியாது"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant ஆப்ஸ்"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"திரையில் உள்ள உரையைப் பயன்படுத்து"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"திரையின் உள்ளடக்கத்தை அணுக Assistantடை அனுமதிக்கும்"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ஸ்கிரீன்ஷாட்டைப் பயன்படுத்து"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"ஸ்கிரீன்ஷாட்டை அணுக Assistantடை அனுமதிக்கும்"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"சமீபத்தில் அனுப்பியவை"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"அனைத்து ஆப்ஸும்"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"சுயவிவரங்கள் &amp; கணக்குகள்"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"பிற சுயவிவரங்களை நிர்வகி"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"புதிய சுயவிவரத்தைச் சேர்"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"இந்தச் சுயவிவரத்தை நீக்கு"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"சுயவிவரத்தைச் சேர்"</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index c00d979..0a59d01 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"డిస్‌ప్లే"</string>
     <string name="brightness" msgid="2919605130898772866">"ప్రకాశం స్థాయి"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"పరిసర అనుకూల ప్రకాశం"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"అందుబాటులో ఉన్న కాంతికి తగినట్లు ప్రకాశం స్థాయిని ఆప్టిమైజ్ చేస్తుంది"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"స్క్రీన్ ప్రకాశాన్ని పరిసరాలకు అనుగుణంగా సర్దుబాటు చేయండి"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"రాత్రి కాంతి ఆన్‌లో ఉంది"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"స్క్రీన్, టచ్‌స్క్రీన్"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"కాంతివిహీన స్క్రీన్, టచ్‌స్క్రీన్, బ్యాటరీ"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"కాంతివిహీన స్క్రీన్, టచ్‌స్క్రీన్, బ్యాటరీ"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"కాంతివిహీన స్క్రీన్, రాత్రి, లేత రంగు"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"రాత్రి మోడ్"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"మొబైల్ నెట్‌వర్క్"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"డేటా వినియోగ హెచ్చరికను సెట్ చేయండి"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"డేటా వినియోగ పరిమితిని సెట్ చేయండి"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"సెట్ చేయి"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM నెట్‌వర్క్"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s వరకు %1$d MBని వినియోగించారు"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"మరో నెట్‌వర్క్‌కు కనెక్ట్ చేయండి"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"నెట్‌వర్క్ ప్రాధాన్యతలు"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fiని ఆన్ చేస్తోంది…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fiని ఆఫ్ చేస్తోంది…"</string>
@@ -93,17 +93,19 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"నెట్‌వర్క్‌కు కనెక్ట్ చేయడం విఫలమైంది"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"నెట్‌వర్క్‌ను జోడించు"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"కనెక్ట్"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"కనెక్ట్ అవుతోంది…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"నెట్‌వర్క్, పరిధిలో లేదు"</string>
     <string name="wifi_password" msgid="5565632142720292397">"పాస్‌‌వర్డ్"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"పాస్‌వర్డ్‌ను చూపు"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"దయచేసి నెట్‌వర్క్‌ పేరును నమోదు చేయండి"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"నెట్‌వర్క్ పేరు"</string>
-    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSIDని ఎంటర్ చేయండి"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSIDని నమోదు చేయండి"</string>
     <string name="wifi_security" msgid="158358046038876532">"భద్రత"</string>
     <string name="wifi_signal_strength" msgid="8507318230553042817">"సిగ్నల్ సామర్థ్యం"</string>
     <string name="wifi_status" msgid="5688013206066543952">"స్థితి"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"లింక్ వేగం"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"తరచుదనం"</string>
-    <string name="wifi_ip_address" msgid="3128140627890954061">"IP అడ్రస్"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"IP చిరునామా"</string>
     <string name="show_password" msgid="2074628020371139240">"పాస్‌వర్డ్‌ను చూపు"</string>
     <string name="default_network_name_summary" msgid="8148402439232464276">"నెట్‌వర్క్ పేరును నమోదు చేయండి"</string>
     <string name="default_password_summary" msgid="8789594645836902982">"పాస్‌వర్డ్‌ని నమోదు చేయండి"</string>
@@ -120,7 +122,7 @@
     <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
     <string name="wifi_network_detail" msgid="9070182553555487360">"నెట్‌వర్క్ వివరాలు"</string>
     <string name="wifi_mac_address" msgid="1466178247802349180">"MAC చిరునామా"</string>
-    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP అడ్రస్"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP చిరునామా"</string>
     <string name="wifi_subnet_mask" msgid="6238171812379380608">"సబ్‌నెట్ మాస్క్"</string>
     <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
     <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 చిరునామాలు"</string>
@@ -151,7 +153,7 @@
     <string name="wifi_ap_2G" msgid="5364135697314262014">"2.4 GHz"</string>
     <string name="wifi_ap_5G" msgid="4945574428537860279">"5.0 GHz"</string>
     <string name="wifi_ap_band_select_one" msgid="615578175244067396">"హాట్‌స్పాట్‌కు బ్యాండ్:"</string>
-    <string name="tether_settings_title_all" msgid="4663704772599383169">"హాట్‌స్పాట్ &amp; టెథరింగ్"</string>
+    <string name="tether_settings_title_all" msgid="4663704772599383169">"హాట్‌స్పాట్ &amp; టెథెరింగ్"</string>
     <string name="wifi_hotspot_auto_off_title" msgid="7871858619924599922">"హాట్‌స్పాట్‌ని ఆటోమేటిక్‌గా ఆఫ్ చేయండి"</string>
     <string name="wifi_hotspot_auto_off_summary" msgid="4830341947541735136">"పరికరాలు ఏవీ కనెక్ట్ కాకపోతే Wi‑Fi హాట్‌స్పాట్‌ ఆఫ్ అవుతుంది"</string>
     <string name="wifi_ask_enable" msgid="4452418245680754578">"<xliff:g id="REQUESTER">%s</xliff:g> Wi-Fiని ఆన్ చేయాలనుకుంటుంది"</string>
@@ -168,11 +170,11 @@
     <string name="bluetooth_device" msgid="3178478829314083240">"పేరులేని పరికరం"</string>
     <string name="bluetooth_paired_devices" msgid="6463199569164652410">"జత చేయబడిన పరికరాలు"</string>
     <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"కొత్త పరికరాన్ని జత చేయి"</string>
-    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"పెయిర్ చేయడం కోసం బ్లూటూత్ ఆన్ చేయబడుతుంది"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"జత చేయడం కోసం బ్లూటూత్ ఆన్ చేయబడుతుంది"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"పరికరాన్ని డిస్‌కనెక్ట్ చేయాలా?"</string>
     <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"మీ వాహనం <xliff:g id="DEVICE_NAME">%1$s</xliff:g> నుండి డిస్‌కనెక్ట్ అవుతుంది."</string>
     <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"వాహనం బ్లూటూత్ చిరునామా: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"పరికర బ్లూటూత్ అడ్రస్: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"పరికరం యొక్క బ్లూటూత్ చిరునామా: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_name" msgid="2609869978821094114">"వాహనం పేరు"</string>
     <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ఈ వాహనం పేరు మార్చండి"</string>
     <string name="bluetooth_rename_device" msgid="8406868875363878712">"పరికరం పేరు మార్చండి"</string>
@@ -190,9 +192,14 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ఒక యాప్ మీ పరికర హెడ్ యూనిట్‌ను ఇతర బ్లూటూత్ పరికరాలకు <xliff:g id="TIMEOUT">%1$d</xliff:g> సెకన్ల పాటు కనిపించేలా చేయాలనుకుంటుంది."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> బ్లూటూత్‌ను ఆన్ చేసి, మీ పరికర హెడ్ యూనిట్‌ను <xliff:g id="TIMEOUT">%2$d</xliff:g> సెకన్ల పాటు ఇతర పరికరాలకు కనిపించేలా చేయాలనుకుంటోంది."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"యాప్ బ్లూటూత్‌ను ప్రారంభించి, మీ పరికర హెడ్ యూనిట్‌ను ఇతర పరికరాలకు <xliff:g id="TIMEOUT">%1$d</xliff:g> సెకన్ల పాటు కనిపించేలా చేయాలనుకుంటుంది."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"ఇతర పరికరాల్లో %1$sగా కనిపిస్తుంది"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"నా పరికరాలు"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"గతంలో కనెక్ట్ చేయబడినవి"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s కనెక్ట్ చేయబడింది"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s డిస్‌కనెక్ట్ చేయబడింది"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"బ్లూటూత్ జత చేయడానికి అభ్యర్థన"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"జత చేసి, కనెక్ట్ చేయి"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"బ్లూటూత్ పెయిరింగ్ కోడ్"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"బ్లూటూత్ జత చేసే కోడ్"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"పిన్‌ అక్షరాలను లేదా చిహ్నాలను కలిగి ఉంది"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"జత చేసే కోడ్‌ను టైప్ చేసి, ఆపై Return లేదా Enter నొక్కండి"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయాలా?"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"డిఫాల్ట్ నోటిఫికేషన్ ధ్వని"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"డిఫాల్ట్ అలారం ధ్వని"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"సేవ్ చేయి"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"అలర్ట్ సౌండ్‌లు"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"రింగ్‌టోన్, నోటిఫికేషన్, అలారం"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ప్రకాశం"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"స్క్రీన్‌ను తక్కువ కాంతికి సర్దుబాటు చేయండి"</string>
     <string name="units_settings" msgid="402325305096925886">"యూనిట్‌లు"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"వేగం"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"దూరం"</string>
@@ -280,23 +291,29 @@
     <string name="all_applications" msgid="7798210477486822168">"అన్ని యాప్‌లను చూపండి"</string>
     <string name="default_applications" msgid="1558183275638697087">"ఆటోమేటిక్ యాప్‌లు"</string>
     <string name="app_permissions" msgid="32799922508313948">"యాప్ అనుమతులు"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> ఉపయోగిస్తున్న యాప్‌లు"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"మీ డేటాకు యాప్ యాక్సెస్‌ను కంట్రోల్ చేయండి"</string>
     <string name="applications_settings" msgid="794261395191035632">"యాప్ సమాచారం"</string>
     <string name="force_stop" msgid="2153183697014720520">"ఫోర్స్ స్టాప్"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"ఫోర్స్ స్టాప్ చేయాలా?"</string>
     <string name="force_stop_dialog_text" msgid="4354954014318432599">"మీరు ఏదైనా యాప్‌ను ఫోర్స్ స్టాప్ చేస్తే, అది సరిగ్గా పని చేయకపోవచ్చు."</string>
-    <string name="disable_text" msgid="4358165448648990820">"డిజేబుల్ చేయి"</string>
+    <string name="disable_text" msgid="4358165448648990820">"నిలిపివేయి"</string>
     <string name="enable_text" msgid="1794971777861881238">"ప్రారంభించు"</string>
     <string name="uninstall_text" msgid="277907956072833012">"అన్ఇన్‌స్టాల్ చేయి"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"మీరు ఈ యాప్‌ను నిలిపివేస్తే, Android మరియు ఇతర యాప్‌లు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"యాప్‌ను నిలిపివేయి"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ఈ వినియోగదారుని కోసం ఇన్‌స్టాల్ చేయలేదు"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ఈ ప్రొఫైల్‌లో ఇన్‌స్టాల్ చేయబడలేదు"</string>
     <string name="permissions_label" msgid="2701446753515612685">"అనుమతులు"</string>
     <string name="notifications_label" msgid="6586089149665170731">"నోటిఫికేషన్‌లు"</string>
-    <string name="storage_application_label" msgid="5911779903670978586">"స్టోరేజ్ &amp; కాష్"</string>
+    <string name="storage_application_label" msgid="5911779903670978586">"నిల్వ &amp; కాష్"</string>
     <string name="application_version_label" msgid="8556889839783311649">"వెర్షన్: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"అనుమతులు మంజూరు కాలేదు"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"అనుమతులను అభ్యర్థించలేదు"</string>
+    <string name="unused_apps" msgid="648471933781010395">"ఉపయోగించని యాప్‌లు"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ఉపయోగించని యాప్‌లు</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ఉపయోగించని యాప్</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"అనుమతులను తీసివేసి స్పేస్‌ను ఖాళీ చేయండి"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"అంతర్గత నిల్వలో %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"డేటా వినియోగం"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"యాప్ డేటా వినియోగం"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ప్రతిసారి అడుగు"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"ఈ యాప్‌లో తెరవదు"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"మద్దతిచ్చే లింక్‌లు"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"యాప్‌లు"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"ఇటీవల తెరిచినవి"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"అన్ని %1$d యాప్‌లను చూడండి"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"అనుమతి మేనేజర్"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"మీ డేటాకు యాప్ యాక్సెస్‌ను కంట్రోల్ చేయండి"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistant, ఇంకా మరిన్నింటి కోసం"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"సిస్టమ్, ఇతర సెట్టింగ్‌లకు"</string>
     <string name="special_access" msgid="5730278220917123811">"ప్రత్యేక యాప్ యాక్సెస్"</string>
     <string name="show_system" msgid="4401355756969485287">"సిస్టమ్‌ను చూపు"</string>
     <string name="hide_system" msgid="8845453295584638040">"సిస్టమ్‌ను దాచు"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"సిస్టమ్ యాప్‌లను దాచు"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"సిస్టమ్ సెట్టింగ్‌ల సవరణ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"సిస్టమ్ సెట్టింగ్‌లను సవరించడానికి ఈ అనుమతి యాప్‌కు వీలు కల్పిస్తుంది."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"నోటిఫికేషన్ యాక్సెస్"</string>
@@ -348,8 +373,8 @@
     <string name="premium_sms_access_title" msgid="1409118461646148686">"ప్రీమియం SMS యాక్సెస్"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"ప్రీమియం SMSతో మీకు డబ్బు ఖర్చు కావచ్చు, ఈ ఛార్జీ మీ క్యారియర్ బిల్లులలో విధించబడుతుంది. మీరు ఒక యాప్‌కు అనుమతిని ఇస్తే, ఆ యాప్‌ను ఉపయోగించి మీరు ప్రీమియం SMSను పంపగలరు."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"వినియోగ యాక్సెస్"</string>
-    <string name="usage_access_description" msgid="2413168719257435422">"\'వినియోగ యాక్సెస్\' ద్వారా యాప్, మీరు ఏయే ఇతర యాప్‌లను ఉపయోగిస్తున్నారో, వాటిని ఎంత తరచుగా ఉపయోగిస్తున్నారో, అలాగే మీ క్యారియర్, భాష సెట్టింగ్‌లు, ఇతర వివరాలను ట్రాక్ చేయగలదు."</string>
-    <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi కంట్రోల్‌"</string>
+    <string name="usage_access_description" msgid="2413168719257435422">"వినియోగ యాక్సెస్‌తో యాప్ మీరు ఉపయోగించే ఇతర యాప్‌ల గురించి మరియు వాటిని ఎంత తరచుగా ఉపయోగిస్తున్నారనే దాని గురించి అలాగే మీ క్యారియర్, భాష సెట్టింగ్‌లు మరియు ఇతర వివరాలను ట్రాక్ చేయగలదు."</string>
+    <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi నియంత్రణ"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"యాప్‌కు Wi-Fiను ఆన్ లేదా ఆఫ్ చేయడానికి, Wi-Fi నెట్‌వర్క్‌లను స్కాన్ చేసి, కనెక్ట్ చేయడానికి, నెట్‌వర్క్‌లను జోడించడానికి లేదా తీసివేయడానికి, స్థానికం-మాత్రమే హాట్‌స్పాట్‌ను ప్రారంభించడానికి ఈ Wi-Fi కంట్రోలర్ అనుమతిస్తుంది."</string>
     <string name="more_special_access_title" msgid="166115485446645971">"మరిన్ని"</string>
     <string name="location_settings_title" msgid="901334356682423679">"స్థానం"</string>
@@ -357,16 +382,21 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ఇటీవలి స్థాన అభ్యర్థనలు లేవు"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"యాప్‌-స్థాయి అనుమతులు"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"స్థాన సేవలు"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"లొకేషన్‌ను ఉపయోగించండి"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"సిస్టమ్"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"సిస్టమ్ అప్‌డేట్‌లు"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"అధునాతనం"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"పరిచయం, చట్టపరమైన సమాచారం, రీసెట్, మరిన్ని"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android వెర్షన్"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android భద్రతా ప్యాచ్ స్థాయి"</string>
     <string name="hardware_info" msgid="3973165746261507658">"మోడల్ &amp; హార్డ్‌వేర్"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"మోడల్: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
     <string name="baseband_version" msgid="2370088062235041897">"బేస్‌బ్యాండ్ వెర్షన్"</string>
     <string name="kernel_version" msgid="7327212934187011508">"కెర్నెల్ వెర్షన్"</string>
-    <string name="build_number" msgid="3997326631001009102">"బిల్డ్ నంబర్"</string>
-    <string name="bluetooth_mac_address" msgid="7641425947941688072">"బ్లూటూత్ అడ్రస్"</string>
+    <string name="build_number" msgid="3997326631001009102">"బిల్డ్ సంఖ్య"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"బ్లూటూత్ చిరునామా"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"అందుబాటులో లేదు"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"స్థితి"</string>
     <string name="device_status" msgid="267298179806290920">"స్థితి"</string>
@@ -387,7 +417,7 @@
     <string name="wallpaper_attributions" msgid="9201272150014500697">"వాల్‌పేపర్‌లు"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ఉపగ్రహ ఫోటోలను అందించినవారు:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="model_info" msgid="4966408071657934452">"మోడల్"</string>
-    <string name="status_serial_number" msgid="9158889113131907656">"సీరియల్ నంబర్"</string>
+    <string name="status_serial_number" msgid="9158889113131907656">"క్రమ సంఖ్య"</string>
     <string name="hardware_revision" msgid="5713759927934872874">"హార్డ్‌వేర్ వెర్షన్"</string>
     <string name="regulatory_info_text" msgid="8890339124198005428"></string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"మూడవ పక్షం లైసెన్స్‌లు"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"ఇది వీటి కోసం అన్ని ప్రాధాన్యతలను రీసెట్ చేస్తుంది:\n\n"<li>"నిలిపివేయబడిన యాప్‌లు"</li>\n<li>"నిలిపివేయబడిన యాప్ నోటిఫికేషన్‌లు"</li>\n<li>"చర్యల కోసం డిఫాల్ట్ యాప్‌లు"</li>\n<li>"యాప్‌ల కోసం నేపథ్య డేటా పరిమితులు"</li>\n<li>"ఏవైనా అనుమతి పరిమితులు"</li>\n\n" మీరు ఏ యాప్‌ డేటాను కోల్పోరు."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"యాప్‌లను రీసెట్ చేయి"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"యాప్ ప్రాధాన్యతలు రీసెట్ చేయబడ్డాయి"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"మొత్తం డేటాను తొలగించు (ఫ్యాక్టరీ రీసెట్)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"ఇది మీ వాహన ప్రధాన విభాగం నుండి మొత్తం డేటాను తొలగిస్తుంది, వీటితో సహా:\n\n"<li>"మీ Google ఖాతా"</li>\n<li>"సిస్టమ్ మరియు యాప్ డేటా మరియు సెట్టింగ్‌లు"</li>\n<li>"డౌన్‌లోడ్ చేసిన యాప్‌‍లు"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"మీరు ప్రస్తుతం క్రింది ఖాతాలకు సైన్ ఇన్ చేసారు:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ఈ వాహనంలో ఇతర వినియోగదారులు ఉన్నారు."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"వాహనాన్ని రీసెట్ చేయి"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"రీసెట్ చేయాలా?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"మీ వ్యక్తిగత సమాచారం మరియు డౌన్‌లోడ్ చేసిన యాప్‌లు అన్నింటినీ తొలగించాలా? మీరు ఈ చర్యను తిరిగి రద్దు చేయలేరు!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ప్రతి దాన్ని తొలగించండి"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"తొలగిస్తోంది"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"దయచేసి వేచి ఉండండి..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"డేటా అంతటినీ తొలగించు (ఫ్యాక్టరీ రీసెట్)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"సమాచారంతో కూడిన వినోదం సిస్టమ్ నుండి మొత్తం డేటా, ప్రొఫైల్‌లను ఫ్యాక్టరీ రీసెట్ చేస్తుంది"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"వీటితో సహా ఇది మీ వాహన సమాచారంతో కూడిన వినోదం సిస్టమ్ నుండి మొత్తం డేటాను ఫ్యాక్టరీ రీసెట్ చేస్తుంది:\n\n"<li>"మీ Google ఖాతా"</li>\n<li>"సిస్టమ్, యాప్ డేటా, సెట్టింగ్‌లు"</li>\n<li>"డౌన్‌లోడ్ చేసిన యాప్‌లు"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"మీరు ప్రస్తుతం కింది ఖాతాలకు సైన్ ఇన్ చేశారు:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"ఈ వాహనంలో ఇతర ప్రొఫైల్‌లు ఉన్నాయి."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"మొత్తం డేటాను తొలగించండి"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"మొత్తం డేటాను తొలగించాలా?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"ఇది ఈ సమాచారంతో కూడిన వినోదం సిస్టమ్ నుండి మీ మొత్తం వ్యక్తిగత ప్రొఫైల్ డేటాను, ఖాతాలను, అలాగే డౌన్‌లోడ్ చేసిన యాప్‌లను ఫ్యాక్టరీ రీసెట్ చేస్తుంది.\n\nమీరు ఈ చర్యను తిరిగి రద్దు చేయలేరు."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"అన్నింటినీ తొలగించండి"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"తొలగిస్తోంది"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"దయచేసి వేచి ఉండండి..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"తేదీ &amp; సమయం"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"తేదీ, సమయం, సమయ మండలి &amp; ఫార్మాట్‌లను సెట్ చేయండి"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"ఆటోమేటిక్‌గా తేదీ &amp; సమయం"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"నిర్వాహకుడిగా సైన్ ఇన్ చేసారు"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"అన్ని నిర్వాహక అనుమతులు"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"నిర్వాహకుడిగా చేయి"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"వినియోగదారు ఇతర నిర్వాహకులతో సహా వినియోగదారులను తొలగించగలరు మరియు సిస్టమ్‌ని ఫ్యాక్టరీ రీసెట్ చేయగలరు."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"ఈ ప్రొఫైల్ ఇతర అడ్మిన్‌లతో సహా ప్రొఫైల్‌లను తొలగించగలదు, అలాగే సిస్టమ్‌ను ఫ్యాక్టరీ రీసెట్ చేయగలదు."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"ఈ చర్యను రద్దు చేయలేరు."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"అవును, నిర్వాహకుడిగా చేయి"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"కొత్త వినియోగదారులను సృష్టించడం"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"కొత్త ప్రొఫైల్‌లను క్రియేట్ చేయండి"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ఫోన్ కాల్‌లు చేయడం"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"కారు మొబైల్ డేటాతో సందేశం పంపడం"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"కొత్త యాప్‌లను ఇన్‌స్టాల్ చేయడం"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"యాప్‌లను అన్‌ఇన్‌స్టాల్ చేయడం"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"వినియోగదారుని జోడించు"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"కొత్త వినియోగదారు"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"కొత్త వినియోగదారుని జోడించాలా?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"మీరు కొత్త వినియోగదారును జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ఏ వినియోగదారు అయినా మిగతా అందరు వినియోగదారుల కోసం యాప్‌లను అప్‌డేట్ చేయవచ్చు."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"వినియోగదారు పరిమితిని చేరుకున్నారు"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">మీరు <xliff:g id="COUNT">%d</xliff:g>వినియోగదారుల వరకు సృష్టించవచ్చు.</item>
-      <item quantity="one">ఒక్క వినియోగదారుని మాత్రమే సృష్టించవచ్చు.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"ప్రొఫైల్‌ను జోడించండి"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"కొత్త ప్రొఫైల్"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"కొత్త ప్రొఫైల్‌ను జోడించాలా?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"మీరు కొత్త ప్రొఫైల్‌ను జోడించినప్పుడు, ఆ వ్యక్తి తన స్పేస్‌ను సెటప్ చేసుకోవాలి."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"ఏ ప్రొఫైల్ అయినా మిగతా అన్ని ప్రొఫైల్‌ల కోసం యాప్‌లను అప్‌డేట్ చేయగలదు."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"ప్రొఫైల్ పరిమితిని చేరుకున్నారు"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">మీరు <xliff:g id="COUNT">%d</xliff:g> ప్రొఫైల్‌ల వరకు క్రియేట్ చేయగలరు.</item>
+      <item quantity="one">ఒక ప్రొఫైల్‌ను మాత్రమే క్రియేట్ చేయగలరు.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"కొత్త వినియోగదారుని సృష్టించడంలో విఫలమైంది"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ఈ వినియోగదారును తొలగించాలా?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"వినియెగదారును తొలగించడం విఫలమైంది."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"కొత్త ప్రొఫైల్ క్రియేట్ చేయడం విఫలమైంది"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ఈ ప్రొఫైల్‌ను తొలగించాలా?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ఈ ప్రొఫైల్‌లోని మొత్తం యాప్‌లు, డేటా తొలగించబడతాయి"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ప్రొఫైల్‌ను తొలగించడం విఫలమైంది."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"మీరు ప్రొఫైల్‌లను మార్చినప్పుడు లేదా వాహనాన్ని రీస్టార్ట్ చేసినప్పుడు ఈ ప్రొఫైల్ తొలగించబడుతుంది."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"విస్మరించు"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"మళ్లీ ప్రయత్నించు"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"చివరి వినియోగదారుని తొలగించాలా?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ఈ కార్ యొక్క ఏకైక వినియోగదారుని తొలగించిన తర్వాత, కొత్త నిర్వాహక వినియోగదారు సృష్టించబడతారు."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ఈ వినియోగదారుకు అనుబంధంగా ఉన్న మొత్తం డేటా, సెట్టింగ్‌లు మరియు యాప్‌లు తొలగించబడతాయి. మీరు సిస్టమ్‌ను మళ్లీ సెటప్ చేయవలసి ఉంటుంది."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"చివరి యూజర్ ప్రొఫైల్‌ను తొలగించాలా?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"మీరు ఈ వాహనం కోసం మిగిలి ఉన్న ఏకైక ప్రొఫైల్‌ను తొలగిస్తే, ఈ ప్రొఫైల్‌తో అనుబంధించబడి ఉన్న మొత్తం డేటా, సెట్టింగ్‌లు, యాప్‌లు ఫ్యాక్టరీ రీసెట్ చేయబడతాయి."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"రీసెట్ చేసిన తర్వాత, మీరు కొత్త ప్రొఫైల్‌ను సెటప్ చేయవచ్చు."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"కొత్త నిర్వాహకుడిని ఎంచుకోండి"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"మీకు కనీసం ఒక నిర్వాహకుడు అవసరం. ఈ నిర్వహకుడిని తొలగించడానికి, ముందుగా ఒక ప్రత్యామ్నాయాన్ని ఎంచుకోండి."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"నిర్వాహకుడిని ఎంచుకోండి"</string>
@@ -488,12 +520,13 @@
     <string name="current_user_name" msgid="3813671533249316823">"మీరు (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"పేరు"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"సెటప్ చేయలేదు"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"వినియోగదారు పేరుని సవరించండి"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"ప్రొఫైల్ పేరును ఎడిట్ చేయండి"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ఫీల్డ్ ఖాళీగా ఉండరాదు."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"నమోదు చేసిన వినియోగదారు పేరు చెల్లదు."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ఎంటర్ చేసిన ప్రొఫైల్ పేరు చెల్లదు."</string>
     <string name="users_list_title" msgid="770764290290240909">"వినియోగదారులు"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"ప్రొఫైల్‌లు"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s కి అనుమతులు మంజూరు చేయబడ్డాయి"</string>
-    <string name="storage_settings_title" msgid="8957054192781341797">"స్టోరేజ్"</string>
+    <string name="storage_settings_title" msgid="8957054192781341797">"నిల్వ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"సంగీతం &amp; ఆడియో"</string>
     <string name="storage_other_apps" msgid="945509804756782640">"ఇతర యాప్‌లు"</string>
     <string name="storage_files" msgid="6382081694781340364">"ఫైల్స్"</string>
@@ -501,8 +534,8 @@
     <string name="storage_detail_dialog_system" msgid="796365720531622361">"సిస్టమ్‌లో Android వెర్షన్ <xliff:g id="VERSION">%s</xliff:g>ను అమలు చేయడానికి అవసరమైన ఫైల్‌లు ఉంటాయి"</string>
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ఆడియో ఫైల్‌లు"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"గణిస్తోంది…"</string>
-    <string name="storage_application_size_label" msgid="1146156683170661354">"యాప్ సైజ్"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"వినియోగదారు డేటా"</string>
+    <string name="storage_application_size_label" msgid="1146156683170661354">"యాప్ పరిమాణం"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ప్రొఫైల్ డేటా"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"కాష్"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"మొత్తం"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"నిల్వను తీసివేయి"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"సమకాలీకరణను రద్దు చేయి"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"సమకాలీకరణ ప్రస్తుతం సమస్యలను ఎదుర్కొంటోంది. ఇది త్వరలో అందుబాటులోకి వస్తుంది."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"గోప్యత"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"వెహికల్ డేటా"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"మీ లొకేషన్‌కు యాప్ యాక్సెస్‌ను కంట్రోల్ చేయండి"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"మైక్రోఫోన్"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"మైక్రోఫోన్‌కు యాప్ యాక్సెస్‌ను కంట్రోల్ చేయండి"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"వెహికల్ డేటా"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"ఈ వాహనంలో సేవ్ చేసిన యాక్టివిటీలు, సమాచారాన్ని మేనేజ్ చేయండి"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"మీ ప్రొఫైల్‌ను తొలగించండి"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"సమాచారంతో కూడిన వినోదం సిస్టమ్ నుండి మీ ప్రొఫైల్, ఖాతాలను ఫ్యాక్టరీ రీసెట్ చేయండి"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"ఈ చర్య మీ ప్రొఫైల్ కోసం అందుబాటులో లేదు"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"భద్రత"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"స్క్రీన్ లాక్"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ఏదీ కాదు"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"సరే"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"స్క్రీన్ లాక్‌ను తీసివేయాలా?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"ఎవరైనా మీ ఖాతాను యాక్సెస్ చేయడానికి ఇది అనుమతిస్తుంది"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"ప్రొఫైల్ లాక్"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ఆటోమేటిక్‌గా అన్‌లాక్ చేయడాన్ని సెటప్ చేయండి"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"మీ పిన్‌ని నమోదు చేయండి"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"మీ పాస్‌వర్డ్‌ను నమోదు చేయండి"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"భద్రత కోసం, పిన్‌ను సెట్ చేయండి"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"తప్పనిసరిగా <xliff:g id="NUMBER">%d</xliff:g> కంటే తక్కువ అంకెలు ఉండాలి"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"తప్పనిసరిగా 0-9 అంకెలను మాత్రమే కలిగి ఉండాలి."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ఇటీవలి పిన్‌ని ఉపయోగించడానికి పరికర నిర్వాహకులు అనుమతించరు"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"సాధారణ పిన్‌లను మా IT నిర్వాహకులు బ్లాక్ చేసారు. వేరే పిన్‌ని ప్రయత్నించండి."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"సాధారణ పిన్‌లను మా IT నిర్వాహకులు బ్లాక్ చేసారు. వేరే పిన్‌ని ప్రయత్నించండి."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ఇందులో చెల్లని అక్షరం ఉండకూడదు."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"పాస్‌వర్డ్ చెల్లదు, తప్పనిసరిగా కనీసం 4 అక్షరాలు ఉండాలి."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ఇటీవలి పాస్‌వర్డ్‌ను ఉపయోగించడానికి పరికర నిర్వాహకులు అనుమతించరు"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"పాస్‌వర్డ్‌ని సేవ్ చేయడంలో ఎర్రర్"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"సాధారణ పాస్‌వర్డ్‌లను మా IT నిర్వాహకులు బ్లాక్ చేసారు. వేరే పాస్‌వర్డ్‌ని ప్రయత్నించండి."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"సాధారణ పాస్‌వర్డ్‌లను మా IT నిర్వాహకులు బ్లాక్ చేసారు. వేరే పాస్‌వర్డ్‌ని ప్రయత్నించండి."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"అంకెలను ఆరోహణ, అవరోహణ క్రమంలో లేదా ఒకే అంకెను వరుసగా పునరావృతంగా ఉపయోగించకూడదు."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"స్క్రీన్ లాక్ ఎంపికలు"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> రోజుల క్రితం"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter కీ"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"డెమో నుండి నిష్క్రమించండి"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"డెమో మోడ్ నుండి నిష్క్రమించండి"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ఫ్యాక్టరీ డేటా డెమో ఖాతాను తొలగించి, సిస్టమ్‌ను రీసెట్ చేస్తుంది. మొత్తం వినియోగదారు డేటాను కోల్పోతారు."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"ఇది డెమో ఖాతాను తొలగించి, సిస్టమ్‌ను ఫ్యాక్టరీ డేటా రీసెట్ చేస్తుంది. మొత్తం ప్రొఫైల్ డేటాను కోల్పోతారు."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"డెమో నుండి నిష్క్రమించండి"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"విస్మరించు"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"డ్రైవింగ్ చేస్తున్నప్పుడు ఈ ఫీచర్ అందుబాటులో ఉండదు"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"డ్రైవింగ్ చేస్తున్నప్పుడు, యూజర్‌ను జోడించడం సాధ్యం కాదు"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"డ్రైవింగ్ చేస్తున్నప్పుడు, ప్రొఫైల్‌ను జోడించడం సాధ్యం కాదు"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Search"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant &amp; వాయిస్"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"అసిస్టెంట్ యాప్"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"స్క్రీన్‌పై ఉన్న టెక్స్ట్‌ను ఉపయోగించండి"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"స్క్రీన్ కంటెంట్‌లను యాక్సెస్ చేయడానికి అసిస్టెంట్‌ను అనుమతించండి"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"స్క్రీన్‌షాట్‌ను ఉపయోగించండి"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"స్క్రీన్ ఇమేజ్‌ను యాక్సెస్ చేయడానికి అసిస్టెంట్‌ను అనుమతించండి"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ఇటీవల పంపినవి"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"అన్ని యాప్‌లు"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"ప్రొఫైల్‌లు &amp; ఖాతాలు"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"ఇతర ప్రొఫైల్‌లను మేనేజ్ చేయండి"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"ఒక ప్రొఫైల్‌ను జోడించు"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ఈ ప్రొఫైల్‌ను తొలగించు"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"ప్రొఫైల్‌ను జోడించండి"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 6a74da5..97d7e59 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"การแสดงผล"</string>
     <string name="brightness" msgid="2919605130898772866">"ระดับความสว่าง"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"ปรับความสว่างอัตโนมัติ"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"ปรับระดับความสว่างให้เหมาะกับแสง"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"ปรับความสว่างของหน้าจอตามสภาพแวดล้อม"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"\"แสงตอนกลางคืน\" เปิดอยู่"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"หน้าจอ หน้าจอสัมผัส"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"หน้าจอสลัว หน้าจอสัมผัส แบตเตอรี่"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"หน้าจอสลัว หน้าจอสัมผัส แบตเตอรี่"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"หรี่หน้าจอ กลางคืน แต้มสี"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"โหมดกลางคืน"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"เครือข่ายและอินเทอร์เน็ต"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"เครือข่ายมือถือ"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ตั้งค่าเตือนปริมาณการใช้อินเทอร์เน็ต"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ตั้งค่าขีดจำกัดปริมาณการใช้อินเทอร์เน็ต"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"ตั้งค่า"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"เครือข่าย OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"ใช้ไป %1$d MB ตั้งแต่วันที่ %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"เข้าร่วมเครือข่ายอื่น"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"การตั้งค่าเครือข่าย"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"กำลังเปิด Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"กำลังปิด Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ไม่สามารถเชื่อมต่อกับเครือข่าย"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"เพิ่มเครือข่าย"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"เชื่อมต่อ"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"กำลังเชื่อมต่อ…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"เครือข่ายไม่อยู่ในพื้นที่ให้บริการ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"รหัสผ่าน"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"แสดงรหัสผ่าน"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"โปรดป้อนชื่อเครือข่าย"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"แอปต้องการทำให้อุปกรณ์บลูทูธอื่นมองเห็นระบบเครื่องเสียงของคุณได้เป็นเวลา <xliff:g id="TIMEOUT">%1$d</xliff:g> วินาที"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ต้องการเปิดบลูทูธและทำให้อุปกรณ์อื่นมองเห็นระบบเครื่องเสียงของคุณได้เป็นเวลา <xliff:g id="TIMEOUT">%2$d</xliff:g> วินาที"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"แอปต้องการเปิดบลูทูธและทำให้อุปกรณ์อื่นมองเห็นระบบเครื่องเสียงของคุณได้เป็นเวลา <xliff:g id="TIMEOUT">%1$d</xliff:g> วินาที"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"แสดงเป็น %1$s ให้อุปกรณ์อื่นๆ เห็น"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"อุปกรณ์ของฉัน"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"อุปกรณ์ที่เคยเชื่อมต่อ"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"เชื่อมต่อ %1$s แล้ว"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"ยกเลิกการเชื่อมต่อ %1$s แล้ว"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"คำขอจับคู่อุปกรณ์บลูทูธ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"จับคู่อุปกรณ์และเชื่อมต่อ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"รหัสการจับคู่บลูทูธ"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"เสียงการแจ้งเตือนเริ่มต้น"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"เสียงปลุกเริ่มต้น"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"บันทึก"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"เสียงการแจ้งเตือน"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"เสียงเรียกเข้า การแจ้งเตือน การปลุก"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"ความสว่าง"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"ปรับหน้าจอสำหรับสภาวะแสงน้อย"</string>
     <string name="units_settings" msgid="402325305096925886">"หน่วย"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"ความเร็ว"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"ระยะทาง"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"แสดงแอปทั้งหมด"</string>
     <string name="default_applications" msgid="1558183275638697087">"แอปเริ่มต้น"</string>
     <string name="app_permissions" msgid="32799922508313948">"สิทธิ์ของแอป"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"แอปต่างๆ ที่ใช้<xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"ควมคุมสิทธิ์ของแอปในการเข้าถึงข้อมูล"</string>
     <string name="applications_settings" msgid="794261395191035632">"ข้อมูลแอป"</string>
     <string name="force_stop" msgid="2153183697014720520">"บังคับให้หยุด"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"บังคับให้หยุดไหม"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"ถอนการติดตั้ง"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"หากคุณปิดใช้แอปนี้ Android และแอปอื่นๆ อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ปิดใช้แอป"</string>
-    <string name="not_installed" msgid="4218816013370552746">"ไม่ได้ติดตั้งสำหรับผู้ใช้นี้"</string>
+    <string name="not_installed" msgid="4163454337822508007">"ไม่ได้ติดตั้งสำหรับโปรไฟล์นี้"</string>
     <string name="permissions_label" msgid="2701446753515612685">"สิทธิ์"</string>
     <string name="notifications_label" msgid="6586089149665170731">"การแจ้งเตือน"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"พื้นที่เก็บข้อมูลและแคช"</string>
     <string name="application_version_label" msgid="8556889839783311649">"เวอร์ชัน: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ไม่มีการมอบสิทธิ์"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ไม่มีการขอสิทธิ์"</string>
+    <string name="unused_apps" msgid="648471933781010395">"แอปที่ไม่ได้ใช้"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other">แอปที่ไม่ได้ใช้ <xliff:g id="COUNT_1">%d</xliff:g> รายการ</item>
+      <item quantity="one">แอปที่ไม่ได้ใช้ <xliff:g id="COUNT_0">%d</xliff:g> รายการ</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"นำสิทธิ์ออกและเพิ่มพื้นที่ว่าง"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s ในที่จัดเก็บข้อมูลภายใน"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ปริมาณการใช้อินเทอร์เน็ต"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ปริมาณการใช้เน็ตของแอป"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ถามทุกครั้ง"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"อย่าเปิดในแอปนี้"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"ลิงก์ที่รองรับ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"แอป"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"เปิดล่าสุด"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"ดูทั้ง %1$d แอป"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"เครื่องมือจัดการสิทธิ์"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"ควมคุมสิทธิ์ของแอปในการเข้าถึงข้อมูล"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"สำหรับ Assistant และอื่นๆ"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"เข้าถึงระบบและการตั้งค่าอื่นๆ"</string>
     <string name="special_access" msgid="5730278220917123811">"สิทธิ์เข้าถึงพิเศษของแอป"</string>
     <string name="show_system" msgid="4401355756969485287">"แสดงระบบ"</string>
     <string name="hide_system" msgid="8845453295584638040">"ซ่อนระบบ"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"ซ่อนแอปของระบบ"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"แก้ไขการตั้งค่าระบบ"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"สิทธิ์นี้อนุญาตให้แอปแก้ไขการตั้งค่าระบบได้"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"การเข้าถึงการแจ้งเตือน"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ไม่มีคำขอตำแหน่งล่าสุด"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"สิทธิ์ระดับแอป"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"บริการตำแหน่ง"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"ใช้ตำแหน่ง"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"ระบบ"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"การอัปเดตระบบ"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"ขั้นสูง"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"เกี่ยวกับ ข้อมูลกฎหมาย รีเซ็ต และอื่นๆ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"เวอร์ชันของ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"ระดับแพตช์ความปลอดภัยของ Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"รุ่นและฮาร์ดแวร์"</string>
@@ -399,7 +429,7 @@
     </plurals>
     <string name="show_dev_on" msgid="5339077400040834808">"ตอนนี้คุณเป็นนักพัฒนาซอฟต์แวร์แล้ว!"</string>
     <string name="show_dev_already" msgid="1678087328973865736">"ไม่จำเป็น คุณเป็นนักพัฒนาซอฟต์แวร์อยู่แล้ว"</string>
-    <string name="developer_options_settings" msgid="1530739225109118480">"ตัวเลือกสำหรับนักพัฒนาแอป"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์"</string>
     <string name="reset_options_title" msgid="4388902952861833420">"ตัวเลือกการรีเซ็ต"</string>
     <string name="reset_options_summary" msgid="5508201367420359293">"การรีเซ็ตเครือข่าย แอป หรืออุปกรณ์"</string>
     <string name="reset_network_title" msgid="1284233059990797263">"รีเซ็ตเครือข่าย"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"คำสั่งนี้จะรีเซ็ตค่ากำหนดทั้งหมดของ\n\n"<li>"แอปที่ปิดใช้"</li>\n<li>"การแจ้งเตือนของแอปที่ปิดใช้"</li>\n<li>"แอปเริ่มต้นที่จะใช้งาน"</li>\n<li>"ข้อจำกัดของอินเทอร์เน็ตที่ใช้งานอยู่เบื้องหลังเกี่ยวกับการใช้แอป"</li>\n<li>"ข้อจำกัดสิทธิ์ใดๆ"</li>\n\n"ข้อมูลแอปทั้งหมดของคุณจะยังคงอยู่เหมือนเดิม"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"รีเซ็ตแอป"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"รีเซ็ตค่ากำหนดของแอปแล้ว"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"ลบข้อมูลทั้งหมด (รีเซ็ตเป็นค่าเริ่มต้น)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"การดำเนินการนี้จะลบข้อมูลทั้งหมดออกจากระบบเครื่องเสียงในยานพาหนะ โดยรวมถึงสิ่งต่อไปนี้\n\n"<li>"บัญชี Google ของคุณ"</li>\n<li>"ข้อมูลและการตั้งค่าของระบบและแอป"</li>\n<li>"แอปที่ดาวน์โหลด"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"คุณลงชื่อเข้าใช้บัญชีต่อไปนี้อยู่ในขณะนี้"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"มีผู้ใช้รายอื่นอยู่บนยานพาหนะคันนี้"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"รีเซ็ตยานพาหนะ"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"รีเซ็ตไหม"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ลบข้อมูลส่วนบุคคลและแอปที่ดาวน์โหลดทั้งหมดไหม คุณจะเลิกทำการดำเนินการนี้ไม่ได้"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ลบทุกอย่าง"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"กำลังลบ"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"โปรดรอสักครู่..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"ลบข้อมูลทั้งหมด (รีเซ็ตเป็นค่าเริ่มต้น)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"ลบข้อมูลและโปรไฟล์ทั้งหมดออกจากระบบสาระบันเทิง"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"การดำเนินการนี้จะลบข้อมูลทั้งหมดออกจากระบบสาระบันเทิงของรถยนต์ ซึ่งได้แก่\n\n"<li>"บัญชี Google"</li>\n<li>"ข้อมูลและการตั้งค่าของระบบและแอป"</li>\n<li>"แอปที่ดาวน์โหลดไว้"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"คุณลงชื่อเข้าใช้บัญชีต่อไปนี้อยู่ในขณะนี้:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"มีโปรไฟล์อื่นอยู่ในรถยนต์คันนี้"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"ลบข้อมูลทั้งหมด"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"ลบข้อมูลทั้งหมดใช่ไหม"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"การดำเนินการนี้จะลบข้อมูลโปรไฟล์ส่วนตัว บัญชี และแอปที่ดาวน์โหลดไว้ทั้งหมดในระบบสาระบันเทิงนี้\n\nคุณจะยกเลิกการดำเนินการนี้ไม่ได้"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ลบทุกอย่าง"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"กำลังลบ"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"โปรดรอสักครู่..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"วันที่และเวลา"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ตั้งวันที่ เวลา เขตเวลาและรูปแบบ"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"วันที่และเวลาอัตโนมัติ"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ลงชื่อเข้าใช้เป็นผู้ดูแลระบบ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"สิทธิ์ทั้งหมดของผู้ดูแลระบบ"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"เปลี่ยนสถานะเป็นผู้ดูแลระบบ"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ผู้ใช้จะลบผู้ใช้อื่นได้ รวมถึงผู้ดูแลระบบอื่น และรีเซ็ตระบบเป็นค่าเริ่มต้นได้"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"โปรไฟล์ดังกล่าวจะสามารถลบโปรไฟล์อื่นและผู้ดูแลระบบคนอื่น รวมถึงรีเซ็ตระบบเป็นค่าเริ่มต้นได้"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"การดำเนินการนี้ไม่สามารถย้อนกลับได้"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"ใช่ เปลี่ยนสถานะเป็นผู้ดูแลระบบ"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"สร้างผู้ใช้ใหม่"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"สร้างโปรไฟล์ใหม่"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"โทรออก"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"การรับส่งข้อความผ่านเน็ตมือถือของรถ"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"ติดตั้งแอปใหม่"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ถอนการติดตั้งแอป"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"เพิ่มผู้ใช้"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ผู้ใช้ใหม่"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"เพิ่มผู้ใช้ใหม่ไหม"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ผู้ใช้ทุกคนจะอัปเดตแอปให้แก่ผู้ใช้คนอื่นๆ ได้"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"ถึงขีดจำกัดผู้ใช้แล้ว"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">คุณสร้างผู้ใช้ได้สูงสุด <xliff:g id="COUNT">%d</xliff:g> คน</item>
-      <item quantity="one">สร้างผู้ใช้ได้เพียง 1 คนเท่านั้น</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"เพิ่มโปรไฟล์"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"โปรไฟล์ใหม่"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"เพิ่มโปรไฟล์ใหม่ใช่ไหม"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"เมื่อคุณเพิ่มโปรไฟล์ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"แต่ละโปรไฟล์อัปเดตแอปให้กับโปรไฟล์อื่นๆ ได้"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"มีโปรไฟล์ถึงขีดจำกัดแล้ว"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">คุณสร้างโปรไฟล์ได้สูงสุด <xliff:g id="COUNT">%d</xliff:g> รายการ</item>
+      <item quantity="one">สร้างได้เพียงโปรไฟล์เดียวเท่านั้น</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"สร้างผู้ใช้ใหม่ไม่ได้"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ลบผู้ใช้นี้ใช่ไหม"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"แอปและข้อมูลทั้งหมดจะถูกลบ"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"ลบผู้ใช้ไม่สำเร็จ"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"สร้างโปรไฟล์ใหม่ไม่สำเร็จ"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"ลบโปรไฟล์นี้ใช่ไหม"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"ระบบจะลบแอปและข้อมูลทั้งหมดในโปรไฟล์นี้"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"ลบโปรไฟล์ไม่สำเร็จ"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"โปรไฟล์นี้จะถูกลบเมื่อคุณสลับโปรไฟล์หรือสตาร์ทรถอีกครั้ง"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"ปิด"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"ลองอีกครั้ง"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ลบผู้ใช้สุดท้ายไหม"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"หลังจากลบผู้ใช้ที่เหลืออยู่เพียงรายเดียวของรถคันนี้ ระบบจะสร้างผู้ดูแลระบบใหม่ขึ้น"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ระบบจะลบข้อมูล การตั้งค่า และแอปทั้งหมดที่เชื่อมโยงกับผู้ใช้นี้ คุณจะต้องตั้งค่าระบบอีกครั้ง"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"ลบโปรไฟล์สุดท้ายที่เหลืออยู่ใช่ไหม"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"หากคุณลบโปรไฟล์เดียวที่เหลืออยู่ในรถยนต์คันนี้ ระบบจะลบข้อมูล การตั้งค่า และแอปทั้งหมดที่เชื่อมโยงกับโปรไฟล์นี้"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"คุณจะตั้งค่าโปรไฟล์ใหม่ได้หลังจากรีเซ็ต"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"เลือกผู้ดูแลระบบใหม่"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"คุณต้องมีผู้ดูแลระบบอย่างน้อย 1 ราย หากต้องการลบผู้ดูแลระบบรายนี้ ก่อนอื่นให้เลือกคนที่จะมาแทน"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"เลือกผู้ดูแลระบบ"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"คุณ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ชื่อ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ไม่ได้ตั้งค่า"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"แก้ไขชื่อผู้ใช้"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"แก้ไขชื่อโปรไฟล์"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"ต้องกรอกข้อมูลในช่อง"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"ชื่อผู้ใช้ที่ป้อนไม่ถูกต้อง"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"ชื่อโปรไฟล์ที่ป้อนไม่ถูกต้อง"</string>
     <string name="users_list_title" msgid="770764290290240909">"ผู้ใช้"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"โปรไฟล์"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"มอบสิทธิ์ให้กับ %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"พื้นที่เก็บข้อมูล"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"เพลงและเสียง"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"ไฟล์เสียง"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"กำลังคำนวณ…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ขนาดแอป"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"ข้อมูลผู้ใช้"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"ข้อมูลโปรไฟล์"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"แคช"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"รวม"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"ล้างพื้นที่เก็บข้อมูล"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ยกเลิกการซิงค์"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"ขณะนี้ พบปัญหาในการซิงค์ อีกสักครู่จึงจะกลับมาดำเนินการต่อ"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"ความเป็นส่วนตัว"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"ข้อมูลรถยนต์"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"ควมคุมสิทธิ์ของแอปในการเข้าถึงตำแหน่ง"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"ไมโครโฟน"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"ควมคุมสิทธิ์ของแอปในการเข้าถึงไมโครโฟน"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"ข้อมูลรถยนต์"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"จัดการกิจกรรมและข้อมูลที่บันทึกไว้ในรถยนต์คันนี้"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"ลบโปรไฟล์"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"ลบโปรไฟล์และบัญชีออกจากระบบสาระบันเทิง"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"การทำงานนี้ใช้ไม่ได้กับโปรไฟล์ของคุณ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ความปลอดภัย"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ล็อกหน้าจอ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ไม่มี"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"ตกลง"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"นำการล็อกหน้าจอออกไหม"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"การดำเนินการนี้จะทำให้ทุกคนเข้าถึงบัญชีของคุณได้"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"การล็อกโปรไฟล์"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"ตั้งค่าการปลดล็อกอัตโนมัติ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ป้อน PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ป้อนรหัสผ่าน"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ตั้ง PIN เพื่อความปลอดภัย"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ต้องมีตัวเลขไม่เกิน <xliff:g id="NUMBER">%d</xliff:g> ตัว"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"ต้องมีตัวเลข 0-9 เท่านั้น"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ผู้ดูแลระบบอุปกรณ์ไม่อนุญาตให้ใช้ PIN ที่เพิ่งใช้ไป"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ผู้ดูแลระบบไอทีบล็อก PIN ที่ไม่รัดกุม ลอง PIN อื่น"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"ผู้ดูแลระบบไอทีบล็อก PIN ที่ไม่รัดกุม ลอง PIN อื่น"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ต้องใช้อักขระที่ใช้ได้ทั้งหมด"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"รหัสผ่านไม่ถูกต้อง ต้องมีอักขระอย่างน้อย 4 ตัว"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ผู้ดูแลระบบอุปกรณ์ไม่อนุญาตให้ใช้รหัสผ่านที่เพิ่งใช้ไป"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"เกิดข้อผิดพลาดในการบันทึกรหัสผ่าน"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ผู้ดูแลระบบไอทีบล็อกรหัสผ่านที่ไม่รัดกุม ลองรหัสผ่านอื่น"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"ผู้ดูแลระบบไอทีบล็อกรหัสผ่านที่ไม่รัดกุม ลองรหัสผ่านอื่น"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ไม่อนุญาตให้เรียงจากน้อยไปมาก จากมากไปน้อย หรือเรียงลำดับตัวเลขที่ซ้ำกัน"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ตัวเลือกการล็อกหน้าจอ"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> วันที่ผ่านมา"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"ปุ่ม Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ออกจากการสาธิต"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ออกจากโหมดสาธิต"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"การดำเนินการนี้จะลบบัญชีสาธิตและรีเซ็ตข้อมูลในระบบเป็นค่าเริ่มต้น ข้อมูลผู้ใช้ทั้งหมดจะสูญหาย"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"การดำเนินการนี้จะลบบัญชีสาธิตและรีเซ็ตข้อมูลในระบบเป็นค่าเริ่มต้น ข้อมูลโปรไฟล์ทั้งหมดจะสูญหาย"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ออกจากการสาธิต"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ปิด"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ฟีเจอร์ไม่พร้อมใช้งานขณะขับรถ"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"เพิ่มผู้ใช้ขณะขับรถไม่ได้"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"เพิ่มโปรไฟล์ขณะขับรถไม่ได้"</string>
     <string name="default_search_query" msgid="3137420627428857068">"ค้นหา"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant และเสียง"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"แอป Assistant"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"ใช้ข้อความจากหน้าจอ"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"อนุญาตให้ Assistant เข้าถึงเนื้อหาในหน้าจอ"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"ใช้ภาพหน้าจอ"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"อนุญาตให้ Assistant เข้าถึงรูปภาพในหน้าจอ"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"ส่งล่าสุด"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"แอปทั้งหมด"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"โปรไฟล์และบัญชี"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"จัดการโปรไฟล์อื่น"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"เพิ่มโปรไฟล์"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"ลบโปรไฟล์นี้"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"เพิ่มโปรไฟล์"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a4035c8..d7823d6 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Antas ng brightness"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"I-optimize ang antas ng brightness para sa available na ilaw"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Iangkop ang liwanag ng screen sa kapaligiran"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Naka-on ang Night Light"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"i-dim ang screen, touchscreen, baterya"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"i-dim ang screen, touchscreen, baterya"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"i-dim ang screen, gabi, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Network at internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Itakda ang babala sa paggamit ng data"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Itakda ang limitasyon sa paggamit ng data"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Itakda"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM network"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB ang nagamit %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Sumali sa ibang network"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Mga kagustuhan sa network"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ino-on ang Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Ino-off ang Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Hind nakakonekta sa network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Magdagdag ng network"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Kumonekta"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Kumokonekta…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Walang signal ang network"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Ipakita ang password"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Maglagay ng pangalan ng network"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"May app na gustong gawing nakikita ng iba pang Bluetooth device ang iyong headunit sa loob ng <xliff:g id="TIMEOUT">%1$d</xliff:g> (na) segundo."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Gusto ng <xliff:g id="APP_NAME">%1$s</xliff:g> na i-on ang Bluetooth at gawing nakikita ng iba pang device ang iyong headunit sa loob ng <xliff:g id="TIMEOUT">%2$d</xliff:g> (na) segundo."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"May app na gustong mag-on sa Bluetooth at gawing nakikita ng iba pang device ang iyong headunit sa loob ng <xliff:g id="TIMEOUT">%1$d</xliff:g> (na) segundo."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Nakikita bilang %1$s sa iba pang device"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Aking mga device"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Dating nakakonekta"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Nakakonekta ang %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Nadiskonekta ang %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Kahilingan sa pagpapares ng Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ipares at kumonekta"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code ng pagpapares ng Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Default na tunog ng notification"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default na tunog ng alarm"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"I-save"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Mga tunog ng alerto"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ringtone, mga notification, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Liwanag"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"I-adjust ang screen para sa mahinang ilaw"</string>
     <string name="units_settings" msgid="402325305096925886">"Mga Unit"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Bilis"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Layo"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Ipakita ang lahat ng app"</string>
     <string name="default_applications" msgid="1558183275638697087">"Mga default na app"</string>
     <string name="app_permissions" msgid="32799922508313948">"Mga pahintulot sa app"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Mga app na gumagamit ng <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kontrolin ang pag-access ng app sa iyong data"</string>
     <string name="applications_settings" msgid="794261395191035632">"Impormasyon ng app"</string>
     <string name="force_stop" msgid="2153183697014720520">"Sapilitang ihinto"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Sapilitang itigil?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"I-uninstall"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Kung idi-disable mo ang app na ito, maaaring hindi na gumana ang Android at iba pang mga app gaya ng inaasahan."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"I-disable ang app"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Hindi naka-install para sa user na ito"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Hindi na-install para sa profile na ito"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Mga Pahintulot"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Mga Notification"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Storage at cache"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Bersyon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Walang ibinigay na pahintulot"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Walang hiniling na pahintulot"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Mga hindi ginagamit na app"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> hindi ginagamit na app</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> na hindi ginagamit na app</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Alisin ang pahintulot, i-clear ang space"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s sa internal storage"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Paggamit ng data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Paggamit ng data ng app"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Itanong palagi"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Huwag buksan sa app na ito"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Mga sinusuportahang link"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Mga App"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Binuksan kamakailan"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Tingnan ang lahat ng %1$d (na) app"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Manager ng pahintulot"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kontrolin ang pag-access ng app sa iyong data"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Para sa Assistant at higit pa"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Para sa system at iba pang setting"</string>
     <string name="special_access" msgid="5730278220917123811">"Espesyal na access ng app"</string>
     <string name="show_system" msgid="4401355756969485287">"Ipakita ang system"</string>
     <string name="hide_system" msgid="8845453295584638040">"Itago ang system"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Itago ang mga app ng system"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Baguhin ang setting ng system"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Nagbibigay-daan ang pahintulot na ito sa isang app na baguhin ang mga setting ng system."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Access sa notification"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Walang kamakailang kahilingan sa lokasyon"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Mga pahintulot sa antas ng app"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Mga Serbisyo ng Lokasyon"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Gumamit ng lokasyon"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Mga pag-update ng system"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Advanced"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Tungkol dito, legal na impormasyon, at higit pa"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Bersyon ng Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Antas ng patch ng seguridad ng Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Modelo at hardware"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Ire-reset nito ang lahat ng kagustuhan para sa:\n\n"<li>"Mga naka-disable na app"</li>\n<li>"Mga naka-disable na notification ng app"</li>\n<li>"Mga default na application para sa mga pagkilos"</li>\n<li>"Mga paghihigpit sa data ng background para sa mga app"</li>\n<li>"Anumang paghihigpit sa pahintulot"</li>\n\n"Hindi ka mawawalan ng anumang data ng app."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"I-reset ang mga app"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Na-reset na ang mga kagustuhan sa app"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Burahin lahat ng data (factory reset)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Buburahin nito ang lahat ng data mula sa head unit ng iyong sasakyan, kasama ang:\n\n"<li>"Iyong Google account"</li>\n<li>"Data ng system at app at mga setting"</li>\n<li>"Mga na-download na app"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Kasalukuyan kang naka-sign in sa mga sumusunod na account:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"May iba pang user sa sasakyang ito."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"I-reset ang sasakyan"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"I-reset?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Burahin ang lahat ng iyong personal na impormasyon at na-download na app? Hindi mo maaaring i-undo ang pagkilos na ito!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Burahin lahat"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Binubura"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Mangyaring maghintay..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Burahin lahat ng data (i-factory reset)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Burahin ang lahat ng data at profile mula sa infotainment system"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Buburahin nito ang lahat ng data mula sa infotainment system ng iyong sasakyan, kasama ang:\n\n"<li>"Iyong Google Account"</li>\n<li>"Data at mga setting ng system at app"</li>\n<li>"Mga na-download na app"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Kasalukuyan kang naka-sign in sa mga sumusunod na account:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"May iba pang profile sa sasakyang ito."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Burahin ang lahat ng data"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Burahin ang lahat ng data?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Buburahin nito ang lahat ng iyong data ng personal na profile, account, at na-download na app sa infotainment system na ito.\n\nHindi mo maa-undo ang pagkilos na ito."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Burahin lahat"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Binubura"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Maghintay..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Petsa at oras"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Itakda ang petsa, oras, time zone, at mga format"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Awtomatikong petsa at oras"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Naka-sign in bilang admin"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Lahat ng pang-admin na pahintulot"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gawing Admin"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Magagawa ng user na mag-delete ng mga user, kabilang ang iba pang Admin, at i-factory reset ang system."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Magagawa ng profile na mag-delete mga profile, kabilang ang iba pang Admin, at i-factory reset ang system."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Hindi mababawi ang pagkilos na ito."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Oo, gawing admin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Gumawa ng mga bagong user"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Gumawa ng mga bagong profile"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Tumawag sa telepono"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging sa mobile data ng kotse"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Mag-install ng mga bagong app"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Mag-uninstall ng mga app"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Magdagdag ng user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Bagong user"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Magdagdag ng bagong user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Maaaring i-update ng sinumang user ang mga app para sa lahat ng iba pang user."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Naabot na ang limitasyon sa user"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Maaari kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> user.</item>
-      <item quantity="other">Maaari kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> na user.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Magdagdag ng profile"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Bagong profile"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Magdagdag ng bagong profile?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Kapag nagdagdag ka ng bagong profile, kailangang i-set up ng taong iyon ang kanyang espasyo."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Puwedeng i-update ng alinmang profile ang mga app para sa lahat ng iba pang profile."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Naabot na ang limitasyon ng profile"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Puwede kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> profile.</item>
+      <item quantity="other">Puwede kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> na profile.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Hindi nakagawa ng bagong user"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"I-delete ang user na ito?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Made-delete ang lahat ng app at data."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Hindi na-delete ang user."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Hindi nakagawa ng bagong profile"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"I-delete ang profile na ito?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Made-delete ang lahat ng app at data para sa profile na ito"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Hindi na-delete ang profile."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Ide-delete ang profile na ito kapag nagpalit ka ng profile o ni-restart mo ang sasakyan."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"I-dismiss"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Subukang muli"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"I-delete ang huling user?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pagkatapos i-delete ang nag-iisang natitirang user para sa kotseng ito, may gagawing bagong admin user."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Made-delete ang lahat ng data, setting, at app na nauugnay sa user na ito. Kakailanganin mong i-set up muli ang system."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"I-delete ang huling natitirang profile?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Kung ide-delete mo ang huling natitirang profile para sa sasakyang ito, mabubura ang lahat ng data, setting, at app na nauugnay sa profile na ito."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Pagkatapos ng pag-reset, makakapag-set up ka ng bagong profile."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Pumili ng bagong admin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Kailangan mo ng kahit isang admin lang. Para i-delete ang isang ito, pumili muna ng kapalit."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Pumili ng admin"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ikaw (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Pangalan"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Hindi naka-set up"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"I-edit ang user name"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"I-edit ang pangalan ng profile"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Hindi puwedeng blangko ang field."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Invalid ang inilagay na username."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Invalid ang inilagay na pangalan ng profile."</string>
     <string name="users_list_title" msgid="770764290290240909">"Mga User"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Mga Profile"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Binigyan ng pahintulot si %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Storage"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musika at audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Mga audio file"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Kinakalkula…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Laki ng app"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Data ng user"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Data ng profile"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Cache"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Kabuuan"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"I-clear ang storage"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Kanselahin ang pag-sync"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Kasalukuyang nagkakaproblema sa pag-sync. Babalik ito pagkalipas ng ilang sandali."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Privacy"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Data ng sasakyan"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kontrolin ang access ng app sa iyong lokasyon"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikropono"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kontrolin ang access ng app sa mikropono"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Data ng sasakyan"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Pamahalaan ang mga aktibidad at impormasyong naka-save sa sasakyang ito"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"I-delete ang iyong profile"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Burahin ang iyong profile at mga account mula sa infotainment system"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Hindi available ang pagkilos na ito para sa iyong profile"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Lock ng screen"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Wala"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Alisin ang lock ng screen?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Papayagan nito ang sinuman na i-access ang iyong content"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Lock ng profile"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Mag-set up ng awtomatikong pag-unlock"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Ilagay ang iyong PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Ilagay ang iyong password"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Para sa seguridad, magtakda ng PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Dapat ay wala pang <xliff:g id="NUMBER">%d</xliff:g> (na) digit"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Binubuo lang dapat ito ng mga digit na 0-9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Hindi pinapayagan ng admin ng device ang paggamit ng kamakailang PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Bina-block ng iyong IT admin ang mga pangkaraniwang PIN. Sumubok ng ibang PIN."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Bina-block ng iyong IT admin ang mga pangkaraniwang PIN. Sumubok ng ibang PIN."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Hindi ito maaaring maglaman ng invalid na character."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Invalid ang password, dapat ay may hindi bababa sa 4 na character."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Hindi pinapayagan ng admin ng device ang paggamit ng kamakailang password"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Nagka-error sa pag-save ng password"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Bina-block ng iyong IT admin ang mga pangkaraniwang password. Sumubok ng ibang password."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Bina-block ng iyong IT admin ang mga pangkaraniwang password. Sumubok ng ibang password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hindi pinapayagan ang pataas, pababa, o paulit-ulit na pagkakasunod-sunod ng mga digit."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Mga opsyon sa lock ng screen"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> (na) araw ang nakalipas"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Lumabas sa Demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Lumabas sa demo mode"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ide-delete nito ang demo account at ire-reset ang factory data ng system. Mawawala ang lahat ng data ng user."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Ide-delete nito ang demo account at ire-reset nito ang factory data. Mawawala ang lahat ng data ng profile."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Lumabas sa Demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"I-DISMISS"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Hindi available ang feature habang nagmamaneho"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Hindi makakapagdagdag ng user habang nagmamaneho"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Hindi makakapagdagdag ng profile habang nagmamaneho"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Hanapin"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistant at boses"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistant app"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Gamitin ang text mula sa screen"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Payagan ang assistant na i-access ang mga content ng screen"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Gamitin ang screenshot"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Payagan ang assistant na i-access ang larawan ng screen"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Naipadala kamakailan"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Lahat ng app"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Mga profile at account"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Pamahalaan ang iba pang profile"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Magdagdag ng profile"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"I-delete ang profile na ito"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Magdagdag ng profile"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c66c6c7..43ad495 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekran"</string>
     <string name="brightness" msgid="2919605130898772866">"Parlaklık düzeyi"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Uyarlanabilir parlaklık"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Parlaklık düzeyini mevcut ışık koşullarına göre ayarla"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ekran parlaklığını ortama göre ayarla"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Gece Işığı açık"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, dokunmatik ekran"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ekranı karartma, dokunmatik ekran, pil"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ekranı karartma, dokunmatik ekran, pil"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"loş ekran, gece, tonlama"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gece modu"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Ağ ve internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil ağ"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Veri kullanımı uyarısı ayarla"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Veri kullanımı sınırı ayarla"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Ayarla"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM ağı"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s - %3$s arasında %1$d MB kullanıldı"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Başka ağa katıl"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Ağ tercihleri"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Kablosuz"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Kablosuz açılıyor…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Kablosuz kapatılıyor…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ağa bağlanılamadı"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ağ ekle"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Bağlan"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Bağlanıyor…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Ağ, kapsama alanında değil"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Şifre"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Şifreyi göster"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Lütfen ağ adı girin"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Bir uygulama, ana biriminizi <xliff:g id="TIMEOUT">%1$d</xliff:g> saniye boyunca diğer Bluetooth cihazlarına görünebilir yapmak istiyor."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>, Bluetooth\'u açmak ve ana biriminizi <xliff:g id="TIMEOUT">%2$d</xliff:g> saniye boyunca diğer cihazlara görünebilir yapmak istiyor."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Bir uygulama, Bluetooth\'u açmak ve ana biriminizi <xliff:g id="TIMEOUT">%1$d</xliff:g> saniye boyunca diğer cihazlara görünebilir yapmak istiyor."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Diğer cihazlara %1$s olarak gösteriliyor"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Cihazlarım"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Daha önce bağlanılmış cihazlar"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s bağlandı"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s bağlantısı kesildi"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth eşleme isteği"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Eşleştir ve bağlan"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth eşleme kodu"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Varsayılan bildirim sesi"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Varsayılan alarm sesi"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Kaydet"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Uyarı sesleri"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Zil sesi, bildirimler, alarm"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Parlaklık"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ekranı loş ışığa göre ayarla"</string>
     <string name="units_settings" msgid="402325305096925886">"Birimler"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Hız"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Mesafe"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Tüm uygulamaları göster"</string>
     <string name="default_applications" msgid="1558183275638697087">"Varsayılan uygulamalar"</string>
     <string name="app_permissions" msgid="32799922508313948">"Uygulama izinleri"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"<xliff:g id="APPS">%1$s</xliff:g> kullanan uygulamalar"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Verilere uygulama erişimini denetleyin"</string>
     <string name="applications_settings" msgid="794261395191035632">"Uygulama bilgileri"</string>
     <string name="force_stop" msgid="2153183697014720520">"Zorla durdur"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Zorla durdurulsun mu?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Kaldır"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Bu uygulamayı devre dışı bırakırsanız Android ve diğer uygulamalar artık beklendiği gibi çalışmayabilir."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Uygulamayı devre dışı bırak"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Bu kullanıcı için yüklü değil"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Bu profilde yüklenmemiş"</string>
     <string name="permissions_label" msgid="2701446753515612685">"İzinler"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Bildirimler"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Depolama alanı ve önbellek"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Sürüm: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hiçbir izin verilmedi"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hiçbir izin istenmedi"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Kullanılmayan uygulamalar"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kullanılmayan uygulama</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> kullanılmayan uygulama</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"İzinleri kaldırıp yer aç"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"Dahili depolama alanında %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Veri kullanımı"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uygulama veri kullanımı"</string>
@@ -311,7 +328,7 @@
     <string name="assist_access_context_title" msgid="8034851731390785301">"Ekrandaki metni kullan"</string>
     <string name="assist_access_context_summary" msgid="2374281280599443774">"Asistan uygulamasının, ekran içeriklerine metin biçiminde erişmesine izin ver"</string>
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Ekran görüntüsü kullan"</string>
-    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Asistan uygulamasının ekranın görüntüsüne erişmesine izin ver"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Asistan uygulamasının ekrandaki bir resme erişmesine izin ver"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Ses girişi"</string>
     <string name="autofill_settings_title" msgid="1188754272680049972">"Otomatik doldurma hizmeti"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Yok"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Her zaman sor"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Bu uygulamada açma"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Desteklenen bağlantılar"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Uygulamalar"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Yakın zamanda açılanlar"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"%1$d uygulamanın tümünü görüntüle"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"İzin yöneticisi"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Verilere uygulama erişimini denetleyin"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Asistan ve diğer uygulamalar için"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Sisteme ve diğer ayarlara"</string>
     <string name="special_access" msgid="5730278220917123811">"Özel uygulama erişimi"</string>
     <string name="show_system" msgid="4401355756969485287">"Sisteme ait olanlar"</string>
     <string name="hide_system" msgid="8845453295584638040">"Sisteme ait olanları gizle"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Sistem uygulamalarını gizle"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Sistem ayarlarını değiştir"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Bu izin, bir uygulamaya sistem ayarlarını değiştirme olanağı tanır."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Bildirim erişimi"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Yeni konum isteği yok"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Uygulama düzeyinde izinler"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Konum Hizmetleri"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Konumu kullan"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Sistem güncellemeleri"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Gelişmiş"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Hakkında, yasal bilgiler, sıfırlama ve diğer ayarlar"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android sürümü"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android güvenlik yaması düzeyi"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model ve donanım"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Bu işlem, şunlarla ilgili tüm tercihleri sıfırlayacaktır:\n\n"<li>"Devre dışı bırakılan uygulamalar"</li>\n<li>"Devre dışı bırakılan uygulama bildirimleri"</li>\n<li>"İşlemler için varsayılan uygulamalar"</li>\n<li>"Uygulamalar için arka plan verileri kısıtlamaları"</li>\n<li>"Tüm izin kısıtlamaları"</li>\n\n"Uygulama verileriniz kaybolmayacak."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Uygulamaları sıfırla"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Uygulama tercihleri sıfırlandı"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Tüm verileri sil (fabrika ayarları)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Bu işlem, aracınızın ana biriminden şunlar dahil tüm verileri siler:\n\n"<li>"Google hesabınız"</li>\n<li>"Sistem ve uygulama verileri ile ayarları"</li>\n<li>"İndirilen uygulamalar"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Şu anda oturum açmış olduğunuz hesaplar:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu araçta başka kullanıcılar da var."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Aracı sıfırla"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Sıfırlansın mı?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Tüm kişisel bilgileriniz ve indirdiğiniz uygulamalar silinsin mi? Bu işlem geri alınamaz!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Her şeyi sil"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Siliniyor"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lütfen bekleyin..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Tüm verileri sil (sıfırla)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Bilgi-eğlence sistemindeki tüm verileri ve profilleri sil"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Bu işlem, aracınızın bilgi-eğlence sisteminden şunlar dahil tüm verileri siler:\n\n"<li>"Google hesabınız"</li>\n<li>"Sistem ve uygulama verileri ile ayarları"</li>\n<li>"İndirilen uygulamalar"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Şu anda oturum açmış olduğunuz hesaplar:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Bu araçta başka profiller de var."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Tüm verileri sil"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Tüm veriler silinsin mi?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Bu işlem, bu bilgi-eğlence sistemindeki tüm kişisel profil verilerinizi, hesaplarınızı ve indirdiğiniz uygulamaları siler.\n\nBu işlemi geri alamazsınız."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Her şeyi sil"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Siliniyor"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Lütfen bekleyin..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarih ve saat"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tarihi, saati, saat dilimini ve biçimleri ayarlayın"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Otomatik tarih ve saat"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Yönetici olarak oturum açıldı"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tüm yönetici izinleri"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Yönetici yap"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Kullanıcı, diğer Yöneticiler dahil tüm kullanıcıları silebilecek ve sistemi fabrika ayarlarına sıfırlayabilecektir."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Profil, diğer Yöneticiler dahil tüm profilleri silebilecek ve sistemi fabrika ayarlarına sıfırlayabilecektir."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Bu işlem geri alınamaz."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Evet, yönetici yap"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Yeni kullanıcı oluşturma"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Yeni profil oluşturma"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefon araması yapma"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Araç mobil verisiyle mesajlaşma"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Yeni uygulama yükleme"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uygulamaları kaldırma"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Kullanıcı ekle"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni kullanıcı"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Kullanıcı eklensin mi?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni kullanıcı eklediğinizde, bu kişinin alanını ayarlaması gerekir."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Herhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kullanıcı sınırına ulaşıldı"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">En fazla <xliff:g id="COUNT">%d</xliff:g> kullanıcı oluşturabilirsiniz.</item>
-      <item quantity="one">Yalnızca bir kullanıcı oluşturulabilir.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profil ekle"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Yeni profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Yeni profil eklensin mi?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Yeni kullanıcı eklediğinizde bu kişinin alanını ayarlaması gerekir."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Herhangi bir profil, diğer tüm profiller için uygulamaları güncelleyebilir."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Profil sınırına ulaşıldı"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">En fazla <xliff:g id="COUNT">%d</xliff:g> profil oluşturabilirsiniz.</item>
+      <item quantity="one">Yalnızca tek bir profil oluşturulabilir.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Yeni kullanıcı oluşturulamadı"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Bu kullanıcı silinsin mi?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tüm uygulamalar ve veriler silinecek."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Kullanıcı silinemedi."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Yeni profil oluşturulamadı"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Bu profil silinsin mi?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Bu profildeki tüm uygulamalar ve veriler silinecek"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profil silinemedi."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profil değiştirdiğinizde veya aracı yeniden başlattığınızda bu profil silinecektir."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Kapat"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Tekrar dene"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Kullanıcı silinsin mi?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu aracın kalan son kullanıcısı silindikten sonra yeni bir yönetici kullanıcı oluşturulacak."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu kullanıcıyla ilişkili tüm veriler, ayarlar ve uygulamalar silinecek. Sistemi tekrar ayarlamanız gerekecek."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Kalan son profil silinsin mi?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Bu araç için kalan tek profili silerseniz bu profille ilişkilendirilen tüm veriler, ayarlar ve uygulamalar silinir."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Sıfırlama işleminden sonra yeni profil oluşturabilirsiniz."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Yeni yönetici seçin"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"En az bir yöneticiye ihtiyacınız var. Bu yöneticiyi silmek için önce yedek yönetici seçin."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Yönetici seçin"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ad"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Yapılandırılmamış"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Kullanıcı adını düzenleme"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profil adını düzenle"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Alan boş bırakılamaz."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Girilen kullanıcı adı geçersiz."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Girilen profil adı geçersiz."</string>
     <string name="users_list_title" msgid="770764290290240909">"Kullanıcılar"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profiller"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s için izinler verildi"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Depolama alanı"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Müzik ve ses"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Ses dosyaları"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Hesaplanıyor…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Uygulama boyutu"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Kullanıcı verileri"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profil verisi"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Önbellek"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Toplam"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Depolama alanını temizle"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Senkronizasyonu iptal et"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Şu anda senkronizasyon sorunu yaşanıyor. Senkronizasyon kısa bir süre sonra tekrar devreye girecek."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Gizlilik"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Araç verileri"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Uygulamaların konumunuza erişimini kontrol edin"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Uygulamaların mikrofona erişimini kontrol et"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Araç verileri"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Bu araçta kaydedilen etkinlikleri ve bilgileri yönetin"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Profilimi sil"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Profilinizi ve hesaplarınızı bilgi-eğlence sisteminden silin"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Bu işlem, profilinizde kullanılamaz"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Güvenlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran kilidi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Yok"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"Tamam"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Ekran kilidi kaldırılsın mı?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Bu durumda herkes hesabınıza erişebilecek"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profil kilidi"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Otomatik kilit açmayı ayarla"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN\'inizi girin"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Şifrenizi girin"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Güvenlik için PIN oluşturun"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> basamaktan kısa olmalıdır"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Yalnızca 0-9 arasındaki rakamları içermelidir."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Cihaz yöneticisi yakın zamanda kullanılan bir PIN\'e izin vermiyor"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Yaygın olarak kullanılan PIN\'ler BT yöneticiniz tarafından engellenir. Farklı bir PIN deneyin."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Yaygın olarak kullanılan PIN\'ler BT yöneticiniz tarafından engellenir. Farklı bir PIN deneyin."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Geçersiz karakter kullanılamaz."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Şifre geçersiz, en az 4 karakterli olmalıdır"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Cihaz yöneticisi yakın zamanda kullanılan bir şifreye izin vermiyor"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Şifre kaydedilirken hata oluştu"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Yaygın olarak kullanılan şifreler BT yöneticiniz tarafından engellenir. Farklı bir şifre deneyin."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Yaygın olarak kullanılan şifreler BT yöneticiniz tarafından engellenir. Farklı bir şifre deneyin."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan veya tekrar eden rakam dizisine izin verilmez."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçenekleri"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün önce"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter tuşu"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Demodan çık"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo modundan çık"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bu işlem, demo hesabını silecek ve sistemi fabrika verilerine sıfırlayacak. Tüm kullanıcı verileri kaybolacak."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Bu işlem, demo hesabını silecek ve sistemi fabrika verilerine sıfırlayacak. Tüm profil verileri kaybolacak."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan çık"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"KAPAT"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Sürüş sırasında bu özellik kullanılamaz"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Sürüş sırasında kullanıcı eklenemez"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Sürüş sırasında kullanıcı eklenemez"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Ara"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Asistan ve ses"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Asistan uygulaması"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Ekrandaki metni kullan"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Asistan\'ın, ekran içeriğine erişmesine izin ver"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Ekran görüntüsü kullan"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Asistan\'ın, ekran görüntüsüne erişmesine izin ver"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"En son gönderilenler"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Tüm uygulamalar"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profiller ve hesaplar"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Diğer profilleri yönet"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Profil ekle"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Bu profili sil"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profil ekle"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index f770b34..ac63203 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Екран"</string>
     <string name="brightness" msgid="2919605130898772866">"Рівень яскравості"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Адаптивна яскравість"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Оптимізація рівня яскравості з урахуванням умов освітлення"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Регулювати яскравість екрана відповідно до оточення"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Нічний екран увімкнено"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"екран, сенсорний екран"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"затемнений екран, сенсорний екран, акумулятор"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затемнений екран, сенсорний екран, акумулятор"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"затемнений екран, ніч, відтінок"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Нічний режим"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Мережа й Інтернет"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Мобільна мережа"</string>
@@ -88,6 +84,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Налаштуйте застереження про використання трафіку"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Налаштуйте ліміт використання трафіку"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Налаштувати"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Мережа OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d МБ використано %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Під\'єднатися до іншої мережі"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Налаштування мережі"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Увімкнення Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Вимкнення Wi‑Fi…"</string>
@@ -97,6 +97,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не вдалося під’єднатися до мережі"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додати мережу"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Під’єднати"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Підключення…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Авто поза зоною покриття мережі"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показати пароль"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Введіть назву мережі"</string>
@@ -194,6 +196,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Додаток хоче зробити головний пристрій аудіосистеми видимим для інших пристроїв Bluetooth упродовж <xliff:g id="TIMEOUT">%1$d</xliff:g> с."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> хоче ввімкнути Bluetooth і зробити головний пристрій аудіосистеми видимим для інших упродовж <xliff:g id="TIMEOUT">%2$d</xliff:g> с."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Додаток хоче ввімкнути Bluetooth і зробити головний пристрій аудіосистеми видимим для інших упродовж <xliff:g id="TIMEOUT">%1$d</xliff:g> с."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Інші пристрої бачать ваш пристрій під назвою \"%1$s\""</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Мої пристрої"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Підключені раніше"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s підключено"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s відключено"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запит Bluetooth на створення пари"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Створити пару та підключитися"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код підключення Bluetooth"</string>
@@ -232,6 +239,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартний сигнал сповіщень"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартний сигнал будильника"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Зберегти"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Звуки сповіщень"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Сигнал дзвінка, сповіщення, будильник"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Яскравість"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Коригувати параметри екрана для слабкого освітлення"</string>
     <string name="units_settings" msgid="402325305096925886">"Одиниці"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Швидкість"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Відстань"</string>
@@ -284,7 +295,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Показати всі додатки"</string>
     <string name="default_applications" msgid="1558183275638697087">"Додатки за умовчанням"</string>
     <string name="app_permissions" msgid="32799922508313948">"Дозволи додатків"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Додатки з доступом таких категорій: <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Контролюйте доступ додатка до даних"</string>
     <string name="applications_settings" msgid="794261395191035632">"Про додаток"</string>
     <string name="force_stop" msgid="2153183697014720520">"Примусово припинити роботу"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Примусово припинити роботу?"</string>
@@ -294,13 +305,21 @@
     <string name="uninstall_text" msgid="277907956072833012">"Видалити"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Якщо вимкнути цей додаток, система Android та інші додатки можуть працювати неналежним чином."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Вимкнути додаток"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Не встановлено для цього користувача"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Не встановлено для цього профілю"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволи"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Сповіщення"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Пам\'ять і кеш"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версія: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Дозволи не надано"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Немає запитів на дозволи"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Додатки, що не використовуються"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> додаток, що не використовується</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> додатки, що не використовуються</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> додатків, що не використовуються</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> додатка, що не використовується</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Скасувати дозволи й звільняти місце"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s у внутрішній пам\'яті"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Використання трафіку"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Використання трафіку"</string>
@@ -340,9 +359,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Запитувати щоразу"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Не відкривати в цьому додатку"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Підтримувані посилання"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Додатки"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Нещодавно відкриті"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Переглянути всі додатки (%1$d)"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Диспетчер дозволів"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Контролюйте доступ додатка до даних"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Для Асистента й інших додатків"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Системні та інші налаштування"</string>
     <string name="special_access" msgid="5730278220917123811">"Спеціальний доступ"</string>
     <string name="show_system" msgid="4401355756969485287">"Показати системні додатки"</string>
     <string name="hide_system" msgid="8845453295584638040">"Сховати системні додатки"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Сховати системні додатки"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Змінення налаштувань системи"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Додаток із цим дозволом може змінювати налаштування системи."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Доступ до сповіщень"</string>
@@ -363,8 +390,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Немає останніх запитів на геодані"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволи на рівні додатка"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Служби локації"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Використовувати геодані"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Оновлення системи"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Додатково"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Докладніше, правова інформація, скидання тощо"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Рівень виправлення системи безпеки Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Модель і апаратне забезпечення"</string>
@@ -428,16 +460,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Буде скинуто всі налаштування для:\n\n"<li>"вимкнених додатків"</li>\n<li>"вимкнених сповіщень із додатків"</li>\n<li>"додатків за умовчанням"</li>\n<li>"обмежень щодо передавання даних у фоновому режимі"</li>\n<li>"усіх обмежень щодо дозволів"</li>\n\n"Дані додатків видалено не буде."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Скинути налаштування додатків"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Налаштування додатків скинуто"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Стерти всі дані (скинути налаштування)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Буде видалено всі дані головного пристрою автомобіля, зокрема:\n\n"<li>"обліковий запис Google;"</li>\n<li>"дані й налаштування системи та додатків;"</li>\n<li>"завантажені додатки."</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Ви ввійшли в такі облікові записи:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У цього автомобіля є інші користувачі."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Скинути дані автомобіля"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Скинути?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Видалити всю особисту інформацію та завантажені додатки? Цю дію не можна відмінити."</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Видалити все"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Видалення"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Зачекайте…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Видалити всі дані (скинути налаштування)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Видалити всі дані й профілі з інформаційно-розважальної системи"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Буде видалено всі дані інформаційно-розважальної системи автомобіля, зокрема:\n\n"<li>"обліковий запис Google;"</li>\n<li>"дані й налаштування системи та додатків;"</li>\n<li>"завантажені додатки."</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Ви ввійшли в такі облікові записи:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"У цьому автомобілі є інші профілі."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Видалити всі дані"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Видалити всі дані?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Буде видалено всі дані, облікові записи та завантажені додатки особистого профілю в цій інформаційно-розважальній системі.\n\nЦю дію неможливо відмінити."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Видалити все"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Видалення всіх даних"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Зачекайте…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата й час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Установити дату, час, часовий пояс і формати"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Автоматичні дата й час"</string>
@@ -460,35 +493,36 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ви ввійшли як адміністратор"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Усі дозволи адміністратора"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Зробити адміністратором"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Це дасть змогу видаляти користувачів, зокрема інших адміністраторів, і відновлювати заводські налаштування системи."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Це дасть змогу видаляти профілі, зокрема інших адміністраторів, і скидати налаштування системи."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Цю дію не можна відмінити."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Так, зробити адміністратором"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Створювати нових користувачів"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Створювати нові профілі"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефонувати"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Обмінюватися SMS з автомобіля"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Установлювати нові додатки"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Видаляти додатки"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додати користувача"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новий користувач"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Додати нового користувача?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Після створення новий профіль потрібно налаштувати."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Будь-який користувач пристрою може оновлювати додатки для решти користувачів."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Ви досягли ліміту користувачів"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувача.</item>
-      <item quantity="few">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувачів.</item>
-      <item quantity="many">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувачів.</item>
-      <item quantity="other">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувача.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Додати профіль"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Новий профіль"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Додати новий профіль?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Коли ви додаєте новий профіль, користувач має налаштувати його."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Будь-який профіль може оновлювати додатки для решти профілів."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Досягнуто ліміту профілів"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Можна створити до <xliff:g id="COUNT">%d</xliff:g> профілю.</item>
+      <item quantity="few">Можна створити до <xliff:g id="COUNT">%d</xliff:g> профілів.</item>
+      <item quantity="many">Можна створити до <xliff:g id="COUNT">%d</xliff:g> профілів.</item>
+      <item quantity="other">Можна створити до <xliff:g id="COUNT">%d</xliff:g> профілю.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Не вдалося створити нового користувача"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Видалити користувача?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Усі додатки й дані буде видалено."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Не вдалося видалити користувача."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Не вдалося створити новий профіль"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Видалити цей профіль?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Усі додатки та дані для цього профілю буде видалено"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Не вдалося видалити профіль."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Цей профіль видалиться, коли ви ввійдете в інший або перезапустите транспортний засіб."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрити"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторити"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Видалити останнього користувача?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Коли ви видалите останнього користувача цього автомобіля, буде створено нового адміністратора."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Буде видалено всі дані, налаштування й додатки, зв’язані з цим користувачем. Потрібно буде знову налаштовувати систему."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Видалити останній профіль?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Якщо ви видалите останній профіль для цього автомобіля, усі дані, налаштування та додатки, пов\'язані з профілем, буде видалено."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Після цього ви зможете налаштувати новий профіль."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Вибрати нового адміністратора"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"У вас має бути принаймні один адміністратор. Щоб видалити цього, спершу виберіть іншого."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Вибрати адміністратора"</string>
@@ -498,10 +532,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Ви (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ім’я"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не налаштовано"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Змінити ім’я користувача"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Змінити ім\'я профілю"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Поле не може бути порожнім."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Введене ім\'я користувача недійсне."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Указане ім\'я профілю недійсне."</string>
     <string name="users_list_title" msgid="770764290290240909">"Користувачі"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Профілі"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s отримує дозволи"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Пам’ять"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Музика й аудіо"</string>
@@ -512,7 +547,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Аудіофайли"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Обчислення…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Розмір додатка"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Дані користувача"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Дані профілю"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Кеш"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Усього"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Очистити пам’ять"</string>
@@ -554,6 +589,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Скасувати синхронізацію"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Виникли проблеми із синхронізацією. Незабаром вона відновиться."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Конфіденційність"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Дані транспортного засобу"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Контролюйте доступ додатка до геоданих"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Мікрофон"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Контролюйте доступ додатка до мікрофона"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Дані транспортного засобу"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Керуйте діями й інформацією, що зберігаються в пам\'яті цього транспортного засобу"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Видалити профіль"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Видалити всі дані з профілю та облікові записи з інформаційно-розважальної системи"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Ця дія недоступна для вашого профілю"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безпека"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блокування екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Немає"</string>
@@ -589,6 +633,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Вимкнути блокування екрана?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Будь-хто зможе ввійти у ваш обліковий запис"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Блокування профілю"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Налаштувати автоматичне розблокування"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Введіть PIN-код"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Введіть пароль"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"З міркувань безпеки налаштуйте PIN-код"</string>
@@ -612,7 +658,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Максимальна кількість цифр: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Має містити лише цифри від 0 до 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Адміністратор пристрою не дозволяє використовувати останній PIN-код"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"IT-адміністратор заблокував загальні PIN-коди. Введіть інший PIN-код."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"IT-адміністратор заблокував загальні PIN-коди. Введіть інший PIN-код."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Не може містити недійсні символи."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Пароль недійсний. Потрібно ввести принаймні 4 символи."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -653,7 +699,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Адміністратор пристрою не дозволяє використовувати останній пароль"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Не вдалося зберегти пароль"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-адміністратор заблокував загальні паролі. Введіть інший пароль."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"IT-адміністратор заблокував загальні паролі. Введіть інший пароль."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Заборонено однакові цифри або в порядку зростання чи спадання."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Способи блокування екрана"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. тому"</string>
@@ -674,10 +720,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Клавіша Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Вийти з демо-режиму"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Вийти з демо-режиму"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Буде видалено демонстраційний обліковий запис і відновлено заводські налаштування системи. Усі дані користувача буде втрачено."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Буде видалено демонстраційний обліковий запис і відновлено заводські налаштування системи. Усі дані профілю буде втрачено."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Вийти з демо-режиму"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЗАКРИТИ"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Функція недоступна під час руху автомобіля"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Неможливо додати користувача під час руху автомобіля"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Не вдається додати профіль під час руху автомобіля"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Пошук"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Асистент і Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Додаток Асистент"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Використовувати текст з екрана"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Надати Асистенту доступ до контенту на екрані"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Використовувати знімки екрана"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Надати Асистенту доступ до зображень екрана"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Нещодавно надіслані"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Усі додатки"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Профілі та облікові записи"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Керувати іншими профілями"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Додати профіль"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Видалити цей профіль"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Додати профіль"</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 99570b1..01147cb 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -22,12 +22,9 @@
     <string name="display_settings" msgid="5325515247739279185">"ڈسپلے"</string>
     <string name="brightness" msgid="2919605130898772866">"چمک کی سطح"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"تغیر پذیر چمک"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"دستیاب روشنی کیلئے چمک کی سطح کو بہتر بنائیں"</string>
+    <!-- no translation found for auto_brightness_summary (2002570577219479702) -->
+    <skip />
     <string name="condition_night_display_title" msgid="3777509730126972675">"نائٹ لائٹ آن ہے"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"اسکرین، ٹچ اسکرین"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"مدھم اسکرین، ٹچ اسکرین، بیٹری"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"مدھم اسکرین، ٹچ اسکرین، بیٹری"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"مدھم اسکرین، رات، ہلکا رنگ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"نائٹ موڈ"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"نیٹ ورک اور انٹرنیٹ"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"موبائل نیٹ ورک"</string>
@@ -84,6 +81,14 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"ڈیٹا کے استعمال کی وارننگ سیٹ کریں"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"ڈیٹا کے استعمال کی حد سیٹ کریں"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"سیٹ کریں"</string>
+    <!-- no translation found for network_and_internet_oem_network_title (6436902713696212250) -->
+    <skip />
+    <!-- no translation found for network_and_internet_data_usage_time_range_summary (5766788098591757730) -->
+    <skip />
+    <!-- no translation found for network_and_internet_join_other_network_title (7126831320010062712) -->
+    <skip />
+    <!-- no translation found for network_and_internet_network_preferences_title (2983548049081168876) -->
+    <skip />
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi آن ہو رہا ہے…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi آف ہو رہا ہے…"</string>
@@ -93,6 +98,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"نیٹ ورک سے مربوط ہونے میں ناکام رہا"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"نیٹ ورک شامل کریں"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"منسلک کریں"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"منسلک ہو رہا ہے…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"نیٹ ورک رینج میں نہیں ہے"</string>
     <string name="wifi_password" msgid="5565632142720292397">"پاس ورڈ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"پاس ورڈ دکھائیں"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"براہ کرم نیٹ ورک کا نام درج کریں"</string>
@@ -190,6 +197,16 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"ایک ایپ آپ کے ہیڈ یونٹ کو <xliff:g id="TIMEOUT">%1$d</xliff:g> سیکنڈ کیلئے دیگر بلوٹوتھ آلات پر مرئی بنانا چاہتی ہے۔"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> بلوٹوتھ آن کرنا اور <xliff:g id="TIMEOUT">%2$d</xliff:g> سیکنڈ کیلئے آپ کے ہیڈ یونٹ کو دیگر آلات پر مرئی بنانا چاہتی ہے۔"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"ایک ایپ بلوٹوتھ آن کرنا اور <xliff:g id="TIMEOUT">%1$d</xliff:g> سیکنڈ کیلئے آپ کے ہیڈ یونٹ کو دیگر آلات پر مرئی بنانا چاہتی ہے۔"</string>
+    <!-- no translation found for bluetooth_state_switch_summary (171929910916432266) -->
+    <skip />
+    <!-- no translation found for bluetooth_my_devices (6352010339607939612) -->
+    <skip />
+    <!-- no translation found for bluetooth_previously_connected (5206229557831180323) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_connected_toast (4614765282582494488) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_disconnected_toast (8889122688851623920) -->
+    <skip />
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"بلوٹوتھ جوڑا بنانے کی درخواست"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"جوڑا بنائیں اور منسلک کریں"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"بلوٹوتھ جوڑا بنانے کا کوڈ"</string>
@@ -228,6 +245,14 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"اطلاع کی ڈیفالٹ آواز"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"الارم کی ڈیفالٹ آواز"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"محفوظ کریں"</string>
+    <!-- no translation found for sound_alert_sounds (6838044721739163867) -->
+    <skip />
+    <!-- no translation found for sound_alert_sounds_summary (816501423095651281) -->
+    <skip />
+    <!-- no translation found for display_brightness (5718970880488110840) -->
+    <skip />
+    <!-- no translation found for display_night_mode_summary (4939425286027546230) -->
+    <skip />
     <string name="units_settings" msgid="402325305096925886">"یونٹس"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"رفتار"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"دوری"</string>
@@ -280,7 +305,8 @@
     <string name="all_applications" msgid="7798210477486822168">"سبھی ایپس دکھائیں"</string>
     <string name="default_applications" msgid="1558183275638697087">"ڈیفالٹ ایپس"</string>
     <string name="app_permissions" msgid="32799922508313948">"ایپ کی اجازتیں"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"ایپس <xliff:g id="APPS">%1$s</xliff:g> استعمال کر رہی ہیں"</string>
+    <!-- no translation found for app_permissions_summary (5402214755935368418) -->
+    <skip />
     <string name="applications_settings" msgid="794261395191035632">"ایپ کی معلومات"</string>
     <string name="force_stop" msgid="2153183697014720520">"زبردستی روکیں"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"زبردستی روکیں؟"</string>
@@ -290,13 +316,20 @@
     <string name="uninstall_text" msgid="277907956072833012">"اَن انسٹال کریں"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"اگر آپ اس ایپ کو غیر فعال کر دیتے ہیں تو ہو سکتا ہے Android اور دیگر ایپس ٹھیک طرح سے کام نہ کریں۔"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ایپ کو غیر فعال کریں"</string>
-    <string name="not_installed" msgid="4218816013370552746">"اس صارف کیلئے انسٹال نہیں ہے"</string>
+    <!-- no translation found for not_installed (4163454337822508007) -->
+    <skip />
     <string name="permissions_label" msgid="2701446753515612685">"اجازتیں"</string>
     <string name="notifications_label" msgid="6586089149665170731">"اطلاعات"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"اسٹوریج اور کیش"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ورژن: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"کوئی اجازت نہیں دی گئی"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"کسی اجازت کی درخواست نہیں کی گئی"</string>
+    <string name="unused_apps" msgid="648471933781010395">"غیر مستعمل ایپس"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> غیر مستعمل ایپس</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> غیر مستعمل ایپ</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"اجازتوں کو ہٹائیں اور جگہ خالی کریں"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"داخلی اسٹوریج میں %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ڈیٹا کا استعمال"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ایپ ڈیٹا کا استعمال"</string>
@@ -317,7 +350,7 @@
     <string name="app_list_preference_none" msgid="7753357799926715901">"کوئی نہیں"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"منتخب کردہ"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"اسسٹنٹ آپ کے سسٹم پر زیر استعمال ایپس کے بارے میں معلومات، بشمول آپ کی اسکرین پر نظر آنے والی یا ایپس کے اندر قابل رسائی معلومات پڑھ سکے گی۔"</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"سروس شامل کریں"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"شروعاتی لنکس"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"انسٹال کردہ ایپس"</string>
@@ -334,13 +367,28 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"ہر بار پوچھیں"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"اس ایپ میں نہ کھولیں"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"تعاون یافتہ لنکس"</string>
+    <!-- no translation found for apps_settings_title (3982535942394315336) -->
+    <skip />
+    <!-- no translation found for apps_recently_opened (5320377037971195984) -->
+    <skip />
+    <!-- no translation found for apps_view_all_apps_title (2322120325505230530) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_title (8776335943862484131) -->
+    <skip />
+    <!-- no translation found for apps_permission_manager_summary (4180424218228141274) -->
+    <skip />
+    <!-- no translation found for apps_default_apps_summary (2017792579839972926) -->
+    <skip />
+    <!-- no translation found for apps_special_app_access_summary (6464767436309742163) -->
+    <skip />
     <string name="special_access" msgid="5730278220917123811">"خاص ایپ تک رسائی"</string>
     <string name="show_system" msgid="4401355756969485287">"سسٹم دکھائیں"</string>
     <string name="hide_system" msgid="8845453295584638040">"سسٹم چھپائیں"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"سسٹم ایپس کو چھپائیں"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"سسٹم کی ترتیبات میں ترمیم کریں"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"اس اجازت سے ایپ کو سسٹم کی ترتیبات میں ترمیم کرنے میں سہولت ہوتی ہے۔"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"اطلاع تک رسائی"</string>
-    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"‫<xliff:g id="SERVICE">%1$s</xliff:g> کیلئے اطلاع تک رسائی کی اجازت دیں؟"</string>
+    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"<xliff:g id="SERVICE">%1$s</xliff:g> کیلئے اطلاع تک رسائی کی اجازت دیں؟"</string>
     <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> تمام اطلاعات  بشمول ذاتی معلومات جیسے رابطہ کے نام اور آپ کو موصول ہونے والے پیغامات کا متن پڑھنے کا اہل ہوگا۔ یہ ان میں شامل اطلاعات یا ٹرگر کارروائیوں کے بٹنز کو برخاست کرنے کا بھی اہل ہوگا۔\n\nاس سے ایپ کو ڈسٹرب نہ کریں آن یا آف کرنے اور متعلقہ ترتیبات تبدیل کرنے کی اہلیت بھی ملے گی۔"</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"اگر آپ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> کیلئے اطلاع کی رسائی آف کرتے ہیں تو ڈسٹرب نہ کریں کی رسائی بھی آف ہو سکتی ہے۔"</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"آف کریں"</string>
@@ -357,8 +405,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"مقام کی کوئی حالیہ درخواست نہیں ہے"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ایپ کی سطح کی اجازتیں"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"مقام کی سروسز"</string>
+    <!-- no translation found for location_use_location_title (117735895374606680) -->
+    <skip />
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"سسٹم"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"سسٹم اپ ڈیٹس"</string>
+    <!-- no translation found for system_advanced_title (6303355131691523362) -->
+    <skip />
+    <!-- no translation found for system_advanced_summary (5833643795981791953) -->
+    <skip />
     <string name="firmware_version" msgid="8491753744549309333">"‫Android ورژن"</string>
     <string name="security_patch" msgid="4794276590178386903">"‫Android سیکیورٹی پیچ کا لیول"</string>
     <string name="hardware_info" msgid="3973165746261507658">"ماڈل اور ہارڈ ویئر"</string>
@@ -420,16 +476,23 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"اس سے مندرجہ ذیل کیلئے تمام ترجیحات ری سیٹ ہو جائیں گی:\n\n"<li>"غیر فعال کردہ ایپس"</li>\n<li>"غیر فعال کردہ ایپس کی اطلاعات"</li>\n<li>"کارروائیوں کے لیے ڈیفالٹ ایپلیکیشنز"</li>\n<li>"ایپس کے لیے پس منظر کے ڈیٹا کی پابندیاں"</li>\n<li>"کوئی اجازتی پابندیاں"</li>\n\n"آپ کسی ایپ کے ڈیٹا سے محروم نہیں ہوں گے۔"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ایپس کو ری سیٹ کریں"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ایپ کی ترجیحات کو ری سیٹ کر دیا ہے"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"سبھی ڈیٹا کو حذف کریں (فیکٹری ری سیٹ)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"یہ آپ کی گاڑی کے ہیڈ یونٹ سے سبھی ڈیٹا کو صاف کر دے گا، بشمول:\n\n"<li>"آپ کا Google اکاؤنٹ"</li>\n<li>"سسٹم اور ایپ ڈیٹا اور ترتیبات"</li>\n<li>"ڈاؤن لوڈ کردہ ایپس"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"آپ فی الحال مندرجہ ذیل اکاؤنٹس میں سائن ان ہیں:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"اس آلہ پر دیگر صارفین موجود ہیں۔"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"گاڑی کو ری سیٹ کریں"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ری سیٹ کریں؟"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"آپ کی سبھی ذاتی معلومات اور ڈاؤن لوڈ کردہ ایپس کو صاف کریں؟ آپ اس کارروائی کو کالعدم نہیں کر سکتے ہیں!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ہر چیز صاف کریں"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"صاف ہو رہا ہے"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"براہ کرم انتظار کریں..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"سبھی ڈیٹا کو حذف کریں (فیکٹری ری سیٹ)"</string>
+    <!-- no translation found for factory_reset_summary (854815182943504327) -->
+    <skip />
+    <!-- no translation found for factory_reset_desc (1688333312943433244) -->
+    <skip />
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"آپ فی الحال مندرجہ ذیل اکاؤنٹس میں سائن ان ہیں:"</string>
+    <!-- no translation found for factory_reset_other_users_present (3254426161455117822) -->
+    <skip />
+    <!-- no translation found for factory_reset_button_text (2626666247051368256) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_title (3354542161765761879) -->
+    <skip />
+    <!-- no translation found for factory_reset_confirm_desc (2037199381372030510) -->
+    <skip />
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"ہر چیز صاف کریں"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"صاف ہو رہا ہے"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"براہ کرم انتظار کریں…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"تاریخ اور وقت"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تاریخ، وقت، ٹائم زون اور فارمیٹس کو سیٹ کریں"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"خود کار تاریخ اور وقت"</string>
@@ -452,33 +515,46 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"منتظم کے طور پر سائن ان کردہ"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"منتظم کی سبھی اجازتیں"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"منتظم بنائیں"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"صارف دیگر منتظمین سمیت صارفین کو حذف اور سسٹم کو فیکٹری ری سیٹ نہیں کر سکے گا۔"</string>
+    <!-- no translation found for grant_admin_permissions_message (6160752287870078438) -->
+    <skip />
     <string name="action_not_reversible_message" msgid="740401337875726973">"یہ کارروائی منسوخ نہیں کی جا سکتی۔"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"جی ہاں، منتظم بنائیں"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"نئے صارفین بنائیں"</string>
+    <!-- no translation found for create_user_permission_title (2402003632264628632) -->
+    <skip />
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"فون کالز کریں"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"کار کے موبائل ڈیٹا کے ذریعے پیغام رسانی کی جا رہی ہے"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"نئی ایپس انسٹال کریں"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ایپس کو اَن انسٹال کریں"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"صارف کو شامل کریں"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"نیا صارف"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"نیا صارف شامل کریں؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے۔"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"کوئی بھی صارف دیگر سبھی صارفین کیلئے ایپس کو اپ ڈیٹ کر سکتا ہے۔"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"صارف کی حد مکمل ہو گئی"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">آپ زیادہ سے زیادہ <xliff:g id="COUNT">%d</xliff:g> صارفین بنا سکتے ہیں۔</item>
-      <item quantity="one">صرف ایک صارف بنایا جا سکتا ہے۔</item>
-    </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"نیا صارف بنانا ناکام ہو گیا"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"اس صارف کو حذف کریں؟"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"سبھی ایپس اور ڈیٹا حذف ہو جائیں گے۔"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"صارف کو حذف کرنے میں ناکامی۔"</string>
+    <!-- no translation found for user_add_user_menu (4125869008006021799) -->
+    <skip />
+    <!-- no translation found for user_new_user_name (906698527658609819) -->
+    <skip />
+    <!-- no translation found for user_add_user_title (6296827596015729982) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_setup (1104228754378776843) -->
+    <skip />
+    <!-- no translation found for user_add_user_message_update (4426216049383534983) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_title (5677729355746623293) -->
+    <skip />
+    <!-- no translation found for user_limit_reached_message (3310152546154693349) -->
+    <!-- no translation found for add_user_error_title (1083971272311209015) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_title (575517556232943687) -->
+    <skip />
+    <!-- no translation found for delete_user_dialog_message (3916865958419051299) -->
+    <skip />
+    <!-- no translation found for delete_user_error_title (3673233389115187280) -->
+    <skip />
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"جب آپ پروفائلز سوئچ کرتے ہیں یا گاڑی ری سٹارٹ کرتے ہیں تو یہ پروفائل حذف ہو جائے گی۔"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"برخاست کریں"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"دوبارہ کوشش کریں"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"آخری صارف کو حذف کریں؟"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"اس کار کیلئے صرف باقی صارف کو حذف کرنے کے بعد، ایک نیا منتظم صارف بنایا جائے گا۔"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"اس صارف سے وابستہ سبھی ڈیٹا، ترتیبات، اور ایپس کو حذف کر دیا جائے گا۔ آپ کو سسٹم دوبارہ ترتیب دینا ہوگا۔"</string>
+    <!-- no translation found for delete_last_user_dialog_title (3454454005909291260) -->
+    <skip />
+    <!-- no translation found for delete_last_user_delete_warning (7189499586859833988) -->
+    <skip />
+    <!-- no translation found for delete_last_user_system_setup_required_message (726196874941282088) -->
+    <skip />
     <string name="choose_new_admin_title" msgid="1915428454917699587">"نیا منتظم منتخب کریں"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"آپ کو کم از کم ایک منتظم کی ضرورت ہے۔ اسے حذف کرنے کیلئے، پہلے ایک متبادل کا انتخاب کریں۔"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"منتظم منتخب کریں"</string>
@@ -488,10 +564,14 @@
     <string name="current_user_name" msgid="3813671533249316823">"آپ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"نام"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ترتیب نہیں دیا گیا"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"صارف نام میں ترمیم کریں"</string>
+    <!-- no translation found for edit_user_name_title (1118500707473139995) -->
+    <skip />
     <string name="name_input_blank_error" msgid="2088850865880984123">"فیلڈ خالی نہیں رہ سکتی۔"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"درج کردہ صارف نام غلط ہے۔"</string>
+    <!-- no translation found for name_input_invalid_error (4355625213535164704) -->
+    <skip />
     <string name="users_list_title" msgid="770764290290240909">"صارفین"</string>
+    <!-- no translation found for profiles_list_title (1443396686780460221) -->
+    <skip />
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s کو اجازتیں دی گئیں"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"اسٹوریج"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"موسیقی اور آڈیو"</string>
@@ -502,7 +582,8 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"آڈیو فائلز"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"حساب لگایا جا رہا ہے…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"ایپ کا سائز"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"صارف کا ڈیٹا"</string>
+    <!-- no translation found for storage_data_size_label (7986110464268960652) -->
+    <skip />
     <string name="storage_cache_size_label" msgid="6361308766707419555">"کیش"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"کُل"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"اسٹوریج صاف کریں"</string>
@@ -531,7 +612,7 @@
     <string name="really_remove_account_message" msgid="4296769280849579900">"اس اکاؤنٹ کو ہٹانے سے اس کے تمام پیغامات، رابطے اور اس آلے کا دیگر ڈیٹا حذف ہو جائے گا!"</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"اکاؤنٹ کو ہٹانے میں ناکامی۔"</string>
     <string name="account_sync_title" msgid="6541844336300236915">"اکاؤنٹ کی مطابقت پذیری"</string>
-    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> کے <xliff:g id="ID_1">%1$d</xliff:g> آئٹمز کیلئے مطابقت پذیری آن ہے"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> کے <xliff:g id="ID_1">%1$d</xliff:g> آئٹمز کیلئے مطابق پذیری آن ہے"</string>
     <string name="account_sync_summary_all_on" msgid="3652264471870312725">"سبھی آئٹمز کیلئے مطابقت پذیری آن ہے"</string>
     <string name="account_sync_summary_all_off" msgid="6550959714035312414">"سبھی آئٹمز کیلئے مطابقت پذیری آف ہے"</string>
     <string name="sync_disabled" msgid="393531064334628258">"مطابقت پذیری آف ہے"</string>
@@ -544,6 +625,21 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"مطابقت پذیری منسوخ کریں"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"مطابقت پذیری میں فی الحال دشواریاں پیش آ رہی ہیں۔ یہ جلد ہی واپس آ جائے گا۔"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"رازداری"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"گاڑی کا ڈیٹا"</string>
+    <!-- no translation found for privacy_location_summary (7019817848470566242) -->
+    <skip />
+    <!-- no translation found for mute_mic_title (2813215197799569553) -->
+    <skip />
+    <!-- no translation found for mute_mic_summary (5426953935775303904) -->
+    <skip />
+    <string name="vehicle_data_title" msgid="7422375925983229871">"گاڑی کا ڈیٹا"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"اس گاڑی پر کی گئیں سرگرمیوں اور محفوظ کردہ معلومات کا نظم کریں"</string>
+    <!-- no translation found for vehicle_data_delete_user_title (9132472153739085346) -->
+    <skip />
+    <!-- no translation found for vehicle_data_delete_user_summary (5900205773710111394) -->
+    <skip />
+    <!-- no translation found for action_unavailable (7087119418684417249) -->
+    <skip />
     <string name="security_settings_title" msgid="6955331714774709746">"سیکیورٹی"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"اسکرین لاک"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"کوئی نہیں"</string>
@@ -579,6 +675,10 @@
     <string name="okay" msgid="4589873324439764349">"ٹھیک ہے"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"اسکرین لاک کو ہٹائیں؟"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"اس سے کسی کو بھی آپ کے اکاؤنٹ تک رسائی کی اجازت ہوگی"</string>
+    <!-- no translation found for security_profile_lock_title (3082523481292617350) -->
+    <skip />
+    <!-- no translation found for security_unlock_profile_summary (6742592419759865631) -->
+    <skip />
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"اپنا PIN درج کریں"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"اپنا پاس ورڈ درج کریں"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"سیکیورٹی کیلئے PIN سیٹ کریں"</string>
@@ -602,7 +702,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"ہندسے <xliff:g id="NUMBER">%d</xliff:g> سے کم ہونے چاہئیں۔"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"صرف ‎0-9 ہندسے شامل ہونے چاہئیں۔"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"آلہ کا منتظم ایک حالیہ PIN استعمال کرنے کی اجازت نہیں دیتا ہے"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"آپ کے IT منتظم نے عمومی PINs کو مسدود کر دیا ہے۔ کوئی دوسرا PIN آزمائیں۔"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"آپ کے IT منتظم نے عمومی PINs کو مسدود کر دیا ہے۔ کوئی دوسرا PIN آزمائیں۔"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"اس میں غلط کریکٹر شامل نہیں ہو سکتا۔"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"پاس ورڈ غلط ہے، کم از کم 4 حروف لمبا ہونا ضروری ہے۔"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +731,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"آلے کا منتظم ایک حالیہ پاس ورڈ کا استعمال کرنے کی اجازت نہیں دیتا ہے"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"پاس ورڈ محفوظ کرنے میں خرابی"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"آپ کے IT منتظم نے عمومی پاس ورڈز کو مسدود کر دیا ہے۔ کوئی دوسرا پاس ورڈ آزمائیں۔"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"آپ کے IT منتظم نے عمومی پاس ورڈز کو مسدود کر دیا ہے۔ کوئی دوسرا پاس ورڈ آزمائیں۔"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ہندسوں کی صعودی، نزولی یا مکرر ترتیب کی اجازت نہیں ہے۔"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"اسکرین لاک کے اختیارات"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> دن پہلے"</string>
@@ -652,10 +752,37 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter کلید"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"ڈیمو سے باہر نکلیں"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ڈیمو موڈ سے باہر نکلیں"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"اس سے ڈیمو اکاؤنٹ اور فیکٹری ڈیٹا ری سیٹ کا سسٹم حذف ہو جائے گا۔ تمام صارف ڈیٹا غائب ہو جائیں گے۔"</string>
+    <!-- no translation found for exit_retail_mode_dialog_body (6513854703627380365) -->
+    <skip />
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ڈیمو سے باہر نکلیں"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"برخاست کریں"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"ڈرائیونگ کے دوران یہ خصوصیت دستیاب نہیں ہے"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"ڈرائیونگ کے دوران صارف کو شامل نہیں کیا جا سکتا"</string>
+    <!-- no translation found for add_user_restricted_while_driving (1037301074725362944) -->
+    <skip />
     <string name="default_search_query" msgid="3137420627428857068">"تلاش کریں"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"اسسٹنٹ اور آواز"</string>
+    <!-- no translation found for assistant_and_voice_assistant_app_title (6438964789533662537) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_title (5851460943413795599) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_text_from_screen_summary (4161751708121301541) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_title (1930735578425470046) -->
+    <skip />
+    <!-- no translation found for assistant_and_voice_use_screenshot_summary (3738474919393817950) -->
+    <skip />
+    <!-- no translation found for notifications_recently_sent (9051696542615302799) -->
+    <skip />
+    <!-- no translation found for notifications_all_apps (3557079551048958846) -->
+    <skip />
+    <!-- no translation found for profiles_and_accounts_settings_title (2672643892127659812) -->
+    <skip />
+    <!-- no translation found for manage_other_profiles_button_text (2262188413455510828) -->
+    <skip />
+    <!-- no translation found for add_a_profile_button_text (8027395095117925114) -->
+    <skip />
+    <!-- no translation found for delete_this_profile_text (6035404714526922665) -->
+    <skip />
+    <!-- no translation found for add_profile_text (9118410102199116969) -->
+    <skip />
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 036a0f8..076d86b 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Ekran"</string>
     <string name="brightness" msgid="2919605130898772866">"Yorqinlik darajasi"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Moslashuvchan yorqinlik"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Ekran yorqinligini atrofning yoritilganlik darajasiga qarab moslashtirish"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Ekran yorqinligini atrof-muhitga qarab moslash"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Tungi rejim yoqilgan"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"ekran, sensorli ekran"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"xira ekran, sensorli ekran, batareya"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"xira ekran, sensorli ekran, batareya"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"xira ekran, tun, tus"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Tungi rejim"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Tarmoq va Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil tarmoq"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Trafik sarfiga oid ogohlantirishni sozlash"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Trafik limitini sozlash"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Sozlash"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"OEM tarmoq"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%1$d MB sarflandi %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Boshqa tarmoqqa ulanish"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Tarmoq parametrlari"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi yoqilmoqda…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi faolsizlantirilmoqda…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Tarmoqqa ulanmadi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tarmoq kiritish"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ulanish"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Ulanmoqda…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Tarmoq xizmat doirasidan tashqarida"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parol"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Parol berkitilmasin"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Tarmoq nomini kiriting"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Ilova bosh qurilmani boshqa Bluetooth qurilmalariga <xliff:g id="TIMEOUT">%1$d</xliff:g> soniya davomida ochiq qilmoqchi."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi Bluetooth xizmatini yoqib, bosh qurilmani boshqa qurilmalarga <xliff:g id="TIMEOUT">%2$d</xliff:g> soniya davomida ochiq qilmoqchi."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Ilova Bluethooth xizmatini yoqib, bosh qurilmani boshqa qurilmalarga <xliff:g id="TIMEOUT">%1$d</xliff:g> soniya davomida ochiq qilmoqchi."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Boshqa qurilmalarga %1$s sifatida ochiqlash"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Qurilmalarim"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Avval ulangan qurilmalar"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"%1$s ulandi"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"%1$s uzildi"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth orqali ulanish so‘rovi"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Juftlash va ulash"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth orqali ulanish kodi"</string>
@@ -210,8 +217,8 @@
     <string name="language_picker_list_all_header" msgid="1577387973934368428">"Barcha tillar"</string>
     <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatura"</string>
     <string name="manage_keyboard" msgid="4045394766282200132">"Klaviaturalar boshqaruvi"</string>
-    <string name="text_to_speech_settings" msgid="811985746199507343">"Matnni nutqqa aylantirish"</string>
-    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Asosiy vosita"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Matnni nutqqa aylantirish vositasi"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Standart sintezator"</string>
     <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Joriy sintezator"</string>
     <string name="tts_speech_rate" msgid="4512944877291943133">"Nutq tezligi"</string>
     <string name="tts_pitch" msgid="2389171233852604923">"Ohang"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Standart bildirishnoma tovushi"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standart signal"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Saqlash"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Signal tovushlari"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Rington, bildirishnoma, signal"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Yorqinlik"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Ekran yorqinligini past salqin muhitga moslash"</string>
     <string name="units_settings" msgid="402325305096925886">"Birliklar"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Tezlik"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Masofa"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Barcha ilovalar"</string>
     <string name="default_applications" msgid="1558183275638697087">"Birlamchi ilovalar"</string>
     <string name="app_permissions" msgid="32799922508313948">"Ilovalar uchun ruxsatlar"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Ruxsat berilgan ilovalar (<xliff:g id="APPS">%1$s</xliff:g>)"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Ilovalarning maʼlumotlaringizga kirish ruxsatini boshqarish"</string>
     <string name="applications_settings" msgid="794261395191035632">"Ilova haqida"</string>
     <string name="force_stop" msgid="2153183697014720520">"Majburan to‘xtatish"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Majburan toʻxtatilsinmi?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Oʻchirib tashlash"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Agar bu ilovani faolsizlantirsangiz, Android va boshqa ilovalar bundan buyon kutilganidek ishlamasligi mumkin."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Ilovani faolsizlantirish"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Bu foydaluvchi uchun oʻrnatilmagan"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Bu profilga oʻrnatilmagan"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Ruxsatlar"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Bildirishnomalar"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Xotira va kesh"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiyasi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hech qanday ruxsat berilmagan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hech qanday ruxsat so‘ralmagan"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ishlatilmagan ilovalar"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta ishlatilmagan ilova</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta ishlatilmagan ilova</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Ruxsatlarni olib tashlash va joy tozalash"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s ichki xotirada"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Trafik sarfi"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ilova sarflagan trafik"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Har safar soʻralsin"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Bu ilovada ochilmasin"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Mos havolalar"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Ilovalar"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Yaqinda ochilgan ilovalar"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Barcha %1$d ta ilovani ochish"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Ruxsatlar menejeri"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Ilovalarning maʼlumotlaringizga kirish ruxsatini boshqarish"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Assistent va boshqa ilovalarga"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Tizim va boshqa sozlamalarga"</string>
     <string name="special_access" msgid="5730278220917123811">"Ilovalar uchun maxsus ruxsatlar"</string>
     <string name="show_system" msgid="4401355756969485287">"Tizimga oid jarayonlar"</string>
     <string name="hide_system" msgid="8845453295584638040">"Tizimga oid jarayonlarni berkitish"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Tizim ilovalarini yashirish"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"Tizim sozlamalarini almashtirish"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Bu ruxsatnoma ilovaga tizim sozlamalarini oʻzgaritish uchun ruxsat beradi."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Bildirishnomalarga ruxsat"</string>
@@ -345,7 +370,7 @@
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Agar <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> uchun bildirishnomalar ruxsati faolsizlantirilganda, Bezovta qilinmasin ruxsati ham faolsizlantirilishi mumkin."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Ha"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Bekor qilish"</string>
-    <string name="premium_sms_access_title" msgid="1409118461646148686">"Pulli SMS yuborish"</string>
+    <string name="premium_sms_access_title" msgid="1409118461646148686">"Pulli SMS xabarlarga ruxsat"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"SMS uchun sizdan haq olinishi va operatorga qoʻshimcha to‘lov amalga oshirilishi mumkin. Agar ilova uchun ruxsatnoma taqdim etsangiz, oʻsha ilovadan SMS yuborishingiz mumkin boʻladi."</string>
     <string name="usage_access_title" msgid="7153427122072303254">"Foydalanish tarixiga kirish"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"Foydalanish tarixiga kirish huquqi qanday ilovalardan va qancha muddatda foydalanishingiz, shuningdek, tarmoq operatori, til va boshqa parametrlarni kuzatish imkonini beradi."</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hech qanday joylashuvga oid talablar olinmagan"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Ilovalar uchun ruxsatlar"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Joylashuv axborotiga asoslangan xizmatlar"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Geolokatsiyani yoqish"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Tizim"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Tizimni yangilash"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Kengaytirilgan"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Tizim haqida, huquqiy axborot, asliga qaytarish va hokazo"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versiyasi"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android tizim xavfsizligi yangilanishi"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Model va qurilma"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Quyidagi sozlamalar asliga qaytariladi:\n\n "<li>"Faolsizlantirilgan ilovalar"</li>\n" "<li>"Faolsizlantirilgan ilovalarning bildirishnomalari"</li>\n" "<li>"Muayyan amallar uchun birlamchi ilovalar"</li>\n" "<li>"Fonda internetdan foydalanishga nisbatan cheklovlar"</li>\n" "<li>"Ruxsatlar uchun barcha cheklovlar"</li>\n\n"Ilovalarga tegishli ma’lumotlar saqlanib qoladi."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"OK"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Ilova sozlamalari asliga qaytarildi"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Barcha ma’lumotlarni tozalash (zavod sozlamalarini tiklash)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Bunda avtomobilning bosh qurilmasidagi barcha axborot, jumladan, quyidagilar tozalab tashlanadi:\n\n"<li>"Google hisobingiz"</li>\n<li>"Tizim va ilovaga oid axborot hamda sozlamalar"</li>\n<li>"Yuklab olingan ilovalar"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Siz hozir tizimga quyidagi hisoblardan kirgansiz:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu avtomobilda boshqa foydalanuvchilar ham bor."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Avtomobilni asliga qaytarish"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Asliga qaytarilsinmi?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Barcha shaxsiy maʼlumotlaringiz va yuklab olingan ilovalar oʻchirib tashlansinmi? Bu amalni ortga qaytarish imkonsiz!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hammasini tozalash"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Tozalanmoqda"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Kutib turing..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Barcha axborotni tozalash (zavod sozlamalarini tiklash)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Axborot-hordiq tizimidagi barcha profillar va maʼlumotlarni tozalash"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Bunda avtomobil axborot-hordiq tizimining barcha maʼlumotlari, jumladan, quyidagilar tozalab tashlanadi:\n\n"<li>"Google hisobingiz"</li>\n<li>"Tizim va ilovaga oid axborot hamda sozlamalar"</li>\n<li>"Yuklab olingan ilovalar"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Siz hozir tizimga quyidagi hisoblardan kirgansiz:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Bu avtomobilda boshqa profillar ham bor."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Hamma narsani tozalash"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Hamma narsa tozalansinmi?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Bunda barcha shaxsiy profil maʼlumotlaringiz, hisoblaringiz va axborot-hordiq tizimida yuklab olingan ilovalar oʻchib ketadi.\n\nBu amalni ortga qaytara olmaysiz."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Hammasini tozalash"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Tozalanmoqda"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Kutib turing…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Sana va vaqt"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Sana, vaqt, vaqt zonasi, &amp; formatlarini o‘rnatish"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Avtomatik sana va vaqt"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Administrator sifatida kirgansiz"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Barcha administrator ruxsatlari"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Administrator sifatida tayinlash"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Bu foydalanuvchi boshqa foydalanuvchilarni, jumladan, administratorlarni o‘chirib tashlashi hamda tizim sozlamalarini asliga qaytarishi mumkin."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Bu profil administratorlar kabi boshqa profillarni oʻchirib tashlaydi va tizimni zavod sozlamalariga qaytarishi mumkin."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Bu amalni ortga qaytarish imkonsiz."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Ha, administrator sifatida tayinlansin"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Yangi foydalanuvchilar yaratish"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Yangi profillar yaratish"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Chaqiruvlarni amalga oshirish"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Avtomobil interneti orqali SMS"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Yangi ilovalar o‘rnatish"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ilovalarni o‘chirib tashlash"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Foydalanuvchi"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yangi foydalanuvchi"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Foydalanuvchi qo‘shilsinmi?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yangi profil qo‘shilgach, uni sozlash lozim."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limitga yetib keldi"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ta foydalanuvchi yaratish mumkin.</item>
-      <item quantity="one">Faqat bitta foydalanuvchi yaratish mumkin.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Profil kiritish"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Yangi profil"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Yangi profil kiritilsinmi?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Yangi profil kiritilgach, uni sozlash lozim."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Istalgan profil boshqa profillar ilovalarini yangilashi mumkin."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Boshqa profil kiritish imkonsiz"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Faqat <xliff:g id="COUNT">%d</xliff:g> ta profil yaratish mumkin.</item>
+      <item quantity="one">Faqat bitta profil yaratish mumkin.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Yangi foydalanuvchi yaratilmadi"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Olib tashlansinmi?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Foydalanuvchi olib tashlanmadi."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Yangi profil yaratilmadi"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Bu profil oʻchirilsinmi?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Bu profildagi barcha ilova va maʼlumotlar oʻchib ketadi"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Profil oʻchirilmadi"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Profillar almashtirilsa yoki transport vositasi qayta ishga tushirilsa bu profil oʻchirib tashlanadi."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Yopish"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Qayta urinish"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Olib tashlansinmi?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu avtomobil uchun oxirgi foydalanuvchi olib tashlangandan keyin yangi administrator yaratiladi."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu foydalanuvchiga aloqador barcha ma’lumotlar, sozlamalar va ilovalar o‘chirib tashlanadi. Tizimni qaytadan sozlashingiz lozim bo‘ladi."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Oxirgi qolgan profil oʻchirilsinmi?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Bu avtomobilda oxirgi qolgan profil oʻchirilsa, undagi barcha maʼlumotlar, sozlamalar va ilovalar oʻchib ketadi."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Tiklanganidan keyin yangi profilni sozlash mumkin."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Yangi adminisratorni tanlang"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Kamida bitta administrator lozim. Bunisini olib tashlasangiz, o‘rniga boshqasini tayinlang."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Administratorni tanlang"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ism"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sozlanmagan"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Foydalanuvchi nomini tahrirlash"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Profil nomini tahrirlash"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Maydon toʻldirilishi shart."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Kiritilgan foydalanuvchi nomi xato."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Yaroqsiz profil nomi kiritildi."</string>
     <string name="users_list_title" msgid="770764290290240909">"Foydalanuvchilar"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Profillar"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s uchun ruxsatlar berildi"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Xotira"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Musiqa va audio"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Audio fayllar"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Hisoblanmoqda…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Ilova hajmi"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Foydalanuvchi maʼlumotlari"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Profil axboroti"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Kesh"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Jami"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Xotirani tozalash"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Sinxronizatsiyani bekor qilish"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Sinxronizatsiyada muammo bor. Tez orada qayta tiklanadi."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Maxfiylik"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Avtomobildagi maʼlumotlar"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Geolokatsiyaga ruxsat bor ilovalarni boshqarish"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Mikrofon"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Mikrofonga ruxsati bor ilovalarni boshqarish"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Avtomobildagi maʼlumotlar"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Avtomobilda saqlangan axborot va harakatlarni boshqarish"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Profilimni oʻchirish"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Axborot-hordiq tizimidan profil va hisoblarni oʻchirib tashlash"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Profilingizda bu amal ishlamaydi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Xavfsizlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran qulfi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Hech qanday"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Ekran qulfi olib tashlansinmi?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Bu hammaga hisobingizga kirish imkonini beradi"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Profil qulfi"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Avtomatik qulfdan chiqarishni sozlash"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"PIN kodni kiriting"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Parolni kiriting"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Xavfsizlik uchun PIN kod o‘rnating"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"PIN kod maksimum <xliff:g id="NUMBER">%d</xliff:g> ta raqamli bo‘lsin"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"PIN kod faqat 0-9 raqamlaridan iborat bo‘lishi lozim."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Qurilma administratori oxirgi PIN koddan yana foydalanishga ruxsat bermaydi"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Oddiy PIN kodlar AT admini tomonidan bloklangan. Murakkabroq PIN kod tanlang."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Oddiy PIN kodlar AT admini tomonidan bloklangan. Murakkabroq PIN kod tanlang."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Parol yaroqsiz belgidan iborat bo‘lmasligi lozim."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Parol yaroqsiz, kamida 4 ta belgi kiriting"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Qurilma administratori yaqinda foydalanilgan paroldan yana foydalanishga ruxsat bermaydi"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Parol saqlanmadi"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Oddiy parollar AT admini tomonidan bloklangan. Murakkabroq parol tanlang."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Oddiy parollar AT admini tomonidan bloklangan. Murakkabroq parol tanlang."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Oshib boruvchi, kamayib boruvchi yoki qaytarilgan ketma-ket raqamlarga ruxsat berilmaydi."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran qulfi parametrlari"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> kun oldin"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter tugmasi"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Demodan chiqish"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo rejimdan chiqing"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bunda demo hisob o‘chirib tashlanadi va tizim zavod sozlamalariga qaytariladi. Barcha foydalanuvchi ma’lumotlari tozalab tashlanadi."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Bunda demo hisob oʻchirib tashlanadi va tizim zavod sozlamalariga qaytariladi. Barcha profil maʼlumotlari tozalab tashlanadi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan chiqish"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"YOPISH"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Avtomobilda harakatlanayotganda bu funksiya ishlamaydi"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Avtomobilda harakatlanayotganda foydalanuvchi kiritilmaydi"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Avtomobilda harakatlanayotganda profil kiritilmaydi"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Qidiruv"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Assistent va ovoz"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Assistent ilovasi"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Ekrandagi matndan foydalanish"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Assistent uchun ekrandagi kontentni ochishga ruxsat berish"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Skrinshotdan foydalanish"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Assistent uchun ekrandagi rasmni ochishga ruxsat berish"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Yaqinda yuborilgan"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Barcha ilovalar"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Profillar va hisoblar"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Boshqa profillarni boshqarish"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Profil kiritish"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Bu profilni oʻchirish"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Profil kiritish"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 0db922c..400958e 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Màn hình"</string>
     <string name="brightness" msgid="2919605130898772866">"Độ sáng"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Độ sáng thích ứng"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Tối ưu hóa độ sáng cho ánh sáng có sẵn"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Điều chỉnh độ sáng của màn hình theo môi trường"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Chế độ ánh sáng đêm đang bật"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"màn hình, màn hình cảm ứng"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"màn hình mờ, màn hình cảm ứng, pin"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"màn hình mờ, màn hình cảm ứng, pin"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"làm mờ màn hình, ban đêm, phủ màu"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Chế độ ban đêm"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Mạng và Internet"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Mạng di động"</string>
@@ -37,8 +33,8 @@
     </plurals>
     <string name="mobile_network_active_sim" msgid="1901674954229832811">"Đang hoạt động/SIM"</string>
     <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Không hoạt động/SIM"</string>
-    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Đang hoạt động / Đã tải SIM xuống"</string>
-    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Không hoạt động / Đã tải SIM xuống"</string>
+    <string name="mobile_network_active_esim" msgid="5864100786496761032">"Đang hoạt động/Đã tải SIM xuống"</string>
+    <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Không hoạt động/Đã tải SIM xuống"</string>
     <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Thêm"</string>
     <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dữ liệu di động"</string>
     <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Sử dụng dữ liệu qua mạng di động"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Đặt cảnh báo cho mức sử dụng dữ liệu"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Đặt giới hạn cho mức sử dụng dữ liệu"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Đặt"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Mạng OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Đã sử dụng %1$d MB %2$s – %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Kết nối với mạng khác"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Lựa chọn ưu tiên về mạng"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Đang bật Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Đang tắt Wi‑Fi…"</string>
@@ -93,8 +93,10 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Không kết nối được với mạng"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Thêm mạng"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Kết nối"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Đang kết nối…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Không có mạng trong phạm vi"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mật khẩu"</string>
-    <string name="wifi_show_password" msgid="8423293211933521097">"Hiện mật khẩu"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"Hiển thị mật khẩu"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Vui lòng nhập một tên mạng"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Tên mạng"</string>
     <string name="wifi_ssid_hint" msgid="3170608752313710099">"Nhập SSID"</string>
@@ -104,7 +106,7 @@
     <string name="wifi_speed" msgid="1650692446731850781">"Tốc độ liên kết"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Tần số"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Địa chỉ IP"</string>
-    <string name="show_password" msgid="2074628020371139240">"Hiện mật khẩu"</string>
+    <string name="show_password" msgid="2074628020371139240">"Hiển thị mật khẩu"</string>
     <string name="default_network_name_summary" msgid="8148402439232464276">"Nhập tên mạng"</string>
     <string name="default_password_summary" msgid="8789594645836902982">"Nhập mật khẩu"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
@@ -166,7 +168,7 @@
     <string name="progress_scanning" msgid="7191583064717479795">"Đang tìm kiếm"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
     <string name="bluetooth_device" msgid="3178478829314083240">"Thiết bị chưa có tên"</string>
-    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Thiết bị đã ghép nối"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Thiết bị được ghép nối"</string>
     <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Ghép nối thiết bị mới"</string>
     <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth sẽ bật để ghép nối"</string>
     <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Ngắt kết nối thiết bị?"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Một ứng dụng muốn hiển thị đầu giải trí của bạn với các thiết bị Bluetooth khác trong <xliff:g id="TIMEOUT">%1$d</xliff:g> giây."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g> muốn bật Bluetooth và hiển thị đầu giải trí của bạn với các thiết bị khác trong <xliff:g id="TIMEOUT">%2$d</xliff:g> giây."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Một ứng dụng muốn bật Bluetooth và hiển thị đầu giải trí của bạn với các thiết bị khác trong <xliff:g id="TIMEOUT">%1$d</xliff:g> giây."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Hiển thị dưới tên %1$s trên các thiết bị khác"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Thiết bị của tôi"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Từng được kết nối"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"Đã kết nối %1$s"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"Đã ngắt kết nối %1$s"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Yêu cầu ghép nối Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ghép nối và kết nối"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Mã ghép nối Bluetooth"</string>
@@ -226,8 +233,12 @@
     <string name="alarm_volume_title" msgid="840384014895796587">"Báo thức"</string>
     <string name="ringtone_title" msgid="8370531086214517972">"Nhạc chuông điện thoại"</string>
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Âm thanh thông báo mặc định"</string>
-    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Âm thanh chuông báo mặc định"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Âm thanh báo thức mặc định"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Lưu"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Âm thanh cảnh báo"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Nhạc chuông, thông báo, báo thức"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Độ sáng"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Điều chỉnh màn hình trong điều kiện ánh sáng yếu"</string>
     <string name="units_settings" msgid="402325305096925886">"Đơn vị"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Tốc độ"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Khoảng cách"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"Hiển thị tất cả các ứng dụng"</string>
     <string name="default_applications" msgid="1558183275638697087">"Ứng dụng mặc định"</string>
     <string name="app_permissions" msgid="32799922508313948">"Quyền ứng dụng"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Các ứng dụng đang dùng <xliff:g id="APPS">%1$s</xliff:g>"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Kiểm soát quyền truy cập của ứng dụng vào dữ liệu của bạn"</string>
     <string name="applications_settings" msgid="794261395191035632">"Thông tin ứng dụng"</string>
     <string name="force_stop" msgid="2153183697014720520">"Buộc dừng"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Buộc dừng?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Gỡ cài đặt"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Nếu bạn tắt ứng dụng này, Android và các ứng dụng khác có thể không còn hoạt động như dự kiến."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Tắt ứng dụng"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Chưa cài đặt cho người dùng này"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Chưa cài đặt cho hồ sơ này"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Quyền"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Thông báo"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Bộ nhớ và bộ nhớ đệm"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Phiên bản: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Chưa được cấp quyền nào"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Không yêu cầu quyền"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ứng dụng không dùng đến"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ứng dụng không dùng đến</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ứng dụng không dùng đến</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Xóa quyền và giải phóng dung lượng"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s trong bộ nhớ trong"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Mức sử dụng dữ liệu"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Sử dụng dữ liệu ứng dụng"</string>
@@ -321,7 +338,7 @@
     <string name="autofill_add_service" msgid="6413893366443609951">"Thêm dịch vụ"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"Mở đường liên kết"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Ứng dụng đã cài đặt"</string>
-    <string name="domain_urls_summary_none" msgid="3077803215088293183">"Không mở các đường liên kết được hỗ trợ"</string>
+    <string name="domain_urls_summary_none" msgid="3077803215088293183">"Không mở các liên kết được hỗ trợ"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"Mở <xliff:g id="DOMAIN">%s</xliff:g>"</string>
     <string name="domain_urls_summary_some" msgid="5523153458016701725">"Mở <xliff:g id="DOMAIN">%s</xliff:g> và các URL khác"</string>
     <string name="app_launch_title" msgid="3442601467010363057">"Mở theo mặc định"</string>
@@ -329,19 +346,27 @@
     <string name="auto_launch_disable_text" msgid="3595315315092716391">"Chưa đặt làm mặc định."</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"Bạn đã chọn chạy ứng dụng này theo mặc định cho một số hành động."</string>
     <string name="auto_launch_reset_text" msgid="590439611312092392">"Xóa tùy chọn mặc định"</string>
-    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Mở các đường liên kết được hỗ trợ"</string>
+    <string name="app_launch_open_domain_urls_title" msgid="4705344946367759393">"Mở các liên kết được hỗ trợ"</string>
     <string name="app_link_open_always" msgid="5783167184335545230">"Mở trong ứng dụng này"</string>
     <string name="app_link_open_ask" msgid="7242075065136237456">"Luôn hỏi"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Không mở trong ứng dụng này"</string>
-    <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Các đường liên kết được hỗ trợ"</string>
+    <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Các liên kết được hỗ trợ"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Ứng dụng"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Mới mở gần đây"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Xem toàn bộ %1$d ứng dụng"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Trình quản lý quyền"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Kiểm soát quyền truy cập của ứng dụng vào dữ liệu của bạn"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Dành cho Trợ lý và các ứng dụng khác"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Dành cho hệ thống và các chế độ cài đặt khác"</string>
     <string name="special_access" msgid="5730278220917123811">"Quyền truy cập đặc biệt"</string>
     <string name="show_system" msgid="4401355756969485287">"Hiển thị hệ thống"</string>
     <string name="hide_system" msgid="8845453295584638040">"Ẩn hệ thống"</string>
-    <string name="modify_system_settings_title" msgid="4596320571562433972">"Sửa đổi các chế độ cài đặt hệ thống"</string>
-    <string name="modify_system_settings_description" msgid="5295023124419592452">"Quyền này cho phép ứng dụng sửa đổi các chế độ cài đặt hệ thống."</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Ẩn các ứng dụng hệ thống"</string>
+    <string name="modify_system_settings_title" msgid="4596320571562433972">"Sửa đổi các tùy chọn cài đặt hệ thống"</string>
+    <string name="modify_system_settings_description" msgid="5295023124419592452">"Quyền này cho phép ứng dụng sửa đổi các tùy chọn cài đặt hệ thống."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Quyền truy cập thông báo"</string>
-    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Cho phép <xliff:g id="SERVICE">%1$s</xliff:g> truy cập thông báo?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> có thể đọc tất cả các thông báo, bao gồm cả thông tin cá nhân như tên của người liên hệ và nội dung của thông báo mà bạn nhận được. Ứng dụng này cũng có thể bỏ qua thông báo hoặc kích hoạt các nút thao tác trong những thông báo đó.\n\nĐiều này cũng sẽ cho phép ứng dụng bật hoặc tắt chế độ Không làm phiền và thay đổi chế độ cài đặt có liên quan."</string>
+    <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Cấp quyền truy cập thông báo cho <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
+    <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> có thể đọc tất cả các thông báo, bao gồm cả thông tin cá nhân như tên liên hệ và nội dung của thông báo mà bạn nhận được. Dịch vụ này cũng có thể bỏ qua thông báo hoặc kích hoạt các nút hành động trong các thông báo đó.\n\nĐiều này cũng sẽ cho phép ứng dụng bật hoặc tắt chế độ Không làm phiền và thay đổi các tùy chọn cài đặt có liên quan."</string>
     <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"Nếu bạn tắt quyền truy cập thông báo của <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, thì quyền truy cập chế độ Không làm phiền cũng có thể bị tắt."</string>
     <string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Tắt"</string>
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Hủy"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Không có yêu cầu nào gần đây về vị trí"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Quyền cấp ứng dụng"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Dịch vụ vị trí"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Sử dụng vị trí"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Hệ thống"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Bản cập nhật hệ thống"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Nâng cao"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Thông tin thiết bị, thông tin pháp lý, đặt lại, v.v."</string>
     <string name="firmware_version" msgid="8491753744549309333">"Phiên bản Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Cấp bản vá bảo mật của Android"</string>
     <string name="hardware_info" msgid="3973165746261507658">"Kiểu máy và phần cứng"</string>
@@ -411,25 +441,26 @@
     <string name="reset_esim_desc" msgid="1437276625485586740">"Thao tác này sẽ không hủy gói dịch vụ của bạn."</string>
     <string name="reset_esim_error_title" msgid="7245109418130525492">"Không thể đặt lại eSIM"</string>
     <string name="reset_network_select" msgid="2433825874868038739">"Chọn mạng"</string>
-    <string name="reset_network_button_text" msgid="8374174455632765033">"Đặt lại chế độ cài đặt"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Đặt lại các tùy chọn cài đặt"</string>
     <string name="reset_network_confirm_title" msgid="5255502723840197663">"Bạn có muốn đặt lại không?"</string>
     <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Bạn có muốn đặt lại tất cả cài đặt mạng không? Bạn không thể hoàn tác hành động này!"</string>
-    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Đặt lại chế độ cài đặt"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Đặt lại các tùy chọn cài đặt"</string>
     <string name="reset_network_complete_toast" msgid="3804108209431416865">"Đã đặt lại cài đặt mạng"</string>
     <string name="reset_app_pref_title" msgid="5855420038951743992">"Đặt lại các lựa chọn ưu tiên về ứng dụng?"</string>
-    <string name="reset_app_pref_desc" msgid="579392665146962149">"Thao tác này sẽ đặt lại tất cả các lựa chọn ưu tiên cho:\n\n"<li>"Ứng dụng bị tắt"</li>\n<li>"Thông báo ứng dụng bị tắt"</li>\n<li>"Ứng dụng mặc định cho các thao tác"</li>\n<li>"Giới hạn dữ liệu nền cho ứng dụng"</li>\n<li>"Bất kỳ giới hạn về quyền nào"</li>\n\n"Bạn sẽ không mất bất kỳ dữ liệu ứng dụng nào."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Thao tác này sẽ đặt lại tất cả tùy chọn cho:\n\n"<li>"Ứng dụng bị tắt"</li>\n<li>"Thông báo ứng dụng bị tắt"</li>\n<li>"Ứng dụng mặc định cho các thao tác"</li>\n<li>"Giới hạn dữ liệu nền cho ứng dụng"</li>\n<li>"Bất kỳ giới hạn về quyền nào"</li>\n\n"Bạn sẽ không mất bất kỳ dữ liệu ứng dụng nào."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Đặt lại ứng dụng"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Đã đặt lại tùy chọn ứng dụng"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Xóa mọi dữ liệu (đặt lại về trạng thái ban đầu)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Thao tác này sẽ xóa tất cả dữ liệu trong hệ thống giải trí trên xe của bạn, bao gồm:\n\n"<li>"Tài khoản Google của bạn"</li>\n<li>"Dữ liệu cùng với các tùy chọn cài đặt của ứng dụng và hệ thống"</li>\n<li>"Ứng dụng đã tải xuống"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Bạn hiện đã đăng nhập vào các tài khoản sau:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Có người dùng khác trên phương tiện này."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Đặt lại phương tiện"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Bạn có muốn đặt lại không?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Xóa tất cả thông tin cá nhân và ứng dụng đã tải xuống của bạn? Bạn không thể hủy thao tác này!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Xóa mọi thứ"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Đang xóa"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vui lòng chờ..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Xóa mọi dữ liệu (đặt lại về trạng thái ban đầu)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Xóa toàn bộ dữ liệu và hồ sơ khỏi hệ thống thông tin giải trí này"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Thao tác này sẽ xóa toàn bộ dữ liệu trong hệ thống giải trí trên xe của bạn, bao gồm:\n\n"<li>"Tài khoản Google"</li>\n<li>"Dữ liệu hệ thống, dữ liệu ứng dụng và các chế độ cài đặt"</li>\n<li>"Ứng dụng đã tải xuống"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Bạn hiện đã đăng nhập vào các tài khoản sau đây:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Có hồ sơ khác trên xe này."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Xóa toàn bộ dữ liệu"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Xóa toàn bộ dữ liệu?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Thao tác này sẽ xóa toàn bộ dữ liệu hồ sơ cá nhân, tài khoản và các ứng dụng đã tải xuống trên hệ thống thông tin giải trí này.\n\nBạn không thể hủy thao tác này sau khi đã thực hiện."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Xóa mọi thứ"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Đang xóa"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Vui lòng chờ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ngày và giờ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Đặt ngày, giờ, múi giờ và định dạng"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Ngày và giờ tự động"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Đã đăng nhập là quản trị viên"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tất cả quyền quản trị viên"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Đặt làm quản trị viên"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Người dùng này có thể xóa những người dùng, bao gồm cả các Quản trị viên khác và khôi phục cài đặt gốc hệ thống."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Hồ sơ này có thể xóa được mọi hồ sơ (bao gồm hồ sơ của các Quản trị viên khác) và đặt lại hệ thống về trạng thái ban đầu."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Không thể hoàn tác hành động này."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Có, đặt làm quản trị viên"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Tạo người dùng mới"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Tạo hồ sơ mới"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Thực hiện cuộc gọi"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Nhắn tin qua dữ liệu di động của ô tô"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Cài đặt ứng dụng mới"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Gỡ cài đặt ứng dụng"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Thêm người dùng"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Người dùng mới"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Thêm người dùng mới?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Khi bạn thêm một người dùng mới, họ cần thiết lập không gian của mình."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bất kỳ người dùng nào cũng có thể cập nhật ứng dụng cho tất cả những người dùng khác."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Đã đạt đến giới hạn người dùng"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">Bạn có thể tạo tối đa <xliff:g id="COUNT">%d</xliff:g> người dùng.</item>
-      <item quantity="one">Bạn chỉ có thể tạo một người dùng.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Thêm hồ sơ"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Hồ sơ mới"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Thêm hồ sơ mới?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Khi bạn thêm một hồ sơ mới, người sở hữu hồ sơ đó cần thiết lập không gian của họ."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Hồ sơ nào cũng có thể cập nhật ứng dụng cho mọi hồ sơ còn lại."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Đã đạt số lượng hồ sơ tối đa"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">Bạn có thể tạo tối đa <xliff:g id="COUNT">%d</xliff:g> hồ sơ.</item>
+      <item quantity="one">Chỉ có thể tạo một hồ sơ.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Không thể tạo người dùng mới"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Xóa người dùng này?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Mọi ứng dụng và dữ liệu sẽ bị xóa."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Không xóa được người dùng."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Tạo hồ sơ mới không thành công"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Xóa hồ sơ này?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Tất cả ứng dụng và dữ liệu của hồ sơ này sẽ bị xóa."</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Xóa hồ sơ không thành công."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Hồ sơ này sẽ bị xóa khi bạn chuyển sang hồ sơ khác hoặc khởi động lại xe."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Bỏ qua"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Thử lại"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Xóa người dùng cuối?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Sau khi xóa người dùng còn lại duy nhất của chiếc xe này, người dùng quản trị mới sẽ được tạo."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tất cả dữ liệu, tùy chọn cài đặt và ứng dụng liên kết với người dùng này sẽ bị xóa. Bạn sẽ cần phải thiết lập lại hệ thống."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Xóa hồ sơ cuối cùng còn lại?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Nếu bạn xóa hồ sơ duy nhất còn lại trên xe này, thì toàn bộ dữ liệu, chế độ cài đặt và ứng dụng liên kết với hồ sơ này sẽ bị xóa."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Sau khi đặt lại xong, bạn có thể thiết lập một hồ sơ mới."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Chọn quản trị viên mới"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Bạn cần chọn ít nhất một quản trị viên. Để xóa người này, hãy chọn một người thay thế."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Chọn quản trị viên"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Bạn (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Tên"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Chưa thiết lập"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Chỉnh sửa tên người dùng"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Chỉnh sửa tên hồ sơ"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Không thể để trống trường."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Tên người dùng đã nhập là không hợp lệ."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Tên hồ sơ bạn nhập không hợp lệ."</string>
     <string name="users_list_title" msgid="770764290290240909">"Người dùng"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Hồ sơ"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Quyền được cấp cho %1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Bộ nhớ"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Nhạc và âm thanh"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Tệp âm thanh"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Đang tính toán..."</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Kích thước ứng dụng"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Dữ liệu người dùng"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Dữ liệu hồ sơ"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Bộ nhớ đệm"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Tổng"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Xóa bộ nhớ"</string>
@@ -531,10 +564,10 @@
     <string name="really_remove_account_message" msgid="4296769280849579900">"Nếu bạn xóa tài khoản này, tất cả thư, danh bạ và dữ liệu khác có liên quan sẽ bị xóa khỏi thiết bị!"</string>
     <string name="remove_account_error_title" msgid="8368044943174826635">"Không xóa được tài khoản."</string>
     <string name="account_sync_title" msgid="6541844336300236915">"Đồng bộ hóa tài khoản"</string>
-    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Tính năng đồng bộ hóa đang bật đối với <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> mục"</string>
-    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Tính năng đồng bộ hóa đang bật đối với tất cả các mục"</string>
-    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Tính năng đồng bộ hóa đang tắt đối với tất cả các mục"</string>
-    <string name="sync_disabled" msgid="393531064334628258">"Tính năng đồng bộ hóa đang TẮT"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Đã bật đồng bộ hóa cho <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> mục"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Đã bật đồng bộ hóa cho tất cả các mục"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Đã tắt đồng bộ hóa cho tất cả các mục"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Đồng bộ hóa TẮT"</string>
     <string name="sync_error" msgid="6698021343089247914">"Lỗi đồng bộ hóa"</string>
     <string name="last_synced" msgid="4745124489150101529">"Đồng bộ hóa lần gần đây nhất vào <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="1237573373537382416">"Đang đồng bộ hóa…"</string>
@@ -544,13 +577,22 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Hủy đồng bộ hóa"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Tính năng đồng bộ hóa hiện đang gặp sự cố. Tính năng này sẽ sớm hoạt động trở lại."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Quyền riêng tư"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Dữ liệu trên xe"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Kiểm soát quyền truy cập của ứng dụng vào thông tin vị trí của bạn"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Micrô"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Kiểm soát quyền truy cập của ứng dụng vào micrô"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Dữ liệu trên xe"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Quản lý hoạt động và thông tin lưu trên xe này"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Xóa hồ sơ của bạn"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Xóa hồ sơ và tài khoản của bạn khỏi hệ thống thông tin giải trí này"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Bạn không thực hiện được thao tác này cho hồ sơ của mình"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Bảo mật"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Phương thức khóa màn hình"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Không"</string>
     <string name="security_lock_pattern" msgid="1174352995619563104">"Hình mở khóa"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"Mã PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Mật khẩu"</string>
-    <string name="lock_settings_picker_title" msgid="6590330165050361632">"Chọn một kiểu khóa"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"Chọn một cách khóa"</string>
     <string name="screen_lock_options" msgid="8531177937577168185">"Tùy chọn khóa"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Nhập hình mở khóa của bạn"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Xác nhận"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Xóa phương thức khóa màn hình?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Thao tác này sẽ cho phép bất cứ ai cũng có thể truy cập vào tài khoản của bạn"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Khóa hồ sơ"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Thiết lập tính năng tự động mở khóa"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Nhập mã PIN của bạn"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Nhập mật khẩu của bạn"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Để bảo mật, hãy đặt mã PIN"</string>
@@ -596,13 +640,13 @@
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Hủy"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Xác nhận"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"Mật khẩu phải chứa ít nhất 4 ký tự"</string>
-    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Mật khẩu phải chứa ít nhất <xliff:g id="COUNT">%d</xliff:g> ký tự"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Phải chứa ít nhất <xliff:g id="COUNT">%d</xliff:g> ký tự"</string>
     <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"Mã PIN phải chứa ít nhất <xliff:g id="COUNT">%d</xliff:g> chữ số"</string>
     <string name="lockpassword_password_too_long" msgid="7530214940279491291">"Chỉ được có ít hơn <xliff:g id="NUMBER">%d</xliff:g> ký tự"</string>
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Phải có ít hơn <xliff:g id="NUMBER">%d</xliff:g> chữ số"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Chỉ được chứa các chữ số từ 0 đến 9."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Quản trị viên thiết bị không cho phép dùng mã PIN gần đây"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Quản vị viên CNTT đã chặn những mã PIN phổ biến. Hãy thử mã PIN khác."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Quản vị viên CNTT đã chặn những mã PIN phổ biến. Hãy thử mã PIN khác."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Mật khẩu này không được bao gồm ký tự không hợp lệ."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Mật khẩu không hợp lệ, phải có ít nhất 4 ký tự."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Quản trị viên thiết bị không cho phép sử dụng mật khẩu gần đây"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Lỗi khi lưu mật khẩu"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Quản trị viên CNTT đã chặn những mật khẩu phổ biến. Hãy thử mật khẩu khác."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Quản trị viên CNTT đã chặn những mật khẩu phổ biến. Hãy thử mật khẩu khác."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Không cho phép thứ tự chữ số tăng dần, giảm dần hoặc lặp lại."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Tùy chọn phương thức khóa màn hình"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ngày trước"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Phím Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Thoát chế độ demo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Thoát chế độ demo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Thao tác này sẽ xóa tài khoản demo và thiết lập lại dữ liệu ban đầu cho hệ thống. Tất cả dữ liệu người dùng sẽ bị mất."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Thao tác này sẽ xóa tài khoản minh họa và đặt lại dữ liệu hệ thống về trạng thái ban đầu. Bạn sẽ mất toàn bộ dữ liệu hồ sơ."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Thoát chế độ demo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"BỎ QUA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Bạn không sử dụng được tính năng này khi đang lái xe"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Không thể thêm người dùng khi đang lái xe"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Không thể thêm hồ sơ khi đang lái xe"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Tìm kiếm"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Trợ lý và Voice"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Ứng dụng trợ lý"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Sử dụng văn bản trên màn hình"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Cho phép ứng dụng trợ lý truy cập vào nội dung trên màn hình"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Sử dụng ảnh chụp màn hình"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Cho phép ứng dụng trợ lý truy cập vào ảnh chụp màn hình"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Đã gửi gần đây"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Tất cả ứng dụng"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Hồ sơ và tài khoản"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Quản lý các hồ sơ khác"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Thêm hồ sơ"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Xóa hồ sơ này"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Thêm hồ sơ"</string>
 </resources>
diff --git a/res/values-w1400dp/config.xml b/res/values-w1400dp/config.xml
new file mode 100644
index 0000000..d13c504
--- /dev/null
+++ b/res/values-w1400dp/config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<resources>
+    <bool name="config_global_force_single_pane">false</bool>
+    <string name="config_homepage_fragment_class" translatable="false">com.android.car.settings.bluetooth.BluetoothSettingsFragment</string>
+    <bool name="config_top_level_enable_chevrons">false</bool>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 5944f62..9737f24 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"显示"</string>
     <string name="brightness" msgid="2919605130898772866">"亮度"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"自动调节亮度"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"根据环境光线情况优化亮度"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"根据环境调节屏幕亮度"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"“护眼模式”已开启"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"屏幕, 触摸屏"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"屏幕变暗, 调暗屏幕, 触摸屏, 电池"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"屏幕变暗, 调暗屏幕, 触摸屏, 电池"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"屏幕变暗, 夜间, 色调"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜间模式"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"网络和互联网"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"移动网络"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"设置流量用量警告"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"设置流量使用上限"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"设置"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"原始设备制造商 (OEM) 网络"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"%2$s到 %3$s期间使用了 %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"加入其他网络"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"网络偏好设置"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WLAN"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在开启 WLAN…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在关闭 WLAN…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"无法连接到网络"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"添加网络"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"连接"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"正在连接…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"网络不在范围内"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密码"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"显示密码"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"请输入网络名称"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"某个应用请求让其他蓝牙设备在 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒内可检测到您的主机。"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"<xliff:g id="APP_NAME">%1$s</xliff:g>请求开启蓝牙,以便其他设备在 <xliff:g id="TIMEOUT">%2$d</xliff:g> 秒内可检测到您的主机。"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"某个应用请求开启蓝牙,以便其他设备在 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒内可检测到您的主机。"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"对其他设备显示为“%1$s”"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"我的设备"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"之前连接过的设备"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"已连接“%1$s”"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"已断开与“%1$s”的连接"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"蓝牙配对请求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配对和连接"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"蓝牙配对码"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"默认通知提示音"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"默认闹钟提示音"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"保存"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"提示音"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"铃声、通知、闹钟"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"亮度"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"光线较弱时调节屏幕"</string>
     <string name="units_settings" msgid="402325305096925886">"单位"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"速度"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"距离"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"显示所有应用"</string>
     <string name="default_applications" msgid="1558183275638697087">"默认应用"</string>
     <string name="app_permissions" msgid="32799922508313948">"应用权限"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"正在使用<xliff:g id="APPS">%1$s</xliff:g>的应用"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"控制应用对您的数据的使用权限"</string>
     <string name="applications_settings" msgid="794261395191035632">"应用信息"</string>
     <string name="force_stop" msgid="2153183697014720520">"强行停止"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"要强行停止吗?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"卸载"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果您停用此应用,Android 和其他应用可能会无法正常运行。"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用应用"</string>
-    <string name="not_installed" msgid="4218816013370552746">"尚未为此用户安装"</string>
+    <string name="not_installed" msgid="4163454337822508007">"没有为此个人资料安装该应用"</string>
     <string name="permissions_label" msgid="2701446753515612685">"权限"</string>
     <string name="notifications_label" msgid="6586089149665170731">"通知"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"存储空间和缓存"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本:%1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"未授予任何权限"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"未请求任何权限"</string>
+    <string name="unused_apps" msgid="648471933781010395">"未使用的应用"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 个未使用的应用</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 个未使用的应用</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"撤消权限并释放空间"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"将使用%s的内部存储空间"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"流量使用情况"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"应用的流量使用情况"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"每次都询问"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"不要在此应用中打开"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"支持的链接"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"应用"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"最近打开过的应用"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"查看全部 %1$d 个应用"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"权限管理器"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"控制应用对您的数据的使用权限"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"针对 Google 助理和更多应用"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"针对系统和其他设置"</string>
     <string name="special_access" msgid="5730278220917123811">"特殊应用权限"</string>
     <string name="show_system" msgid="4401355756969485287">"显示系统程序"</string>
     <string name="hide_system" msgid="8845453295584638040">"隐藏系统程序"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"隐藏系统应用"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"修改系统设置"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"此权限可让应用修改系统设置。"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"通知访问权限"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近没有任何位置信息请求"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"应用级权限"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"位置信息服务"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"使用位置信息"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"系统"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"系统更新"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"高级"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"关于、法律信息、重置等"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 安全补丁程序级别"</string>
     <string name="hardware_info" msgid="3973165746261507658">"型号和硬件"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"此操作将会重置以下所有偏好设置:\n\n"<li>"已停用的应用"</li>\n<li>"已停用的应用通知"</li>\n<li>"执行操作的默认应用"</li>\n<li>"应用的后台流量限制"</li>\n<li>"任何权限限制"</li>\n\n"您将不会丢失任何应用数据。"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重置应用"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重置应用偏好设置"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"清空所有数据(恢复出厂设置)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"这样做将会清空您车机中的所有数据,其中包括:\n\n"<li>"您的 Google 帐号"</li>\n<li>"系统与应用的数据和设置"</li>\n<li>"已下载的应用"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"您目前已登录以下帐号:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"此车辆目前还有其他用户。"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"重置车辆"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重置吗?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"要清空您的所有个人信息和下载的应用吗?此操作无法撤消!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"清空所有内容"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"正在清空"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"请稍候…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"清除所有数据(恢复出厂设置)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"清除信息娱乐系统中的所有数据和个人资料"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"如果您选择恢复出厂设置,您车辆上的信息娱乐系统中的所有数据都将被清除,包括:\n\n"<li>"您的 Google 帐号"</li>\n<li>"系统/应用数据和设置"</li>\n<li>"下载的应用"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"您目前已登录以下帐号:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"此车辆上还有其他个人资料。"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"清除所有数据"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"要清除所有数据吗?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"如果您选择重置设备,此信息娱乐系统中您的所有个人资料数据、帐号和下载的应用都将被清除。\n\n这项操作无法撤消。"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"清除所有内容"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"正在清除"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"请稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和时间"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"设置日期、时间、时区和格式"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"自动确定日期和时间"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"目前登录的是管理员帐号"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理员权限"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"指定为管理员"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"该用户将可以删除其他用户(包括其他管理员),并将系统恢复出厂设置。"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"此个人资料将能够删除其他个人资料(包括其他管理员),并能够将系统恢复出厂设置。"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"此操作无法撤消。"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"是的,指定为管理员"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"创建新用户"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"创建新的个人资料"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"拨打电话"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用汽车的移动数据收发短信"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"安装新应用"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"卸载应用"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"添加用户"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新用户"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"要添加新用户吗?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"当您添加新用户时,该用户必须设置自己的空间。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何用户均可为所有其他用户更新应用。"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"已达到用户数上限"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">您最多可以创建 <xliff:g id="COUNT">%d</xliff:g> 位用户。</item>
-      <item quantity="one">您只能创建一位用户。</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"添加个人资料"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"新的个人资料"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"要添加新的个人资料吗?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"当您添加新的个人资料时,相应用户需要设置个人空间。"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"任意个人资料都可以为所有其他个人资料更新应用。"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"已达到个人资料数量上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">您最多可以创建 <xliff:g id="COUNT">%d</xliff:g> 份个人资料。</item>
+      <item quantity="one">只能创建 1 份个人资料。</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"无法创建新用户"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要删除此用户吗?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有应用和数据都将随之删除。"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"无法删除用户。"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"未能创建新的个人资料"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"要删除此个人资料吗?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"此个人资料的所有应用和数据都将被删除"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"未能删除个人资料。"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"此个人资料将在您切换个人资料或重新发动汽车时删除。"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"关闭"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"重试"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要删除最后一位用户吗?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"删除这量车唯一的用户后,系统便会创建新的管理员用户。"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"所有与此用户关联的数据、设置以及应用都将随之删除。您将需要重新设置系统。"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"要删除这份仅剩的个人资料吗?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"如果您删除了此车辆仅剩的这份个人资料,那么与此个人资料关联的所有数据、设置和应用都将被清除。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"重置系统后,您可以设置新的个人资料。"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"选择新的管理员"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"您至少要有一位管理员。要删除现有的这位管理员,请先选择接替者。"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"选择管理员"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"您 (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名称"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"未设置"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"修改用户名"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"修改个人资料名称"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"此字段不能留空。"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"输入的用户名无效。"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"输入的个人资料名称无效。"</string>
     <string name="users_list_title" msgid="770764290290240909">"用户"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"个人资料"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"已授予%1$s的权限"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"存储空间"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"音乐和音频"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"音频文件"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"正在计算…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"应用大小"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"用户数据"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"个人资料数据"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"缓存"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"总计"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"清除存储数据"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"同步目前发生问题,将很快恢复正常。"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"隐私"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"车辆数据"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"控制应用对您的位置信息的使用权限"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"麦克风"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"控制应用对麦克风的使用权限"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"车辆数据"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"管理这辆车中保存的活动和信息"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"删除您的个人资料"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"清除信息娱乐系统中您的个人资料和帐号"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"无法对您的个人资料执行此操作"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"屏幕锁定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"无"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"确定"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"清除屏幕锁定设置"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"这样一来,任何人都能访问您的帐号"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"个人资料锁定"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"设置自动解锁"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"输入您的 PIN 码"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"输入您的密码"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"为了安全起见,请设置 PIN 码"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"必须少于 <xliff:g id="NUMBER">%d</xliff:g> 位数"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"只能包含 0-9 的数字。"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"设备管理员不允许使用最近用过的 PIN 码"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"常用 PIN 码已被您的 IT 管理员屏蔽。请尝试一个不同的 PIN 码。"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"常用 PIN 码已被您的 IT 管理员屏蔽。请尝试一个不同的 PIN 码。"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"此密码不得包含无效字符。"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"密码无效,密码必须至少包含 4 个字符。"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"设备管理员不允许使用最近用过的密码"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"保存密码时出错"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"常用密码已被您的 IT 管理员屏蔽。请尝试一个不同的密码。"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"常用密码已被您的 IT 管理员屏蔽。请尝试一个不同的密码。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不允许使用以升序、降序或重复序列进行排列的一串数字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"屏幕锁定选项"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"输入密钥"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"退出演示模式"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"退出演示模式"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"这项操作会删除演示帐号并将系统恢复出厂设置,且所有用户数据都会丢失。"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"如果您选择退出,演示帐号将被删除,并且系统将恢复出厂设置。所有个人资料数据都将会丢失。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"退出演示模式"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"关闭"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"驾车时无法使用此功能"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"驾车时无法添加用户"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"车辆行驶期间无法添加个人资料"</string>
     <string name="default_search_query" msgid="3137420627428857068">"搜索"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Google 助理和语音"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"Google 助理应用"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"使用屏幕上的文字内容"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"允许 Google 助理获取屏幕上的内容"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"使用屏幕截图"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"允许 Google 助理获取屏幕截图"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"最近发送的通知"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"所有应用"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"个人资料和帐号"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"管理其他个人资料"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"添加个人资料"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"删除此个人资料"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"添加个人资料"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 42ce4d8..b2617b5 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"螢幕"</string>
     <string name="brightness" msgid="2919605130898772866">"亮度"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"自動調校光暗"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"按環境光線優化亮度"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"根據環境調整螢幕亮度"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"已開啟「夜燈模式」"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"螢幕, 觸控螢幕"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"螢幕變暗, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"螢幕變暗, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"螢幕變暗, 夜間, 轉色"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"網絡和互聯網"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"流動網絡"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"設定數據用量警告"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"設定數據用量上限"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"設定"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"原始設備製造商 (OEM) 網絡"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"已使用 %1$d MB %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"加入其他網絡"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"網絡偏好設定"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在開啟 Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在關閉 Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"無法連接網絡"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"新增網絡"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"連線"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"正在連接…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"網絡不在覆蓋範圍內"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密碼"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"顯示密碼"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"請輸入網絡名稱"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"有應用程式要求在 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒內讓其他藍牙裝置可以偵測到汽車音響。"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」要求開啟藍牙功能,並在 <xliff:g id="TIMEOUT">%2$d</xliff:g> 秒內讓其他裝置可以偵測到汽車音響。"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"有應用程式要求開啟藍牙功能,並在 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒內讓其他裝置可以偵測到汽車音響。"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"向其他裝置顯示為「%1$s」"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"我的裝置"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"之前已連接的裝置"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"「%1$s」已連接"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"「%1$s」已解除連接"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"藍牙配對要求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配對並連線"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"藍牙配對碼"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"預設通知音效"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"預設鬧鐘音效"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"儲存"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"警示音效"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"鈴聲、通知、鬧鐘"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"亮度"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"在光線不足時調查螢幕"</string>
     <string name="units_settings" msgid="402325305096925886">"單位"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"速度"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"距離"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"顯示所有應用程式"</string>
     <string name="default_applications" msgid="1558183275638697087">"預設應用程式"</string>
     <string name="app_permissions" msgid="32799922508313948">"應用程式權限"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"使用<xliff:g id="APPS">%1$s</xliff:g>的應用程式"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"控制應用程式資料存取權"</string>
     <string name="applications_settings" msgid="794261395191035632">"應用程式資料"</string>
     <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"要強制停止應用程式嗎?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"解除安裝"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果您停用此應用程式,Android 和其他應用程式可能無法正常運作。"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用應用程式"</string>
-    <string name="not_installed" msgid="4218816013370552746">"沒有為此使用者安裝"</string>
+    <string name="not_installed" msgid="4163454337822508007">"沒有為此設定檔安裝"</string>
     <string name="permissions_label" msgid="2701446753515612685">"權限"</string>
     <string name="notifications_label" msgid="6586089149665170731">"通知"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"儲存空間與快取空間"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本:%1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"沒有授予權限"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"沒有要求權限"</string>
+    <string name="unused_apps" msgid="648471933781010395">"未使用的應用程式"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 個未使用的應用程式</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 個未使用的應用程式</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"移除權限並騰出空間"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"佔了內部儲存空間 %s"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"數據用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"應用程式數據用量"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"每次都詢問"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"不要在此應用程式開啟"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"支援連結"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"應用程式"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"最近開啟的應用程式"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"查看全部 %1$d 個應用程式"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"權限管理員"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"控制應用程式資料存取權"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"「Google 助理」及其他"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"系統及其他設定"</string>
     <string name="special_access" msgid="5730278220917123811">"特別應用程式權限"</string>
     <string name="show_system" msgid="4401355756969485287">"顯示系統"</string>
     <string name="hide_system" msgid="8845453295584638040">"隱藏系統"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"隱藏系統應用程式"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"修改系統設定"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"此權限允許應用程式修改系統設定。"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"通知存取權"</string>
@@ -347,7 +372,7 @@
     <string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"取消"</string>
     <string name="premium_sms_access_title" msgid="1409118461646148686">"付費短訊存取權"</string>
     <string name="premium_sms_access_description" msgid="7119026067677052169">"付費短訊的費用可能高昂,並會增加您流動網絡供應商帳單的款項。如果您為應用程式開放權限,將可以透過該應用程式發送付費短訊。"</string>
-    <string name="usage_access_title" msgid="7153427122072303254">"使用記錄存取權"</string>
+    <string name="usage_access_title" msgid="7153427122072303254">"使用紀錄存取權"</string>
     <string name="usage_access_description" msgid="2413168719257435422">"使用記錄存取權允許應用程式追蹤您正在使用的其他應用程式和使用頻率,以及流動網絡供應商、語言設定和其他詳情。"</string>
     <string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi 控制"</string>
     <string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi 控制允許應用程式開啟或關閉 Wi-Fi,掃瞄和連線至 Wi-Fi 網絡、新增或移除網絡,或啟動僅限本機的熱點。"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有位置資訊要求"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"應用程式層級權限"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"定位服務"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"使用位置資訊"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"進階"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"關於、法律資訊、重設及其他"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式級別"</string>
     <string name="hardware_info" msgid="3973165746261507658">"型號和硬件"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"此操作將會重設下列所有偏好設定:\n\n"<li>"已停用的應用程式"</li>\n<li>"已停用的應用程式通知"</li>\n<li>"執行操作的預設應用程式"</li>\n<li>"應用程式的背景數據限制"</li>\n<li>"任何權限限制"</li>\n\n"您將不會失去任何應用程式資料。"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重設應用程式"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重設應用程式偏好設定"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"清除所有資料 (回復原廠設定)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"此操作將清除汽車音響主機的所有資料,包括:\n\n"<li>"您的 Google 帳戶"</li>\n<li>"系統和應用程式資料及設定"</li>\n<li>"已下載的應用程式"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"您目前已登入以下帳戶:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"此汽車上還有其他使用者。"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"重設汽車"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重設嗎?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"您要清除所有個人資訊和已下載的應用程式嗎?您無法復原這項操作!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"全部清除"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"正在清除"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"請稍候…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"清除所有資料 (回復原廠設定)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"清除資訊娛樂系統的所有資料和設定檔"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"此操作將清除汽車資訊娛樂系統的所有資料,包括:\n\n"<li>"您的 Google 帳戶"</li>\n<li>"系統和應用程式資料及設定"</li>\n<li>"已下載的應用程式"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"您目前已登入以下帳戶:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"此汽車上還有其他設定檔。"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"清除所有資料"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"要清除所有資料嗎?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"此操作將清除此資訊娛樂系統上的所有個人設定檔資料、帳戶和已下載的應用程式。\n\n您無法復原此操作。"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"全部清除"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"正在清除"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"請稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和時間"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"設定日期、時間、時區和格式"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"自動設定日期和時間"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"已使用管理員身分登入"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理員權限"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"指定為管理員"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"此使用者可刪除使用者 (包括其他管理員),並可將系統回復原廠設定。"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"此設定檔可刪除設定檔 (包括其他管理員),並可將系統回復原廠設定。"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"此操作將無法復原。"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"是,指定為管理員"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"建立新使用者"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"建立新設定檔"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"撥打電話"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用汽車的流動數據傳送訊息"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"安裝新的應用程式"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"解除安裝應用程式"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"要新增使用者嗎?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新增的使用者需要自行設定個人空間。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何使用者都可以為所有其他使用者更新應用程式。"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"已達到使用者上限"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">您可以建立最多 <xliff:g id="COUNT">%d</xliff:g> 位使用者。</item>
-      <item quantity="one">只可建立一位使用者。</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"新增設定檔"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"新設定檔"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"要新增設定檔嗎?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"新增的設定檔需要自行設定個人空間。"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"任何設定檔都可以為其他所有設定檔更新應用程式。"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"已達設定檔數量上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">您可建立最多 <xliff:g id="COUNT">%d</xliff:g> 個設定檔。</item>
+      <item quantity="one">只可建立一個設定檔。</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"無法建立新使用者"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要刪除這名使用者嗎?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有應用程式和資料都會被刪除。"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"無法刪除使用者。"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"無法建立新設定檔"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"要刪除此設定檔嗎?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"這個設定檔的所有應用程式和資料都會被刪除"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"無法刪除設定檔。"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"系統將會在您切換設定檔或重新啟動車輛時刪除此設定檔。"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"關閉"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"重試"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要刪除最後一名使用者嗎?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"在刪除此汽車最後一名使用者後,將建立一名新的管理員。"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"系統將刪除與此使用者相關的所有資料、設定和應用程式。您將需要重新設定系統。"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"要刪除最後一個設定檔嗎?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"如果您刪除此汽車的最後一個設定檔,系統將清除與此設定檔關聯的所有資料、設定和應用程式。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"重設後,您可以設定新設定檔。"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"選擇新的管理員"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"您需要最少一名管理員。如要刪除這名管理員,請先選擇替代的管理員。"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"選擇管理員"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"您 (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名稱"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"未設定"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"編輯使用者名稱"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"編輯設定檔名稱"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"欄位不得留空。"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"輸入的使用者名稱無效。"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"輸入的設定檔名稱無效。"</string>
     <string name="users_list_title" msgid="770764290290240909">"使用者"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"設定檔"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"已向 %1$s 授予的權限"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"儲存空間"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"音樂和音訊"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"音訊檔案"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"正在計算…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"應用程式大小"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"使用者資料"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"設定檔資料"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"快取"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"總計"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"清除儲存空間"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步處理"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"同步處理目前發生問題,將於短時間內恢復。"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"私隱"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"車輛資料"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"控制應用程式位置資訊存取權"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"麥克風"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"控制應用程式麥克風存取權"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"車輛資料"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"管理儲存在此車輛上的活動和資料"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"刪除您的設定檔"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"清除資訊娛樂系統的設定檔和帳戶"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"您的設定檔無法執行此操作"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全性"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"螢幕鎖定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"無"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"確定"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"要移除螢幕鎖定嗎?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"這樣,任何人都能存取您的帳戶"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"設定檔鎖定"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"設定自動解鎖"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"請輸入 PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"請輸入密碼"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"為安全起見,請設定 PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"必需少於 <xliff:g id="NUMBER">%d</xliff:g> 個數字"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"只可包含數字 0-9。"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"裝置管理員不允許使用最近用過的 PIN"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"您的 IT 管理員已禁止使用常用的 PIN,請嘗試輸入另一個 PIN。"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"您的 IT 管理員已禁止使用常用的 PIN,請嘗試輸入另一個 PIN。"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"不可包含無效字元。"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"密碼無效,必須包含至少 4 個字元。"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"裝置管理員不允許使用最近用過的密碼"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"儲存密碼時發生錯誤"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"您的 IT 管理員已禁止使用常用的密碼,請嘗試輸入另一組密碼。"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"您的 IT 管理員已禁止使用常用的密碼,請嘗試輸入另一組密碼。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不可使用依遞增或遞減順序排列或重複的連續數字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"輸入密鑰"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"結束示範模式"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"結束示範模式"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"執行這項操作後,示範模式帳戶會刪除,而系統會回復原廠設定。所有使用者資料將會失去。"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"執行這項操作後,示範模式帳戶會刪除,而系統會回復原廠設定。所有個人檔案資料將會失去。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"結束示範模式"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"關閉"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"無法在駕駛時使用此功能"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"無法在駕駛時新增使用者"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"無法在駕駛時新增設定檔"</string>
     <string name="default_search_query" msgid="3137420627428857068">"搜尋"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"「Google 助理」和語音"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"「Google 助理」應用程式"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"使用螢幕上的文字"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"允許「Google 助理」存取螢幕內容"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"使用螢幕截圖"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"允許「Google 助理」存取螢幕圖片"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"最近傳送通知的應用程式"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"所有應用程式"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"設定檔和帳戶"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"管理其他設定檔"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"新增設定檔"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"刪除此設定檔"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"新增設定檔"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 959c028..9fec55e 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"螢幕"</string>
     <string name="brightness" msgid="2919605130898772866">"亮度"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"自動調整亮度"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"根據環境光源調整亮度"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"根據環境調整螢幕亮度"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"夜燈模式已開啟"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"螢幕, 觸控螢幕"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"調暗螢幕, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"調暗螢幕, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"調暗螢幕, 夜間, 色調"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"網路和網際網路"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"行動網路"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"設定數據用量警告"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"設定數據用量上限"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"設定"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"原始設備製造商 (OEM) 網路"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"從 %2$s到 %3$s使用了 %1$d MB"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"加入其他網路"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"網路偏好設定"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在開啟 Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在關閉 Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"無法連上網路"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"新增網路"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"連線"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"連線中…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"不在網路有效範圍內"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密碼"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"顯示密碼"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"請輸入網路名稱"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"某個應用程式要求開放 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒,讓其他藍牙裝置能偵測到你的資訊娛樂主機。"</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」要求開啟藍牙功能 <xliff:g id="TIMEOUT">%2$d</xliff:g> 秒,讓其他裝置能偵測到你的資訊娛樂主機。"</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"有應用程式要求開啟藍牙功能 <xliff:g id="TIMEOUT">%1$d</xliff:g> 秒,讓其他裝置能搜尋到資訊娛樂主機。"</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"在其他裝置上顯示為「%1$s」"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"我的裝置"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"先前連線的裝置"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"已連線到「%1$s」"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"已中斷與「%1$s」的連線"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"藍牙配對要求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配對並連線"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"藍牙配對碼"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"預設通知音效"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"預設鬧鐘音效"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"儲存"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"警示音效"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"鈴聲、通知和鬧鐘"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"亮度"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"將螢幕調整為適合在低光源環境中查看的亮度"</string>
     <string name="units_settings" msgid="402325305096925886">"單位"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"速度"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"距離"</string>
@@ -280,7 +291,7 @@
     <string name="all_applications" msgid="7798210477486822168">"顯示所有應用程式"</string>
     <string name="default_applications" msgid="1558183275638697087">"預設應用程式"</string>
     <string name="app_permissions" msgid="32799922508313948">"應用程式權限"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"目前使用「<xliff:g id="APPS">%1$s</xliff:g>」的應用程式"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"控管哪些應用程式可存取你的資料"</string>
     <string name="applications_settings" msgid="794261395191035632">"應用程式資訊"</string>
     <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"要強制停止嗎?"</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"解除安裝"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果你停用這個應用程式,Android 和其他應用程式可能無法正常運作。"</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用應用程式"</string>
-    <string name="not_installed" msgid="4218816013370552746">"這位使用者並未安裝"</string>
+    <string name="not_installed" msgid="4163454337822508007">"這個設定檔並未安裝本應用程式"</string>
     <string name="permissions_label" msgid="2701446753515612685">"權限"</string>
     <string name="notifications_label" msgid="6586089149665170731">"通知"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"儲存空間和快取"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本:%1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"未取得任何授權"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"未要求任何權限"</string>
+    <string name="unused_apps" msgid="648471933781010395">"未使用的應用程式"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 個未使用的應用程式</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 個未使用的應用程式</item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"移除權限並釋出空間"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s (內部儲存空間)"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"數據用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"應用程式數據用量"</string>
@@ -317,7 +334,7 @@
     <string name="app_list_preference_none" msgid="7753357799926715901">"無"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"已選取"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"小幫手將可讀取系統目前使用中的應用程式相關資訊,包括裝置畫面上顯示的資訊及應用程式內提供存取的資訊。"</string>
-    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"新增服務"</string>
     <string name="app_launch_domain_links_title" msgid="774480184927726651">"開啟連結"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"已安裝的應用程式"</string>
@@ -334,9 +351,17 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"每次都詢問"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"不要在這個應用程式中開啟"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"支援的連結"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"應用程式"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"最近開啟的應用程式"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"查看全部 %1$d 個應用程式"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"權限管理員"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"控管哪些應用程式可存取你的資料"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Google 助理和其他應用程式"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"系統和其他設定"</string>
     <string name="special_access" msgid="5730278220917123811">"特殊應用程式存取權"</string>
     <string name="show_system" msgid="4401355756969485287">"顯示系統程序"</string>
     <string name="hide_system" msgid="8845453295584638040">"隱藏系統程序"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"隱藏系統應用程式"</string>
     <string name="modify_system_settings_title" msgid="4596320571562433972">"修改系統設定"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"這項權限可讓應用程式修改系統設定。"</string>
     <string name="notification_access_title" msgid="1467340098885813473">"通知存取權"</string>
@@ -357,8 +382,13 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有任何定位要求"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"應用程式層級權限"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"定位服務"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"使用位置資訊"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"進階"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"關於、法律資訊、重設和其他設定"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式等級"</string>
     <string name="hardware_info" msgid="3973165746261507658">"型號與硬體"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"這麼做會重設下列項目的所有偏好設定:\n\n"<li>"已停用的應用程式"</li>\n<li>"已停用的應用程式通知"</li>\n<li>"執行動作的預設應用程式"</li>\n<li>"應用程式背景資料限制"</li>\n<li>"任何權限限制"</li>\n\n"你不會遺失任何應用程式資料。"</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重設應用程式"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重設應用程式偏好設定"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"清除所有資料 (恢復原廠設定)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"這麼做將會清除車輛資訊娛樂主機的所有資料,包括:\n\n"<li>"你的 Google 帳戶"</li>\n<li>"系統與應用程式的資料和設定"</li>\n<li>"已下載的應用程式"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"你目前已登入下列帳戶:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"這輛車還有其他使用者。"</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"重設車輛"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重設嗎?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"要清除所有個人資訊和已下載的應用程式嗎?這個動作無法復原!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"全部清除"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"清除中"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"請稍候…"</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"清除所有資料 (恢復原廠設定)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"清除資訊娛樂系統的所有資料和設定檔"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"這麼做會清除車輛資訊娛樂系統的所有資料,包括:\n\n"<li>"你的 Google 帳戶"</li>\n<li>"系統與應用程式的資料和設定"</li>\n<li>"已下載的應用程式"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"你目前登入了以下帳戶:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"這輛車還有其他設定檔。"</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"清除所有資料"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"要清除所有資料嗎?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"這麼做會清除資訊娛樂系統的所有個人設定檔資料、帳戶和已下載的應用程式。\n\n請注意,這項操作無法復原。"</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"全部清除"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"清除中"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"請稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和時間"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"設定日期、時間、時區及時間格式"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"自動判斷日期和時間"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"登入身分:管理員"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理員權限"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"設為管理員"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"這位使用者將可以刪除使用者 (包括其他管理員),以及將系統恢復原廠設定。"</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"這個設定檔將可刪除其他設定檔 (包括其他管理員),以及將系統恢復原廠設定。"</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"這個動作無法復原。"</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"是,設為管理員"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"建立新使用者"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"建立新設定檔"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"撥打電話"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用車輛的行動數據網路收發簡訊"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"安裝新應用程式"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"解除安裝應用程式"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"要新增使用者嗎?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新增的使用者需要自行設定個人空間。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何使用者都可以為所有其他使用者更新應用程式。"</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"已達使用者數量上限"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="other">最多可建立 <xliff:g id="COUNT">%d</xliff:g> 位使用者。</item>
-      <item quantity="one">只能建立 1 位使用者。</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"新增設定檔"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"新的設定檔"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"要新增設定檔嗎?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"當你新增使用者設定檔時,該使用者必須自行設定個人空間。"</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"任何設定檔都能為所有其他設定檔更新應用程式。"</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"設定檔數量已達上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="other">最多可以建立 <xliff:g id="COUNT">%d</xliff:g> 個設定檔。</item>
+      <item quantity="one">只能建立 1 個設定檔。</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"無法建立新的使用者設定檔"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要刪除這位使用者嗎?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有應用程式和資料都會遭到刪除。"</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"無法刪除使用者。"</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"無法建立新的設定檔"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"要刪除這個設定檔嗎?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"這個設定檔的所有應用程式和資料都會遭到刪除"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"無法刪除設定檔。"</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"這個設定檔將在你切換設定檔或重新發動車輛時刪除。"</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"關閉"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"重試"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要刪除最後一位使用者嗎?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"刪除這輛車的唯一使用者後,系統會建立新的管理員使用者。"</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"所有與這位使用者相關聯的資料、設定和應用程式都會遭到刪除。你必須重新設定系統。"</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"要刪除僅存的設定檔嗎?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"如果刪除這輛車僅存的設定檔,所有與這個設定檔相關聯的資料、設定和應用程式都會遭到清除。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"重設完成後即可設定新的設定檔。"</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"選擇新管理員"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"你必須設定至少一位管理員。如要刪除這位管理員,請先選擇新的管理員。"</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"選擇管理員"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"你 (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名稱"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"尚未設定"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"編輯使用者名稱"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"編輯設定檔名稱"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"這個欄位不能留空。"</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"輸入的使用者名稱無效。"</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"輸入的設定檔名稱無效。"</string>
     <string name="users_list_title" msgid="770764290290240909">"使用者"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"設定檔"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"已將權限授予%1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"儲存空間"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"音樂和音訊"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"音訊檔案"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"計算中…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"應用程式大小"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"使用者資料"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"設定檔資料"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"快取"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"總計"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"清除儲存空間"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步處理"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"同步處理目前發生問題,將於短時間內恢復。"</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"隱私權"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"車輛資料"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"控管哪些應用程式可存取你的位置資訊"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"麥克風"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"控管哪些應用程式可存取麥克風"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"車輛資料"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"管理這輛車儲存的活動和資訊"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"刪除你的設定檔"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"清除資訊娛樂系統的設定檔和帳戶"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"你的設定檔不支援這項操作"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全性"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"螢幕鎖定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"無"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"確定"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"要移除螢幕鎖定嗎?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"這樣一來,任何人都能存取你的帳戶"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"設定檔鎖定"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"設定自動解鎖"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"輸入 PIN 碼"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"輸入你的密碼"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"為了安全起見,請設定 PIN 碼"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"長度必須少於 <xliff:g id="NUMBER">%d</xliff:g> 個數字"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"只能包含數字 0 到 9。"</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"裝置管理員不允許使用最近用過的 PIN 碼"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"你的 IT 管理員已封鎖常見 PIN 碼,請改用其他 PIN 碼。"</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"你的 IT 管理員已封鎖常見 PIN 碼,請改用其他 PIN 碼。"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"不得包含無效字元。"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"密碼無效,至少要有 4 個字元。"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"裝置管理員不允許使用最近用過的密碼"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"儲存密碼時發生錯誤"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"你的 IT 管理員已封鎖常見密碼,請改用其他密碼。"</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"你的 IT 管理員已封鎖常見密碼,請改用其他密碼。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不得使用依遞增或遞減順序排列或是重複的數字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Enter 鍵"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"結束示範模式"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"結束示範模式"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"這項操作會刪除示範帳戶並將系統恢復原廠設定,且所有使用者資料都會遺失。"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"這麼做會刪除展示帳戶並將系統恢復原廠設定,屆時所有設定檔資料都將遺失。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"結束示範模式"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"關閉"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"開車時無法使用這項功能"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"開車時無法新增使用者"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"開車時無法新增設定檔"</string>
     <string name="default_search_query" msgid="3137420627428857068">"搜尋"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Google 助理和語音功能"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"助理應用程式"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"使用畫面中的文字"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"允許助理應用程式存取畫面的內容"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"使用螢幕截圖"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"允許助理應用程式存取螢幕截圖"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"最近傳送通知的應用程式"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"所有應用程式"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"設定檔和帳戶"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"管理其他設定檔"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"新增設定檔"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"刪除這個設定檔"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"新增設定檔"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index afc4dfb..c70db73 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -22,12 +22,8 @@
     <string name="display_settings" msgid="5325515247739279185">"Bonisa"</string>
     <string name="brightness" msgid="2919605130898772866">"Izinga lokukhanya"</string>
     <string name="auto_brightness_title" msgid="9124647862844666581">"Ukukhanya okuguqukayo"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"Lungiselela izinga lokukhanya ekukhanyeni okutholakalayo"</string>
+    <string name="auto_brightness_summary" msgid="2002570577219479702">"Lungisa ukukhanya kwesikrini sakho ngokwendawo ezungezile"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Ukukhanya kwasebusuku kuvuliwe"</string>
-    <string name="keywords_display" msgid="3978416985146943922">"isikrini, isikrini esithintwayo"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"fiphalisa isikrini, isikrini esithintwayo, ibhethri"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"fiphalisa isikrini, isikrini esithintwayo, ibhethri"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"fiphaza isikrini, ubusuku, i-tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Imodi yasebusuku"</string>
     <string name="network_and_internet" msgid="4229023630498537530">"Inethiwekhi ne-inthanethi"</string>
     <string name="mobile_network_settings" msgid="1708621113321368597">"Inethiwekhi yeselula"</string>
@@ -84,6 +80,10 @@
     <string name="data_usage_warning_editor_title" msgid="2041517150169038813">"Setha isexwayiso sokusebenziseka kwedatha"</string>
     <string name="data_usage_limit_editor_title" msgid="133468242379286689">"Setha umkhawulo wokusetshenziswa kwedatha"</string>
     <string name="usage_bytes_threshold_picker_positive_button" msgid="4625479840977965519">"Setha"</string>
+    <string name="network_and_internet_oem_network_title" msgid="6436902713696212250">"Inethiwekhi ye-OEM"</string>
+    <string name="network_and_internet_data_usage_time_range_summary" msgid="5766788098591757730">"Kusetshenziswe %1$d MB %2$s - %3$s"</string>
+    <string name="network_and_internet_join_other_network_title" msgid="7126831320010062712">"Joyina enye inethiwekhi"</string>
+    <string name="network_and_internet_network_preferences_title" msgid="2983548049081168876">"Okuncamelayo kwenethiwekhi"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"I-Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ivula i-Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Ivala i-Wi-Fi…"</string>
@@ -93,6 +93,8 @@
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Yehlulekile ukuxhuma kunethiwekhi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Yengeza inethiwekhi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Xhuma"</string>
+    <string name="wifi_connecting" msgid="1930665730621677960">"Iyaxhuma…"</string>
+    <string name="wifi_not_in_range_message" msgid="2617126307140203787">"Inethiwekhi ayikho kubanga"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Iphasiwedi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Bonisa iphasiwedi"</string>
     <string name="wifi_no_network_name" msgid="6819604337231313594">"Sicela ufake igama lenethiwekhi"</string>
@@ -190,6 +192,11 @@
     <string name="bluetooth_ask_discovery_no_name" msgid="164397600370102369">"Uhlelo lokusebenza lufuna ukwenza i-headunit ibonakale kumanye amadivayisi e-Bluetooth ngamasekhondi angu-<xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery" msgid="5487502083015708674">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ifuna ukuvula i-Bluetooth iphinde yenze i-headunit yakho ibonakale kumanye amadivayisi ngamasekhondi angu-<xliff:g id="TIMEOUT">%2$d</xliff:g>."</string>
     <string name="bluetooth_ask_enablement_and_discovery_no_name" msgid="907153034209916282">"Uhlelo lokusebenza lufuna ukuvula i-Bluetooth luphinde lwenze i-headunit yakho ibonakale kwamanye amadivayisi ngamasekhondi angu-<xliff:g id="TIMEOUT">%1$d</xliff:g>."</string>
+    <string name="bluetooth_state_switch_summary" msgid="171929910916432266">"Kubonakala njenge-%1$s kwamanye amadivayisi"</string>
+    <string name="bluetooth_my_devices" msgid="6352010339607939612">"Amadivayisi wami"</string>
+    <string name="bluetooth_previously_connected" msgid="5206229557831180323">"Kuxhunywe ngaphambilini"</string>
+    <string name="bluetooth_device_connected_toast" msgid="4614765282582494488">"I-%1$s ixhunyiwe"</string>
+    <string name="bluetooth_device_disconnected_toast" msgid="8889122688851623920">"I-%1$s inqanyuliwe"</string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Isicelo sokubhanqa i-Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pheya futhi uxhume"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Ikhodi yokumatanisa ye-Bluetooth"</string>
@@ -228,6 +235,10 @@
     <string name="notification_ringtone_title" msgid="8661716239594010288">"Umsindo wesaziso ozenzakalelayo"</string>
     <string name="alarm_ringtone_title" msgid="3257364170646440908">"Umsindo we-alamu ozenzakalelayo"</string>
     <string name="ringtone_picker_save_title" msgid="4388137432517227001">"Londoloza"</string>
+    <string name="sound_alert_sounds" msgid="6838044721739163867">"Imisindo yezexwayiso"</string>
+    <string name="sound_alert_sounds_summary" msgid="816501423095651281">"Ithoni yokukhala, izaziso, i-alamu"</string>
+    <string name="display_brightness" msgid="5718970880488110840">"Ukugqama"</string>
+    <string name="display_night_mode_summary" msgid="4939425286027546230">"Lungisa isikrini mayelana nokukhanya okuphansi"</string>
     <string name="units_settings" msgid="402325305096925886">"Amayunithi"</string>
     <string name="units_speed_title" msgid="7115143916747108160">"Isivinini"</string>
     <string name="units_distance_title" msgid="6257691565990474635">"Ibanga"</string>
@@ -280,8 +291,8 @@
     <string name="all_applications" msgid="7798210477486822168">"Bonisa zonke izinhlelo zokusebenza"</string>
     <string name="default_applications" msgid="1558183275638697087">"Izinhlelo zokusebenza ezizenzakalelayo"</string>
     <string name="app_permissions" msgid="32799922508313948">"Izimvume zohlelo lokusebenza"</string>
-    <string name="app_permissions_summary" msgid="1842858532315056367">"Izinhlelo zokusebenza ezisebenzisa ama-<xliff:g id="APPS">%1$s</xliff:g>"</string>
-    <string name="applications_settings" msgid="794261395191035632">"Ulwazi nge-app"</string>
+    <string name="app_permissions_summary" msgid="5402214755935368418">"Lawula ukufinyelela kohlelo lokusebenza kudatha yakho"</string>
+    <string name="applications_settings" msgid="794261395191035632">"Ulwazi lohlelo lokusebenza"</string>
     <string name="force_stop" msgid="2153183697014720520">"Phoqelela ukuma"</string>
     <string name="force_stop_dialog_title" msgid="3342850939200388694">"Phoqelela ukumisa?"</string>
     <string name="force_stop_dialog_text" msgid="4354954014318432599">"Uma uphoqa ukumisa uhlelo lokusebenza, kungenzeka ukuthi lungasebenzi."</string>
@@ -290,13 +301,19 @@
     <string name="uninstall_text" msgid="277907956072833012">"Khipha"</string>
     <string name="app_disable_dialog_text" msgid="7731155411006654025">"Uma ukhubaza lolu hlelo lokusebenza, i-Android nezinye izinhlelo zokusebenza kungenzeka zingasasebenzi njengoba zihlosiwe."</string>
     <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Khubaza uhlelo lokusebenza"</string>
-    <string name="not_installed" msgid="4218816013370552746">"Akufakiwe kulo msebenzisi"</string>
+    <string name="not_installed" msgid="4163454337822508007">"Akufakwanga kule phrofayela"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Izimvume"</string>
     <string name="notifications_label" msgid="6586089149665170731">"Izaziso"</string>
     <string name="storage_application_label" msgid="5911779903670978586">"Isitoreji nenqolobane"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Inguqulo: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Azikho izimvume ezinikiwe"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Azikho izimvume eziceliwe"</string>
+    <string name="unused_apps" msgid="648471933781010395">"Ama-unused app"</string>
+    <plurals name="unused_apps_summary" formatted="false" msgid="6410080383909014362">
+      <item quantity="one">ama-unused app <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="other">ama-unused app <xliff:g id="COUNT_1">%d</xliff:g></item>
+    </plurals>
+    <string name="unused_apps_switch" msgid="4433958286200341563">"Susa izimvume uphinde ukhulule isikhala"</string>
     <string name="storage_type_internal" msgid="8918688427078709570">"%s kusitoreji sangaphakathi"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Ukusebenzisa idatha"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ukusetshenziswa kwedatha yohlelo lokusebenza"</string>
@@ -313,18 +330,18 @@
     <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Sebenzisa isithombe-skrini"</string>
     <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Vumela uhlelo lokusebenza lokusiza ukuthi lufinyelele kusithombe sesikrini"</string>
     <string name="voice_input_settings_title" msgid="3238707827815647526">"Ukuthayipha ngezwi"</string>
-    <string name="autofill_settings_title" msgid="1188754272680049972">"Isevisi yokugcwalisa ngokuzenzekela"</string>
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Isevisi yokugcwalisa ngokuzenzakalela"</string>
     <string name="app_list_preference_none" msgid="7753357799926715901">"Lutho"</string>
     <string name="default_app_selected_app" msgid="5289396663745484773">"Ekhethiwe"</string>
     <string name="assistant_security_warning" msgid="1844807956967428012">"Isilekeleli sizokwazi ukufunda ulwazi mayelana nezinhlelo zokusebenza ezisetshenziswayo kusistimu yakho, ezifaka ulwazi olubonakala kusikrini sakho noma ezifinyeleleka ngaphakathi kwezinhlelo zokusebenza."</string>
     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&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="autofill_add_service" msgid="6413893366443609951">"Engeza isevisi"</string>
-    <string name="app_launch_domain_links_title" msgid="774480184927726651">"Ivula amalinki"</string>
+    <string name="app_launch_domain_links_title" msgid="774480184927726651">"Ivula izixhumanisi"</string>
     <string name="domain_url_section_title" msgid="9070403140947787214">"Izinhlelo zokusebenza ezifakiwe"</string>
     <string name="domain_urls_summary_none" msgid="3077803215088293183">"Ungavuli izixhumanisi ezisekelwayo"</string>
     <string name="domain_urls_summary_one" msgid="5072257421806034237">"Vula i-<xliff:g id="DOMAIN">%s</xliff:g>"</string>
     <string name="domain_urls_summary_some" msgid="5523153458016701725">"Vula i-<xliff:g id="DOMAIN">%s</xliff:g> namanye ama-URL"</string>
-    <string name="app_launch_title" msgid="3442601467010363057">"Vula ngokuzenzekelayo"</string>
+    <string name="app_launch_title" msgid="3442601467010363057">"Vula ngokuzenzakalelayo"</string>
     <string name="app_launch_other_defaults_title" msgid="5734827759507953180">"Okunye okuzenzakalelayo"</string>
     <string name="auto_launch_disable_text" msgid="3595315315092716391">"Akukho okuzenzakalelayo okusethiwe."</string>
     <string name="auto_launch_enable_text" msgid="7230832269574106901">"Ukhethe ukufaka lolu hlelo lokusebenza ngokuzenzekelayo kwezinye izinhlelo zokwenziwayo."</string>
@@ -334,10 +351,18 @@
     <string name="app_link_open_ask" msgid="7242075065136237456">"Buza njalo"</string>
     <string name="app_link_open_never" msgid="2173174327831792316">"Ungavuli kulolu hlelo lokusebenza"</string>
     <string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Izixhumanisi ezisekelwayo"</string>
-    <string name="special_access" msgid="5730278220917123811">"Ukufinyelela kwi-app okukhethekile"</string>
+    <string name="apps_settings_title" msgid="3982535942394315336">"Ama-app"</string>
+    <string name="apps_recently_opened" msgid="5320377037971195984">"Okuvulwe kamuva"</string>
+    <string name="apps_view_all_apps_title" msgid="2322120325505230530">"Buka wonke ama-app we-%1$d"</string>
+    <string name="apps_permission_manager_title" msgid="8776335943862484131">"Isiphathi semvume"</string>
+    <string name="apps_permission_manager_summary" msgid="4180424218228141274">"Lawula ukufinyelela kohlelo lokusebenza kudatha yakho"</string>
+    <string name="apps_default_apps_summary" msgid="2017792579839972926">"Okomsizi nokuningi"</string>
+    <string name="apps_special_app_access_summary" msgid="6464767436309742163">"Kusistimu namanye amasethingi"</string>
+    <string name="special_access" msgid="5730278220917123811">"Ukungena kohlelo okukhethekile"</string>
     <string name="show_system" msgid="4401355756969485287">"Bonisa isistimu"</string>
     <string name="hide_system" msgid="8845453295584638040">"Fihla isistimu"</string>
-    <string name="modify_system_settings_title" msgid="4596320571562433972">"Shintsha amasethingi esistimu"</string>
+    <string name="hide_system_apps" msgid="6583947381056154020">"Fihla izinhlelo zokusebenza zesistimu"</string>
+    <string name="modify_system_settings_title" msgid="4596320571562433972">"Shintsha izilungiselelo zesistimu"</string>
     <string name="modify_system_settings_description" msgid="5295023124419592452">"Le mvume ivumela uhlelo lokusebenza ukushintsha izilungiselelo zesistimu."</string>
     <string name="notification_access_title" msgid="1467340098885813473">"Ukufinyelela isaziso"</string>
     <string name="notification_listener_security_warning_title" msgid="2893273335175140895">"Vumela ukufinyelela kwesaziso kwe-<xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -357,11 +382,16 @@
     <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Azikho izicelo zakamuva zendawo"</string>
     <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Izimvume zeleveli yohlelo lokusebenza"</string>
     <string name="location_settings_services_title" msgid="1186133632690970468">"Amasevisi endawo"</string>
+    <string name="location_use_location_title" msgid="117735895374606680">"Sebenzisa indawo"</string>
+    <!-- no translation found for location_settings_footer (296892848338100051) -->
+    <skip />
     <string name="system_setting_title" msgid="6864599341809463440">"Isistimu"</string>
     <string name="system_update_settings_title" msgid="8448588267784138855">"Izibuyekezo zesistimu"</string>
+    <string name="system_advanced_title" msgid="6303355131691523362">"Okuthuthukisiwe"</string>
+    <string name="system_advanced_summary" msgid="5833643795981791953">"Mayelana, ulwazi lwezomthetho, setha kabusha, nokuningi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Inguqulo ye-Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ileveli yokuvikeleka ye-Android"</string>
-    <string name="hardware_info" msgid="3973165746261507658">"Imodeli nezingxenyekazi zekhompyutha"</string>
+    <string name="hardware_info" msgid="3973165746261507658">"Imodeli nezingxenyekazi zekhompuyutha"</string>
     <string name="hardware_info_summary" msgid="8262576443254075921">"Imodeli: <xliff:g id="MODEL">%1$s</xliff:g>"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Inguqulo ye-Baseband"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Inguqulo ye-Kernel"</string>
@@ -420,16 +450,17 @@
     <string name="reset_app_pref_desc" msgid="579392665146962149">"Lokhu kuzosetha kabusha konke okuncamelayo kwe-:\n\n"<li>"Izinhlelo zokusebenza ezikhutshaziwe"</li>\n<li>"Izaziso zezinhlelo zokusebenza ezikhutshaziwe"</li>\n<li>"Izinhlelo zokusebenza ezizenzakalelayo zezenzo"</li>\n<li>"Imikhawulo yedatha yangemuva yezinhlelo zokusebenza"</li>\n<li>"Noma yimiphi imikhawulo yemvume"</li>\n\n"Ngeke uze ulahlekelwe noma iyiphi idatha yohlelo lokusebenza."</string>
     <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Setha kabusha izinhlelo zokusebenza"</string>
     <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Izintandokazi zohlelo lokusebenza zisethwe kabusha"</string>
-    <string name="master_clear_title" msgid="8515335233363214414">"Sula yonke idatha (ukusethwa kabusha kwasekuqaleni)"</string>
-    <string name="master_clear_desc" msgid="9058719802779893535">"Lokhu kuzosusa yonke idatha kusukela kuyunithi eyinhloko yemoto yakho, efaka:\n\n"<li>"I-akhawunti yakho ye-Google"</li>\n<li>"Isistimu nedatha yohlelo lokusebenza nezilungiselelo"</li>\n<li>"Izinhlelo zokusebenza ezilandiwe"</li></string>
-    <string name="master_clear_accounts" msgid="7797522012993567494">"Manje ungene ngemvume kuma-akhawunti alandelayo:"</string>
-    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Kukhona abanye abasebenzisi abakhona kule moto."</string>
-    <string name="master_clear_button_text" msgid="8010754220392741160">"Setha kabusha imoto"</string>
-    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Setha kabusha?"</string>
-    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Sula lonke ulwazi lakho lomuntu siqu kanye nezinhlelo zokusebenza ezilandiwe? Awukwazi ukuhlehlisa lesi senzo!"</string>
-    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Sula yonke into"</string>
-    <string name="master_clear_progress_title" msgid="7087480656932674774">"Iyasula"</string>
-    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sicela ulinde..."</string>
+    <string name="factory_reset_title" msgid="4019066569214122052">"Sula yonke idatha (ukusethwa kabusha njengasekuqaleni)"</string>
+    <string name="factory_reset_summary" msgid="854815182943504327">"Sula yonke idatha namaphrofayela kusuka kusistimu ye-infotainment"</string>
+    <string name="factory_reset_desc" msgid="1688333312943433244">"Lokhu kuzosusa yonke idatha kusukela kusistimu ye-infotainment yakho, efaka:\n\n"<li>"I-Akhawunti yakho ye-Google"</li>\n<li>"Isistimu nedatha yohlelo lokusebenza nezilungiselelo"</li>\n<li>"Ama-app adawunilodiwe"</li></string>
+    <string name="factory_reset_accounts" msgid="5523956654938834209">"Manje ungene ngemvume kuma-akhawunti alandelayo:"</string>
+    <string name="factory_reset_other_users_present" msgid="3254426161455117822">"Kukhona amanye amaphrofayela akhona kule moto."</string>
+    <string name="factory_reset_button_text" msgid="2626666247051368256">"Sula yonke idatha"</string>
+    <string name="factory_reset_confirm_title" msgid="3354542161765761879">"Sula yonke idatha?"</string>
+    <string name="factory_reset_confirm_desc" msgid="2037199381372030510">"Lokhu kuzosula yonke imininingwane yakho, ama-akhawunti, nama-app alandiwe kule sistimu ye-infotainment.\n\nAwukwazi ukuhlehlisa lesi senzo."</string>
+    <string name="factory_reset_confirm_button_text" msgid="1797490544756481809">"Sula yonke into"</string>
+    <string name="factory_reset_progress_title" msgid="4580937077054738173">"Iyasula"</string>
+    <string name="factory_reset_progress_text" msgid="7704636573522634757">"Sicela ulinde..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Idethi nesikhathi"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Setha idethi, isikhathi, umkhwawulo wesikhathi namafomethi"</string>
     <string name="date_time_auto" msgid="3570339569471779767">"Idethi nesikhathi ezizenzakalelayo"</string>
@@ -452,33 +483,34 @@
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ungene ngemvume njengomlawuli"</string>
     <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Zonke izimvume zomphathi"</string>
     <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Yenza umphathi"</string>
-    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Umsebenzisi uzokwazi ukususa abasebenzisi, kufaka phakathi abanye abaphathi, nokusetha kabusha isistimu njengasekuqaleni."</string>
+    <string name="grant_admin_permissions_message" msgid="6160752287870078438">"Iphrofayela lizokwazi ukusula amaphrofayela, kuhlanganise nabanye Abaphathi, nesistimu yokusethwa kabusha njengasekuqaleni."</string>
     <string name="action_not_reversible_message" msgid="740401337875726973">"Lesi senzo asiphindeli emuva."</string>
     <string name="confirm_grant_admin" msgid="7852596890218647682">"Yebo, yenza umphathi"</string>
-    <string name="create_user_permission_title" msgid="7781550880565935298">"Dala abasebenzisi abasha"</string>
+    <string name="create_user_permission_title" msgid="2402003632264628632">"Dala amaphrofayela amasha"</string>
     <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Yenza amakholi wefoni"</string>
     <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Imilayezo ngedatha yeselula yemoto"</string>
     <string name="install_apps_permission_title" msgid="3099705360827925296">"Faka izinhlelo zokusebenza ezintsha"</string>
     <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Khipha izinhlelo zokusebenza"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Engeza umsebenzisi"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Umsebenzisi omusha"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Engeza umsebenzisi omusha?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha izikhala zakhe."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Noma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza zabanye abasebenzisi."</string>
-    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kufinyelelwe kumkhawulo womsebenzisi"</string>
-    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
-      <item quantity="one">Ungadala kufikela kubasebenzisi abangu-<xliff:g id="COUNT">%d</xliff:g>.</item>
-      <item quantity="other">Ungadala kufikela kubasebenzisi abangu-<xliff:g id="COUNT">%d</xliff:g>.</item>
+    <string name="user_add_user_menu" msgid="4125869008006021799">"Engeza iphrofayela"</string>
+    <string name="user_new_user_name" msgid="906698527658609819">"Iphrofayela entsha"</string>
+    <string name="user_add_user_title" msgid="6296827596015729982">"Engeza iphrofayela entsha?"</string>
+    <string name="user_add_user_message_setup" msgid="1104228754378776843">"Uma ungeza iphrofayela elisha, loyo muntu udinga ukusetha izikhala zakhe."</string>
+    <string name="user_add_user_message_update" msgid="4426216049383534983">"Noma yiliphi iphrofayela lingabuyekeza ama-app wawo wonke amanye amaphrofayela."</string>
+    <string name="user_limit_reached_title" msgid="5677729355746623293">"Umkhawulo wephrofayela ufinyelelwe"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="3310152546154693349">
+      <item quantity="one">Ungadala amaphrofayela afika kwangu-<xliff:g id="COUNT">%d</xliff:g> kuphela.</item>
+      <item quantity="other">Ungadala amaphrofayela afika kwangu-<xliff:g id="COUNT">%d</xliff:g> kuphela.</item>
     </plurals>
-    <string name="add_user_error_title" msgid="3206300411663817038">"Yehlulekile ukudala umsebenzisi omusha"</string>
-    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Susa lo msebenzisi?"</string>
-    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Zonke izinhlelo zokusebenza nedatha kuzosuswa."</string>
-    <string name="delete_user_error_title" msgid="7609819398530124827">"Yehlulekile ukususa umsebenzisi."</string>
+    <string name="add_user_error_title" msgid="1083971272311209015">"Yehlulekile ukwengeza iphrofayela entsha"</string>
+    <string name="delete_user_dialog_title" msgid="575517556232943687">"Sula le phrofayela?"</string>
+    <string name="delete_user_dialog_message" msgid="3916865958419051299">"Wonke ama-app nedatha yale phrofayela kuzosulwa"</string>
+    <string name="delete_user_error_title" msgid="3673233389115187280">"Yehlulekile ukusula iphrofayela."</string>
+    <string name="delete_user_error_set_ephemeral_title" msgid="9062453678745644817">"Le phrofayela izosuswa lapho ushintsha amaphrofayela noma uqala kabusha imoto."</string>
     <string name="delete_user_error_dismiss" msgid="429156446763738273">"Chitha"</string>
     <string name="delete_user_error_retry" msgid="5116434895572670563">"Zama futhi"</string>
-    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Susa umsebenzisi wokugcina?"</string>
-    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Ngemuva kokususa umsebenzisi osele wale moto, umsebenzisi omusha womlawuli uzodalwa."</string>
-    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Yonke idatha, izilungiselelo, kanye nezinhlelo zokusebenza eziphathelene nalo msebenzisi kuzosuswa. Uzodinga ukusetha isistimu futhi."</string>
+    <string name="delete_last_user_dialog_title" msgid="3454454005909291260">"Sula iphrofayela lokugcina elisele?"</string>
+    <string name="delete_last_user_delete_warning" msgid="7189499586859833988">"Uma usula okuwukuphela kwephrofayela esele ngale moto, yonke idatha, amasethingi, nama-app ahlobene nale phrofayela azosulwa."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="726196874941282088">"Ngemva kokusetha kabusha, ungasetha iphrofayela entsha."</string>
     <string name="choose_new_admin_title" msgid="1915428454917699587">"Khetha umlawuli omusha"</string>
     <string name="choose_new_admin_message" msgid="7468286545352043354">"Udinga okungenani umlawuli oyedwa. Ukuze ususe lo, qala ngokukhetha ukumiselela."</string>
     <string name="choose_new_admin_label" msgid="5987653639387437939">"Khetha umlawuli"</string>
@@ -488,10 +520,11 @@
     <string name="current_user_name" msgid="3813671533249316823">"Wena (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Igama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Akusethiwe"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"Hlela igama lomsebenzisi"</string>
+    <string name="edit_user_name_title" msgid="1118500707473139995">"Hlela igama lephrofayela"</string>
     <string name="name_input_blank_error" msgid="2088850865880984123">"Inkundla ayikwazi ukungabi nalutho."</string>
-    <string name="name_input_invalid_error" msgid="3523545780580744273">"Igama lomsebenzisi elifakiwe alivumelekile."</string>
+    <string name="name_input_invalid_error" msgid="4355625213535164704">"Igama lephrofayela elifakiwe alivumelekile."</string>
     <string name="users_list_title" msgid="770764290290240909">"Abasebenzisi"</string>
+    <string name="profiles_list_title" msgid="1443396686780460221">"Amaphrofayela"</string>
     <string name="user_details_admin_title" msgid="3530292857178371891">"Izimvume zinikwe ku-%1$s"</string>
     <string name="storage_settings_title" msgid="8957054192781341797">"Isitoreji"</string>
     <string name="storage_music_audio" msgid="7827147379976134040">"Umculo nomsindo"</string>
@@ -502,7 +535,7 @@
     <string name="storage_audio_files_title" msgid="5183170457027181700">"Amafayela omsindo"</string>
     <string name="memory_calculating_size" msgid="1672238502950390033">"Iyabala…"</string>
     <string name="storage_application_size_label" msgid="1146156683170661354">"Usayizi wohlelo lokusebenza"</string>
-    <string name="storage_data_size_label" msgid="5022911581004239367">"Idatha yomsebenzisi"</string>
+    <string name="storage_data_size_label" msgid="7986110464268960652">"Idatha yephrofayela"</string>
     <string name="storage_cache_size_label" msgid="6361308766707419555">"Isilondolozi sesikhashana"</string>
     <string name="storage_total_size_label" msgid="3892138268243791912">"Inani"</string>
     <string name="storage_clear_user_data_text" msgid="8787615136779130680">"Sula isitoreji"</string>
@@ -544,6 +577,15 @@
     <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Khansela ukuvumelanisa"</string>
     <string name="sync_is_failing" msgid="5766255460901806206">"Ukuvumelanisa okwamanje kubhekene nenkinga. Kuzobuya maduze."</string>
     <string name="privacy_settings_title" msgid="3150145262029229572">"Ubumfihlo"</string>
+    <string name="privacy_vehicle_data_title" msgid="3648848044709285993">"Idatha yemoto"</string>
+    <string name="privacy_location_summary" msgid="7019817848470566242">"Lawula ukufinyela kwe-app endaweni yakho"</string>
+    <string name="mute_mic_title" msgid="2813215197799569553">"Imakrofoni"</string>
+    <string name="mute_mic_summary" msgid="5426953935775303904">"Lawula ukufinyelela kwama-app kumakrofoni"</string>
+    <string name="vehicle_data_title" msgid="7422375925983229871">"Idatha yemoto"</string>
+    <string name="vehicle_data_summary" msgid="9204836361819386115">"Phatha imisebenzi nolwazi olulondolozwe kule moto"</string>
+    <string name="vehicle_data_delete_user_title" msgid="9132472153739085346">"Sula iphrofayela yakho"</string>
+    <string name="vehicle_data_delete_user_summary" msgid="5900205773710111394">"Sula iphrofayela yakho nama-akhawunti kusukela kusistimu ye-infotainment"</string>
+    <string name="action_unavailable" msgid="7087119418684417249">"Lesi senzo asitholakaleli iphrofayela yakho"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Ukuvikela"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Isikrini sivaliwe"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Lutho"</string>
@@ -579,6 +621,8 @@
     <string name="okay" msgid="4589873324439764349">"KULUNGILE"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"Susa isikrini sokukhiya?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"Lokhu kuzovumela wonke umuntu ukufinyelela i-akhawunti yakho"</string>
+    <string name="security_profile_lock_title" msgid="3082523481292617350">"Ukukhiya kwephrofayela"</string>
+    <string name="security_unlock_profile_summary" msgid="6742592419759865631">"Setha ukuvula okuzenzakalelayo"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Faka iPHINIKHODI yakho"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"Faka iphasiwedi yakho"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"Ngokuphepha, setha i-PIN"</string>
@@ -602,7 +646,7 @@
     <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Kumele ibe namadijithi ambalwa kunangu-<xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Kumele iqukathe amadijithi angu-0-9 kuphela."</string>
     <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Umlawuli wedivayisi akavumeli ukusebenzisa iphinikhodi yakamuva"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Ama-PIN avamile avinjelwe umlawuli wakho we-IT. Zama i-PIN ehlukile."</string>
+    <string name="lockpassword_pin_denylisted_by_admin" msgid="7412709707800738442">"Ama-PIN avamile avinjelwe umlawuli wakho we-IT. Zama i-PIN ehlukile."</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"Lokhu akukwazi ukufaka uhlamvu olungavumelekile."</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Iphasiwedi ayivumelekile, kumele okungenani ibe izinhlamvu ezingu-4."</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
@@ -631,7 +675,7 @@
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Umlawuli wedivayisi akavumeli ukusebenzisa iphasiwedi yakamuva"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"Iphutha ukulondoloza iphasiwedi"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Amaphasiwedi avamile avinjelwe umlawuli wakho we-IT. Zama iphasiwedi ehlukile."</string>
+    <string name="lockpassword_password_denylisted_by_admin" msgid="7965893810326503891">"Amaphasiwedi avamile avinjelwe umlawuli wakho we-IT. Zama iphasiwedi ehlukile."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ukwenyuka, ukwehla, noma ukulandelana okuphindiwe kwamadijithi akuvunyelwe."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Izinketho zokukhiya isikrini"</string>
     <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> izinsuku ezedlule"</string>
@@ -652,10 +696,23 @@
     <string name="enter_key" msgid="2121394305541579468">"Ukhiye we-enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Phuma kudemo"</string>
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Phuma kumodi yedemo"</string>
-    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Lokhu kuzosusa i-akhawunti ye-demo futhi isethe kabusha idatha yesistimu. Yonke idatha yomsebenzisi izolahleka."</string>
+    <string name="exit_retail_mode_dialog_body" msgid="6513854703627380365">"Lokhu kuzosula i-akhawunti ye-demo futhi isethe kabusha idatha yesistimu. Yonke idatha yephrofayela izolahleka."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Phuma kudemo"</string>
     <string name="suggestion_dismiss_button" msgid="4539412646977050641">"CASHISA"</string>
     <string name="restricted_while_driving" msgid="6587569249519274524">"Isici asitholakali ngenkathi ushayela"</string>
-    <string name="add_user_restricted_while_driving" msgid="4754946754222453656">"Ayikwazi ukungeza umsebenzisi omusha ngenkathi ushayela"</string>
+    <string name="add_user_restricted_while_driving" msgid="1037301074725362944">"Ayikwazi ukungeza iphrofayela elisha ngenkathi ushayela"</string>
     <string name="default_search_query" msgid="3137420627428857068">"Sesha"</string>
+    <string name="assistant_and_voice_setting_title" msgid="737733881661819853">"Umsizi nezwi"</string>
+    <string name="assistant_and_voice_assistant_app_title" msgid="6438964789533662537">"I-app engumsizi"</string>
+    <string name="assistant_and_voice_use_text_from_screen_title" msgid="5851460943413795599">"Sebenzisa umbhalo kusukela kusikrini"</string>
+    <string name="assistant_and_voice_use_text_from_screen_summary" msgid="4161751708121301541">"Vumela umsizi afinyelele kokuqukethwe kwesikrini sakho"</string>
+    <string name="assistant_and_voice_use_screenshot_title" msgid="1930735578425470046">"Sebenzisa isithombe-skrini"</string>
+    <string name="assistant_and_voice_use_screenshot_summary" msgid="3738474919393817950">"Vumela umsizi afinyelele isithombe sesikrini"</string>
+    <string name="notifications_recently_sent" msgid="9051696542615302799">"Kuthunyelwe kamuva nje"</string>
+    <string name="notifications_all_apps" msgid="3557079551048958846">"Wonke ama-app"</string>
+    <string name="profiles_and_accounts_settings_title" msgid="2672643892127659812">"Amaphrofayela nama-akhawunti"</string>
+    <string name="manage_other_profiles_button_text" msgid="2262188413455510828">"Phatha amanye amaphrofayela"</string>
+    <string name="add_a_profile_button_text" msgid="8027395095117925114">"Engeza iphrofayela"</string>
+    <string name="delete_this_profile_text" msgid="6035404714526922665">"Susa le phrofayela"</string>
+    <string name="add_profile_text" msgid="9118410102199116969">"Engeza iphrofayela"</string>
 </resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index df25d0b..0ffaf1b 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -65,6 +65,10 @@
         <attr name="searchable" format="boolean" />
     </declare-styleable>
 
+    <declare-styleable name="PreferenceGroup">
+        <attr name="showChevron" format="boolean"/>
+    </declare-styleable>
+
     <declare-styleable name="ProgressBarPreference">
         <attr name="min" format="integer"/>
         <attr name="max" format="integer"/>
@@ -73,14 +77,51 @@
         <attr name="maxLabel" format="string"/>
     </declare-styleable>
 
+    <declare-styleable name="ColoredPreference">
+        <attr name="titleColor" format="color"/>
+        <attr name="iconColor" format="color"/>
+    </declare-styleable>
+
+    <declare-styleable name="ColoredSwitchPreference">
+        <attr name="disabledTitleColor" format="color"/>
+        <attr name="enabledTitleColor" format="color"/>
+    </declare-styleable>
+
+    <declare-styleable name="MultiActionPreference">
+        <!-- Determines the first action item -->
+        <attr name="action_item_one" format="enum">
+            <enum name="toggleButton" value="0"/>
+        </attr>
+        <!-- Determines the second action item -->
+        <attr name="action_item_two" format="enum">
+            <enum name="toggleButton" value="0"/>
+        </attr>
+        <!-- Determines the third action item -->
+        <attr name="action_item_three" format="enum">
+            <enum name="toggleButton" value="0"/>
+        </attr>
+        <!-- Determines if the first action item is initially shown -->
+        <attr name="action_item_one_shown" format="boolean"/>
+        <!-- Determines if the first action item is initially enabled -->
+        <attr name="action_item_one_enabled" format="boolean"/>
+        <!-- Determines if the second action item is initially shown -->
+        <attr name="action_item_two_shown" format="boolean"/>
+        <!-- Determines if the second action item is initially enabled -->
+        <attr name="action_item_two_enabled" format="boolean"/>
+        <!-- Determines if the third action item is initially shown -->
+        <attr name="action_item_three_shown" format="boolean"/>
+        <!-- Determines if the third action item is initially enabled -->
+        <attr name="action_item_three_enabled" format="boolean"/>
+    </declare-styleable>
+
     <attr name="wifiSignalColor" format="color"/>
     <attr name="iconColor" format="color"/>
     <attr name="dividerColor" format="color"/>
-    <attr name="userSwitcherBackground" format="reference"/>
-    <attr name="userSwitcherCurrentUserColor" format="color"/>
-    <attr name="userSwitcherAddIconColor" format="color"/>
-    <attr name="userSwitcherNameTextAppearance" format="reference"/>
-    <attr name="userSwitcherAddIconBackgroundColor" format="color"/>
+    <attr name="profileSwitcherBackground" format="reference"/>
+    <attr name="profileSwitcherCurrentProfileColor" format="color"/>
+    <attr name="profileSwitcherAddIconColor" format="color"/>
+    <attr name="profileSwitcherNameTextAppearance" format="reference"/>
+    <attr name="profileSwitcherAddIconBackgroundColor" format="color"/>
     <attr name="quickSettingsEnabledColor" format="color"/>
     <attr name="quickSettingsDisabledColor" format="color"/>
     <attr name="quickSettingsIconEnabledColor" format="color"/>
diff --git a/res/values/colors.xml b/res/values/colors.xml
new file mode 100644
index 0000000..01351bd
--- /dev/null
+++ b/res/values/colors.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<resources>
+    <!-- Top-level icon colors -->
+    <color name="top_level_icon_default">@android:color/black</color>
+    <color name="top_level_display_icon">@color/top_level_icon_default</color>
+    <color name="top_level_sound_icon">@color/top_level_icon_default</color>
+    <color name="top_level_network_and_internet_icon">@color/top_level_icon_default</color>
+    <color name="top_level_bluetooth_icon">@color/top_level_icon_default</color>
+    <color name="top_level_units_icon">@color/top_level_icon_default</color>
+    <color name="top_level_location_icon">@color/top_level_icon_default</color>
+    <color name="top_level_applications_icon">@color/top_level_icon_default</color>
+    <color name="top_level_notifications_icon">@color/top_level_icon_default</color>
+    <color name="top_level_profiles_and_accounts_icon">@color/top_level_icon_default</color>
+    <color name="top_level_privacy_icon">@color/top_level_icon_default</color>
+    <color name="top_level_storage_icon">@color/top_level_icon_default</color>
+    <color name="top_level_security_icon">@color/top_level_icon_default</color>
+    <color name="top_level_system_icon">@color/top_level_icon_default</color>
+    <color name="top_level_assistant_and_voice_icon">@color/top_level_icon_default</color>
+    <!-- Default foreground color for injected top-level icons -->
+    <color name="top_level_injected_icon_default">@color/top_level_icon_default</color>
+
+    <!-- Default background color for injected top-level icons -->
+    <color name="top_level_injected_default_background">#4285F4</color>
+
+    <!-- Bluetooth -->
+    <color name="bluetooth_bonded_device_off_background_color">#626262</color>
+    <color name="bluetooth_bonded_device_icon_color_checked">@android:color/black</color>
+    <color name="bluetooth_bonded_device_icon_color_unchecked">@android:color/white</color>
+    <color name="bluetooth_disabled_device_background_color">@android:color/black</color>
+    <color name="bluetooth_disabled_device_icon_color">#75FFFFFF</color>
+    <color name="bluetooth_device_icon_color">@android:color/white</color>
+</resources>
\ No newline at end of file
diff --git a/res/values/config.xml b/res/values/config.xml
index e231476..76d3620 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -16,6 +16,10 @@
 -->
 
 <resources>
+    <!-- Whether all activities should be single pane views or not. -->
+    <bool name="config_global_force_single_pane">true</bool>
+    <!-- Fully qualified class name for the homepage fragment. -->
+    <string name="config_homepage_fragment_class" translatable="false">com.android.car.settings.home.HomepageFragment</string>
     <!-- Whether quick settings should be the root settings activity or not. -->
     <bool name="config_is_quick_settings_root">false</bool>
     <!-- Whether to show the launcher icon for settings home or not. -->
@@ -41,14 +45,14 @@
         filter will return all unbonded devices.
 
         Example usage:
-        <integer-array name="config_unbonded_device_filter_whitelist">
+        <integer-array name="config_unbonded_device_filter_allowlist">
             <item>0x0200</item>
         </integer-array>
 
         This filter would only return unbonded devices which correspond to the
         major class for PHONE.
     -->
-    <integer-array name="config_unbonded_device_filter_whitelist"/>
+    <integer-array name="config_unbonded_device_filter_allowlist"/>
     <!--
         Array of keys that should be used for determining how audio attribute
         usage should be mapped to ringtone uris.
@@ -100,8 +104,31 @@
         <item>@string/pk_bluetooth_paired_devices</item>
     </string-array>
 
+    <!--
+        Whether to allow chevrons on top-level preferences when enabled for
+        car-ui-lib preferences.
+    -->
+    <bool name="config_top_level_enable_chevrons">true</bool>
+    <!-- The shape for top-level icons: 0=RECTANGLE, 1=OVAL -->
+    <integer name="config_top_level_icon_shape" translatable="false">1</integer>
+    <!--
+        Whether to always override the background color of the injecting application in favor of
+        the default color.
+    -->
+    <bool name="config_top_level_injection_background_always_use_default">false</bool>
+    <!-- Whether to include the preference summaries of injected top-level preferences. -->
+    <bool name="config_top_level_injection_enable_summaries">true</bool>
+    <!-- Array of injected setting categories that appear in the top-level menu. -->
+    <string-array name="config_top_level_injection_categories">
+        <item>com.android.settings.category.wireless</item>
+        <item>com.android.settings.category.ia.device</item>
+        <item>com.android.settings.category.personal</item>
+    </string-array>
+
     <!-- The component which listens for the enabling of developer options. -->
-    <string name="config_dev_options_module" translatable="false">com.android.car.developeroptions/.Settings$DevelopmentSettingsDashboardActivity</string>
+    <string name="config_dev_options_module" translatable="false">
+        com.android.car.developeroptions/.CarDevelopmentSettingsDashboardActivity
+    </string>
 
     <!-- Settings intelligence package name -->
     <string name="config_settingsintelligence_package_name" translatable="false">
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 85ba7c4..5993a07 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -17,6 +17,7 @@
 
 <resources>
     <dimen name="icon_size">@*android:dimen/car_primary_icon_size</dimen>
+    <dimen name="secondary_icon_size">@*android:dimen/car_secondary_icon_size</dimen>
     <dimen name="touch_target_size">@*android:dimen/car_touch_target_size</dimen>
 
     <dimen name="button_min_width">@*android:dimen/car_button_min_width</dimen>
@@ -51,6 +52,11 @@
     <dimen name="brightness_seekbar_track_height">6dp</dimen>
     <dimen name="brightness_seekbar_track_corner">3dp</dimen>
     <dimen name="brightness_knob_size">44dp</dimen>
+    <dimen name="brightness_knob_inner_ring_inner_radius">22dp</dimen>
+    <dimen name="brightness_knob_thumb_inner_ring_thickness">8dp</dimen>
+    <dimen name="brightness_knob_thumb_outer_ring_inner_radius">30dp</dimen>
+    <dimen name="brightness_knob_thumb_outer_ring_thickness">8dp</dimen>
+
     <dimen name="tile_margin_start">@*android:dimen/car_padding_2</dimen>
     <dimen name="tile_margin_end">@*android:dimen/car_padding_2</dimen>
     <dimen name="tile_margin_bottom">@*android:dimen/car_padding_5</dimen>
@@ -67,6 +73,12 @@
     <dimen name="bluetooth_pin_dialog_text_margin_start">@*android:dimen/car_keyline_3</dimen>
     <dimen name="bluetooth_pin_dialog_text_margin_end">@*android:dimen/car_keyline_3</dimen>
     <dimen name="bluetooth_pin_dialog_subtext_margin_top">@*android:dimen/car_padding_1</dimen>
+    <dimen name="bluetooth_bonded_device_button_size">80dp</dimen>
+    <dimen name="bluetooth_bonded_device_button_radius">16dp</dimen>
+    <dimen name="bluetooth_bonded_device_foreground_icon_inset">18dp</dimen>
+    <dimen name="bluetooth_bonded_device_border_width">2dp</dimen>
+    <dimen name="bluetooth_device_icon_size">44dp</dimen>
+    <dimen name="bluetooth_device_foreground_icon_inset">8dp</dimen>
 
     <!-- Edit Username -->
     <dimen name="edit_username_padding_start">@*android:dimen/car_margin</dimen>
@@ -85,15 +97,18 @@
     <dimen name="confirm_pattern_dimension">350dp</dimen>
     <dimen name="confirm_lock_message_vertical_spacing">@*android:dimen/car_padding_2</dimen>
 
-    <!-- User Switcher -->
-    <dimen name="user_switcher_image_avatar_size">96dp</dimen>
-    <dimen name="user_switcher_vertical_spacing_between_users">@*android:dimen/car_padding_5
+    <!-- Profile Switcher -->
+    <dimen name="profile_switcher_image_avatar_size">96dp</dimen>
+    <dimen name="profile_switcher_vertical_spacing_between_profiles">@*android:dimen/car_padding_5
     </dimen>
-    <dimen name="user_switcher_vertical_spacing_between_name_and_avatar">
+    <dimen name="profile_switcher_vertical_spacing_between_name_and_avatar">
         @*android:dimen/car_padding_4
     </dimen>
-    <dimen name="user_switcher_current_user_circle_width">126dp</dimen>
-    <dimen name="user_switcher_current_user_circle_stroke_width">7dp</dimen>
+    <dimen name="profile_switcher_current_profile_circle_width">126dp</dimen>
+    <dimen name="profile_switcher_current_profile_circle_stroke_width">7dp</dimen>
+    <dimen name="profile_switcher_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="profile_switcher_managed_badge_size">@*android:dimen/car_large_avatar_badge_size</dimen>
+    <dimen name="profile_switcher_managed_badge_margin">1dp</dimen>
 
     <!-- Preferences -->
     <dimen name="two_action_preference_divider_width">1dp</dimen>
@@ -125,6 +140,11 @@
     <dimen name="progress_bar_preference_label_margin_top">@*android:dimen/car_padding_0</dimen>
     <dimen name="progress_bar_preference_padding_top">@*android:dimen/car_padding_1</dimen>
     <dimen name="progress_bar_preference_padding_bottom">@*android:dimen/car_padding_1</dimen>
+    <dimen name="multi_action_preference_item_divider_margin_end">12dp</dimen>
+    <dimen name="multi_action_preference_item_container_padding">@dimen/car_ui_padding_2</dimen>
+    <dimen name="multi_action_preference_toggle_button_size">80dp</dimen>
+    <dimen name="multi_action_preference_toggle_button_radius">11dp</dimen>
+    <dimen name="multi_action_preference_toggle_button_margin">12dp</dimen>
 
     <!-- Data usage -->
     <dimen name="usage_number_text_size">36sp</dimen>
@@ -166,4 +186,12 @@
     <dimen name="action_buttons_icon_margin_end">@*android:dimen/car_padding_1</dimen>
     <dimen name="action_buttons_divider_height">@dimen/divider_preference_height</dimen>
 
+    <!-- Top-level menu -->
+    <dimen name="top_level_menu_width">550dp</dimen>
+    <dimen name="top_level_divider_width">1dp</dimen>
+    <dimen name="top_level_preference_min_height">80dp</dimen>
+    <dimen name="top_level_preference_corner_radius">40dp</dimen>
+    <dimen name="top_level_recyclerview_margin_right">@*android:dimen/car_padding_2</dimen>
+    <dimen name="top_level_foreground_icon_inset">8dp</dimen>
+
 </resources>
diff --git a/res/values/header_keys.xml b/res/values/header_keys.xml
new file mode 100644
index 0000000..4763d29
--- /dev/null
+++ b/res/values/header_keys.xml
@@ -0,0 +1,66 @@
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<!--
+    Mapping of activities to top level header keys. Namespaced with "hk" (Header Key) to avoid
+    conflicts.
+-->
+<resources>
+    <string name="hk_HomepageActivity">@string/pk_bluetooth_settings_entry</string>
+    <string name="hk_DisplaySettingsActivity">@string/pk_display_settings_entry</string>
+    <string name="hk_SoundSettingsActivity">@string/pk_sound_settings_entry</string>
+    <string name="hk_RingtonePickerActivity">@string/pk_sound_settings_entry</string>
+    <string name="hk_NetworkAndInternetActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_BluetoothSettingsActivity">@string/pk_bluetooth_settings_entry</string>
+    <string name="hk_UnitsSettingsActivity">@string/pk_units_settings_entry</string>
+    <string name="hk_LocationSettingsActivity">@string/pk_location_settings_entry</string>
+    <string name="hk_AppsActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_NotificationsActivity">@string/pk_notifications_settings_entry</string>
+    <string name="hk_DatetimeSettingsActivity">@string/pk_date_time_settings_entry</string>
+    <string name="hk_ProfileDetailsActivity">@string/pk_profiles_and_accounts_settings_entry</string>
+    <string name="hk_PrivacySettingsActivity">@string/pk_privacy_settings_entry</string>
+    <string name="hk_VehicleDataActivity">@string/pk_privacy_settings_entry</string>
+    <string name="hk_StorageSettingsActivity">@string/pk_storage_settings_entry</string>
+    <string name="hk_SecuritySettingsActivity">@string/pk_security_settings_entry</string>
+    <string name="hk_AssistantAndVoiceSettingsActivity">@string/pk_assistant_and_voice_settings_entry</string>
+    <string name="hk_SystemSettingsActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_WifiSettingsActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_WifiTetherActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_MobileNetworkActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_MobileNetworkListActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_DataUsageActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_ApplicationsSettingsActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_SpecialAccessSettingsActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_LanguagesAndInputActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_AboutSettingsActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_LegalInformationActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_ResetOptionsActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_AddWifiActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_WifiPreferencesActivity">@string/pk_network_and_internet_entry</string>
+    <string name="hk_ApplicationsDetailsActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_ModifySystemSettingsActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_NotificationAccessActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_PremiumSmsAccessActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_UsageAccessActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_WifiControlActivity">@string/pk_apps_settings_entry</string>
+    <string name="hk_ChooseAccountActivity">@string/pk_profiles_and_accounts_settings_entry</string>
+    <string name="hk_LanguagePickerActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_DefaultAutofillPickerActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_KeyboardActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_TextToSpeechOutputActivity">@string/pk_system_settings_entry</string>
+    <string name="hk_BluetoothDevicePickerActivity">@string/pk_bluetooth_settings_entry</string>
+    <string name="hk_DataWarningAndLimitActivity">pk_network_and_internet_entry</string>
+</resources>
\ No newline at end of file
diff --git a/res/values/ids.xml b/res/values/ids.xml
index 41d1465..e8e5a86 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -22,4 +22,6 @@
 
     <!-- ID for the selected item in the ringtone picker -->
     <item type="id" name="ringtone_picker_selected_id"/>
+    <!-- ID key for tagging whether a preference is highlighted or not -->
+    <item type="id" name="preference_highlighted" />
 </resources>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 0ab3213..fef060a 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -51,4 +51,23 @@
 
     <!-- Millisecond interval between app data update -->
     <integer name="millisecond_max_app_load_wait_interval">5000</integer>
+
+    <!-- Maximum number of networks to be shown in LimitedWifiEntryListPreferenceController -->
+    <integer name="limited_wifi_entry_list_count">3</integer>
+
+    <!-- Maximum number of networks to be shown in RecentNotificationsAppsPreferenceController -->
+    <integer name="recent_notifications_apps_list_count">3</integer>
+
+    <!-- Maximum number of days old for a notification to be shown in
+     RecentNotificationsAppsPreferenceController -->
+    <integer name="recent_notifications_days_threshold">3</integer>
+
+    <!-- Maximum number of apps to be shown in RecentAppsItemManager -->
+    <integer name="recent_apps_max_count">3</integer>
+
+    <!-- Maximum number of days old for an app to be shown in RecentAppsItemManager -->
+    <integer name="recent_apps_days_threshold">1</integer>
+
+    <!-- Maximum number of device policies to be shown on ADD_DEVICE_ADMIN screen -->
+    <integer name="max_device_policies_shown">3</integer>
 </resources>
diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml
new file mode 100644
index 0000000..5746ecc
--- /dev/null
+++ b/res/values/overlayable.xml
@@ -0,0 +1,1422 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.-->
+<!--
+THIS FILE WAS AUTO GENERATED, DO NOT EDIT MANUALLY.
+REGENERATE USING packages/apps/Car/tests/tools/rro/generate-overlayable.py
+-->
+<resources>
+  <overlayable name="CarSettings">
+    <policy type="system|product|signature">
+      <item type="animator" name="trans_left_in"/>
+      <item type="animator" name="trans_left_out"/>
+      <item type="animator" name="trans_right_in"/>
+      <item type="animator" name="trans_right_out"/>
+      <item type="anim" name="trans_fade_in"/>
+      <item type="anim" name="trans_fade_out"/>
+      <item type="array" name="bytes_picker_sizes"/>
+      <item type="array" name="config_ignore_ux_restrictions"/>
+      <item type="array" name="config_ringtone_audio_attribute_usages_map_key"/>
+      <item type="array" name="config_ringtone_uri_map_value"/>
+      <item type="array" name="config_top_level_injection_categories"/>
+      <item type="array" name="config_unbonded_device_filter_allowlist"/>
+      <item type="array" name="premium_sms_access_values"/>
+      <item type="array" name="recent_apps_ignored_packages"/>
+      <item type="array" name="wifi_ap_band"/>
+      <item type="array" name="wifi_ap_band_config_2G_only"/>
+      <item type="array" name="wifi_ap_band_config_full"/>
+      <item type="array" name="wifi_ap_band_summary"/>
+      <item type="array" name="wifi_ap_band_summary_full"/>
+      <item type="array" name="wifi_security_method"/>
+      <item type="array" name="wifi_signals"/>
+      <item type="array" name="wifi_tether_security"/>
+      <item type="attr" name="action_item_one"/>
+      <item type="attr" name="action_item_one_enabled"/>
+      <item type="attr" name="action_item_one_shown"/>
+      <item type="attr" name="action_item_three"/>
+      <item type="attr" name="action_item_three_enabled"/>
+      <item type="attr" name="action_item_three_shown"/>
+      <item type="attr" name="action_item_two"/>
+      <item type="attr" name="action_item_two_enabled"/>
+      <item type="attr" name="action_item_two_shown"/>
+      <item type="attr" name="controller"/>
+      <item type="attr" name="disabledTitleColor"/>
+      <item type="attr" name="dividerColor"/>
+      <item type="attr" name="enabledTitleColor"/>
+      <item type="attr" name="icon"/>
+      <item type="attr" name="iconColor"/>
+      <item type="attr" name="layout"/>
+      <item type="attr" name="max"/>
+      <item type="attr" name="maxLabel"/>
+      <item type="attr" name="min"/>
+      <item type="attr" name="minLabel"/>
+      <item type="attr" name="profileSwitcherAddIconBackgroundColor"/>
+      <item type="attr" name="profileSwitcherAddIconColor"/>
+      <item type="attr" name="profileSwitcherBackground"/>
+      <item type="attr" name="profileSwitcherCurrentProfileColor"/>
+      <item type="attr" name="profileSwitcherNameTextAppearance"/>
+      <item type="attr" name="progress"/>
+      <item type="attr" name="quickSettingsDisabledColor"/>
+      <item type="attr" name="quickSettingsEnabledColor"/>
+      <item type="attr" name="quickSettingsIconDisabledColor"/>
+      <item type="attr" name="quickSettingsIconEnabledColor"/>
+      <item type="attr" name="searchable"/>
+      <item type="attr" name="showChevron"/>
+      <item type="attr" name="suggestionsPrimaryColor"/>
+      <item type="attr" name="suggestionsSecondaryColor"/>
+      <item type="attr" name="titleColor"/>
+      <item type="attr" name="titleText"/>
+      <item type="attr" name="usage"/>
+      <item type="attr" name="wifiSignalColor"/>
+      <item type="bool" name="config_always_ignore_ux_restrictions"/>
+      <item type="bool" name="config_automatic_brightness_available"/>
+      <item type="bool" name="config_enable_home_settings_icon"/>
+      <item type="bool" name="config_enable_quick_settings_icon"/>
+      <item type="bool" name="config_global_force_single_pane"/>
+      <item type="bool" name="config_is_quick_settings_root"/>
+      <item type="bool" name="config_show_premium_sms"/>
+      <item type="bool" name="config_show_regulatory_info"/>
+      <item type="bool" name="config_show_settings_root_exit_icon"/>
+      <item type="bool" name="config_show_system_update_settings"/>
+      <item type="bool" name="config_show_wifi_mac_address"/>
+      <item type="bool" name="config_top_level_enable_chevrons"/>
+      <item type="bool" name="config_top_level_injection_background_always_use_default"/>
+      <item type="bool" name="config_top_level_injection_enable_summaries"/>
+      <item type="color" name="bluetooth_bonded_device_background"/>
+      <item type="color" name="bluetooth_bonded_device_foreground"/>
+      <item type="color" name="bluetooth_bonded_device_icon_color_checked"/>
+      <item type="color" name="bluetooth_bonded_device_icon_color_unchecked"/>
+      <item type="color" name="bluetooth_bonded_device_off_background_color"/>
+      <item type="color" name="bluetooth_device_icon_color"/>
+      <item type="color" name="bluetooth_disabled_device_background_color"/>
+      <item type="color" name="bluetooth_disabled_device_icon_color"/>
+      <item type="color" name="brightness_thumb_inner_ring_color"/>
+      <item type="color" name="brightness_thumb_outer_ring_color"/>
+      <item type="color" name="car_grey_400_with_disable"/>
+      <item type="color" name="config_progress_background_tint"/>
+      <item type="color" name="text_color_accent_with_disable"/>
+      <item type="color" name="toggle_bg"/>
+      <item type="color" name="toggle_icon_tint"/>
+      <item type="color" name="top_level_applications_background"/>
+      <item type="color" name="top_level_applications_icon"/>
+      <item type="color" name="top_level_assistant_and_voice_background"/>
+      <item type="color" name="top_level_assistant_and_voice_icon"/>
+      <item type="color" name="top_level_bluetooth_background"/>
+      <item type="color" name="top_level_bluetooth_icon"/>
+      <item type="color" name="top_level_date_time_background"/>
+      <item type="color" name="top_level_display_background"/>
+      <item type="color" name="top_level_display_icon"/>
+      <item type="color" name="top_level_icon_default"/>
+      <item type="color" name="top_level_injected_default_background"/>
+      <item type="color" name="top_level_injected_icon_default"/>
+      <item type="color" name="top_level_location_background"/>
+      <item type="color" name="top_level_location_icon"/>
+      <item type="color" name="top_level_network_and_internet_background"/>
+      <item type="color" name="top_level_network_and_internet_icon"/>
+      <item type="color" name="top_level_notifications_background"/>
+      <item type="color" name="top_level_notifications_icon"/>
+      <item type="color" name="top_level_privacy_background"/>
+      <item type="color" name="top_level_privacy_icon"/>
+      <item type="color" name="top_level_profiles_and_accounts_background"/>
+      <item type="color" name="top_level_profiles_and_accounts_icon"/>
+      <item type="color" name="top_level_security_background"/>
+      <item type="color" name="top_level_security_icon"/>
+      <item type="color" name="top_level_sound_background"/>
+      <item type="color" name="top_level_sound_icon"/>
+      <item type="color" name="top_level_storage_icon"/>
+      <item type="color" name="top_level_system_background"/>
+      <item type="color" name="top_level_system_icon"/>
+      <item type="color" name="top_level_units_icon"/>
+      <item type="color" name="white_disabled_material"/>
+      <item type="dimen" name="action_bar_height"/>
+      <item type="dimen" name="action_bar_no_icon_start_margin"/>
+      <item type="dimen" name="action_buttons_divider_height"/>
+      <item type="dimen" name="action_buttons_icon_margin_end"/>
+      <item type="dimen" name="action_buttons_margin_bottom"/>
+      <item type="dimen" name="action_buttons_margin_top"/>
+      <item type="dimen" name="alert_dialog_edit_text_margin_end"/>
+      <item type="dimen" name="alert_dialog_edit_text_margin_start"/>
+      <item type="dimen" name="alert_dialog_margin_bottom"/>
+      <item type="dimen" name="alert_dialog_margin_top"/>
+      <item type="dimen" name="alert_dialog_password_checkbox_margin_end"/>
+      <item type="dimen" name="alert_dialog_password_checkbox_margin_start"/>
+      <item type="dimen" name="alert_dialog_password_checkbox_margin_top"/>
+      <item type="dimen" name="alert_dialog_title_margin_bottom"/>
+      <item type="dimen" name="alert_dialog_title_margin_end"/>
+      <item type="dimen" name="alert_dialog_title_margin_start"/>
+      <item type="dimen" name="ap_preference_item_icon_margin_end"/>
+      <item type="dimen" name="ap_preference_item_padding_end"/>
+      <item type="dimen" name="ap_preference_item_padding_start"/>
+      <item type="dimen" name="bluetooth_bonded_device_border_width"/>
+      <item type="dimen" name="bluetooth_bonded_device_button_radius"/>
+      <item type="dimen" name="bluetooth_bonded_device_button_size"/>
+      <item type="dimen" name="bluetooth_bonded_device_foreground_icon_inset"/>
+      <item type="dimen" name="bluetooth_device_foreground_icon_inset"/>
+      <item type="dimen" name="bluetooth_device_icon_size"/>
+      <item type="dimen" name="bluetooth_pin_dialog_margin_end"/>
+      <item type="dimen" name="bluetooth_pin_dialog_margin_start"/>
+      <item type="dimen" name="bluetooth_pin_dialog_section_height"/>
+      <item type="dimen" name="bluetooth_pin_dialog_subtext_margin_top"/>
+      <item type="dimen" name="bluetooth_pin_dialog_text_margin_end"/>
+      <item type="dimen" name="bluetooth_pin_dialog_text_margin_start"/>
+      <item type="dimen" name="brightness_knob_inner_ring_inner_radius"/>
+      <item type="dimen" name="brightness_knob_size"/>
+      <item type="dimen" name="brightness_knob_thumb_inner_ring_thickness"/>
+      <item type="dimen" name="brightness_knob_thumb_outer_ring_inner_radius"/>
+      <item type="dimen" name="brightness_knob_thumb_outer_ring_thickness"/>
+      <item type="dimen" name="brightness_seekbar_height"/>
+      <item type="dimen" name="brightness_seekbar_margin_bottom"/>
+      <item type="dimen" name="brightness_seekbar_padding_horizontal"/>
+      <item type="dimen" name="brightness_seekbar_track_corner"/>
+      <item type="dimen" name="brightness_seekbar_track_height"/>
+      <item type="dimen" name="button_fading_edge_length"/>
+      <item type="dimen" name="button_min_width"/>
+      <item type="dimen" name="button_ripple_radius"/>
+      <item type="dimen" name="choose_pin_title_text_margin_bottom"/>
+      <item type="dimen" name="choose_title_text_margin_bottom"/>
+      <item type="dimen" name="circle_ripple_bg_radius"/>
+      <item type="dimen" name="confirm_lock_message_vertical_spacing"/>
+      <item type="dimen" name="confirm_pattern_dimension"/>
+      <item type="dimen" name="data_usage_summary_preference_button_height"/>
+      <item type="dimen" name="data_usage_summary_preference_button_margin_top"/>
+      <item type="dimen" name="data_usage_summary_preference_button_min_width"/>
+      <item type="dimen" name="data_usage_summary_preference_padding_bottom"/>
+      <item type="dimen" name="divider_preference_height"/>
+      <item type="dimen" name="divider_preference_margin_bottom"/>
+      <item type="dimen" name="divider_preference_margin_top"/>
+      <item type="dimen" name="edit_username_padding_end"/>
+      <item type="dimen" name="edit_username_padding_start"/>
+      <item type="dimen" name="edit_username_text_padding_end"/>
+      <item type="dimen" name="edit_username_text_padding_start"/>
+      <item type="dimen" name="edit_username_text_padding_top"/>
+      <item type="dimen" name="entity_header_icon_size"/>
+      <item type="dimen" name="entity_header_inner_margin"/>
+      <item type="dimen" name="entity_header_margin_bottom"/>
+      <item type="dimen" name="icon_size"/>
+      <item type="dimen" name="multi_action_preference_item_container_padding"/>
+      <item type="dimen" name="multi_action_preference_item_divider_margin_end"/>
+      <item type="dimen" name="multi_action_preference_toggle_button_margin"/>
+      <item type="dimen" name="multi_action_preference_toggle_button_radius"/>
+      <item type="dimen" name="multi_action_preference_toggle_button_size"/>
+      <item type="dimen" name="number_picker_text_size"/>
+      <item type="dimen" name="opacity_disabled"/>
+      <item type="dimen" name="opacity_enabled"/>
+      <item type="dimen" name="pin_pad_key_height"/>
+      <item type="dimen" name="pin_pad_key_margin"/>
+      <item type="dimen" name="pin_pad_key_width"/>
+      <item type="dimen" name="pin_password_entry_padding_horizontal"/>
+      <item type="dimen" name="profile_switcher_current_profile_circle_stroke_width"/>
+      <item type="dimen" name="profile_switcher_current_profile_circle_width"/>
+      <item type="dimen" name="profile_switcher_image_avatar_size"/>
+      <item type="dimen" name="profile_switcher_managed_badge_margin"/>
+      <item type="dimen" name="profile_switcher_managed_badge_size"/>
+      <item type="dimen" name="profile_switcher_margin_bottom"/>
+      <item type="dimen" name="profile_switcher_vertical_spacing_between_name_and_avatar"/>
+      <item type="dimen" name="profile_switcher_vertical_spacing_between_profiles"/>
+      <item type="dimen" name="progress_bar_preference_label_margin_top"/>
+      <item type="dimen" name="progress_bar_preference_padding_bottom"/>
+      <item type="dimen" name="progress_bar_preference_padding_top"/>
+      <item type="dimen" name="progress_bar_preference_progressbar_margin_top"/>
+      <item type="dimen" name="secondary_icon_size"/>
+      <item type="dimen" name="suggestions_action_bar_height"/>
+      <item type="dimen" name="suggestions_corner_radius"/>
+      <item type="dimen" name="suggestions_padding_end"/>
+      <item type="dimen" name="suggestions_padding_start"/>
+      <item type="dimen" name="suggestions_subtext_margin_top"/>
+      <item type="dimen" name="suggestions_text_padding_bottom"/>
+      <item type="dimen" name="suggestions_text_padding_top"/>
+      <item type="dimen" name="suggestions_top_bottom_margin"/>
+      <item type="dimen" name="tile_icon_margin_bottom"/>
+      <item type="dimen" name="tile_margin_bottom"/>
+      <item type="dimen" name="tile_margin_end"/>
+      <item type="dimen" name="tile_margin_start"/>
+      <item type="dimen" name="tile_padding"/>
+      <item type="dimen" name="top_level_divider_width"/>
+      <item type="dimen" name="top_level_foreground_icon_inset"/>
+      <item type="dimen" name="top_level_menu_width"/>
+      <item type="dimen" name="top_level_preference_corner_radius"/>
+      <item type="dimen" name="top_level_preference_min_height"/>
+      <item type="dimen" name="top_level_recyclerview_margin_right"/>
+      <item type="dimen" name="touch_target_size"/>
+      <item type="dimen" name="two_action_preference_divider_width"/>
+      <item type="dimen" name="usage_bytes_picker_edit_text_min_width"/>
+      <item type="dimen" name="usage_bytes_picker_margin_horizontal"/>
+      <item type="dimen" name="usage_indicator_preference_label_margin_bottom"/>
+      <item type="dimen" name="usage_indicator_preference_label_margin_top"/>
+      <item type="dimen" name="usage_indicator_preference_progressbar_height"/>
+      <item type="dimen" name="usage_indicator_preference_summary_margin_bottom"/>
+      <item type="dimen" name="usage_indicator_preference_title_margin_bottom"/>
+      <item type="dimen" name="usage_indicator_preference_title_margin_top"/>
+      <item type="dimen" name="usage_number_text_size"/>
+      <item type="dimen" name="usage_pickers_margin_vertical"/>
+      <item type="dimen" name="usage_pickers_text_margin_end"/>
+      <item type="drawable" name="bluetooth_bonded_device_rotary_background"/>
+      <item type="drawable" name="brightness_seekbar_background"/>
+      <item type="drawable" name="brightness_seekbar_track"/>
+      <item type="drawable" name="button_ripple_bg"/>
+      <item type="drawable" name="car_ic_navigation"/>
+      <item type="drawable" name="circle_bg"/>
+      <item type="drawable" name="circle_ripple_bg"/>
+      <item type="drawable" name="color_progress_bar"/>
+      <item type="drawable" name="ic_add"/>
+      <item type="drawable" name="ic_arrow_back"/>
+      <item type="drawable" name="ic_arrow_drop_down"/>
+      <item type="drawable" name="ic_arrow_forward"/>
+      <item type="drawable" name="ic_audio_navi"/>
+      <item type="drawable" name="ic_backspace"/>
+      <item type="drawable" name="ic_block"/>
+      <item type="drawable" name="ic_bluetooth_button"/>
+      <item type="drawable" name="ic_bluetooth_button_unavailable"/>
+      <item type="drawable" name="ic_bluetooth_media"/>
+      <item type="drawable" name="ic_bluetooth_media_unavailable"/>
+      <item type="drawable" name="ic_bluetooth_phone"/>
+      <item type="drawable" name="ic_bluetooth_phone_unavailable"/>
+      <item type="drawable" name="ic_brightness_knob"/>
+      <item type="drawable" name="ic_brightness_knob_stretched"/>
+      <item type="drawable" name="ic_brightness_knob_with_focus"/>
+      <item type="drawable" name="ic_car"/>
+      <item type="drawable" name="ic_cellular_data"/>
+      <item type="drawable" name="ic_check"/>
+      <item type="drawable" name="ic_check_box"/>
+      <item type="drawable" name="ic_check_box_checked"/>
+      <item type="drawable" name="ic_check_box_unchecked"/>
+      <item type="drawable" name="ic_check_circle"/>
+      <item type="drawable" name="ic_chevron_right"/>
+      <item type="drawable" name="ic_close"/>
+      <item type="drawable" name="ic_date_time"/>
+      <item type="drawable" name="ic_delete"/>
+      <item type="drawable" name="ic_edit"/>
+      <item type="drawable" name="ic_find_device_disabled"/>
+      <item type="drawable" name="ic_find_device_enabled"/>
+      <item type="drawable" name="ic_folder"/>
+      <item type="drawable" name="ic_headset"/>
+      <item type="drawable" name="ic_keyboard_arrow_down"/>
+      <item type="drawable" name="ic_keyboard_arrow_up"/>
+      <item type="drawable" name="ic_language"/>
+      <item type="drawable" name="ic_lock"/>
+      <item type="drawable" name="ic_media_stream"/>
+      <item type="drawable" name="ic_ota_update_current"/>
+      <item type="drawable" name="ic_ota_update_none"/>
+      <item type="drawable" name="ic_ota_update_stale"/>
+      <item type="drawable" name="ic_package_verifier_disabled"/>
+      <item type="drawable" name="ic_package_verifier_enabled"/>
+      <item type="drawable" name="ic_package_verifier_removed"/>
+      <item type="drawable" name="ic_people"/>
+      <item type="drawable" name="ic_placeholder"/>
+      <item type="drawable" name="ic_profile"/>
+      <item type="drawable" name="ic_profile_add"/>
+      <item type="drawable" name="ic_remove_circle"/>
+      <item type="drawable" name="ic_restore"/>
+      <item type="drawable" name="ic_settings_about"/>
+      <item type="drawable" name="ic_settings_auto_wifi"/>
+      <item type="drawable" name="ic_settings_bluetooth"/>
+      <item type="drawable" name="ic_settings_bluetooth_connected"/>
+      <item type="drawable" name="ic_settings_bluetooth_disabled"/>
+      <item type="drawable" name="ic_settings_cellular"/>
+      <item type="drawable" name="ic_settings_data_usage"/>
+      <item type="drawable" name="ic_settings_development"/>
+      <item type="drawable" name="ic_settings_gear"/>
+      <item type="drawable" name="ic_settings_night_display"/>
+      <item type="drawable" name="ic_settings_wifi"/>
+      <item type="drawable" name="ic_settings_wifi_disabled"/>
+      <item type="drawable" name="ic_storage"/>
+      <item type="drawable" name="ic_storage_apps"/>
+      <item type="drawable" name="ic_sync"/>
+      <item type="drawable" name="ic_sync_anim"/>
+      <item type="drawable" name="ic_sync_cancel"/>
+      <item type="drawable" name="ic_sync_problem"/>
+      <item type="drawable" name="ic_system_update"/>
+      <item type="drawable" name="ic_top_level_applications"/>
+      <item type="drawable" name="ic_top_level_assistant_and_voice"/>
+      <item type="drawable" name="ic_top_level_bluetooth"/>
+      <item type="drawable" name="ic_top_level_display"/>
+      <item type="drawable" name="ic_top_level_location"/>
+      <item type="drawable" name="ic_top_level_network_and_internet"/>
+      <item type="drawable" name="ic_top_level_notifications"/>
+      <item type="drawable" name="ic_top_level_privacy"/>
+      <item type="drawable" name="ic_top_level_profiles_and_accounts"/>
+      <item type="drawable" name="ic_top_level_security"/>
+      <item type="drawable" name="ic_top_level_sound"/>
+      <item type="drawable" name="ic_top_level_system"/>
+      <item type="drawable" name="ic_translate"/>
+      <item type="drawable" name="ic_units"/>
+      <item type="drawable" name="ic_warning"/>
+      <item type="drawable" name="ic_wifi_signal_0"/>
+      <item type="drawable" name="ic_wifi_signal_1"/>
+      <item type="drawable" name="ic_wifi_signal_2"/>
+      <item type="drawable" name="ic_wifi_signal_3"/>
+      <item type="drawable" name="ic_wifi_signal_4"/>
+      <item type="drawable" name="ic_wifi_signal_lock"/>
+      <item type="drawable" name="ic_wifi_tethering"/>
+      <item type="drawable" name="preference_highlight_default"/>
+      <item type="drawable" name="privacy_app_permissions"/>
+      <item type="drawable" name="privacy_location"/>
+      <item type="drawable" name="privacy_mic"/>
+      <item type="drawable" name="privacy_vehicle_data"/>
+      <item type="drawable" name="profile_add_circle"/>
+      <item type="drawable" name="profile_avatar_bg_circle"/>
+      <item type="drawable" name="rectangle_ripple_mask"/>
+      <item type="drawable" name="top_level_preference_background"/>
+      <item type="drawable" name="top_level_preference_highlight"/>
+      <item type="drawable" name="wifi_signal"/>
+      <item type="id" name="alphanumeric_pin"/>
+      <item type="id" name="bottomDivider"/>
+      <item type="id" name="build_info"/>
+      <item type="id" name="button1"/>
+      <item type="id" name="button1Icon"/>
+      <item type="id" name="button1Text"/>
+      <item type="id" name="button2"/>
+      <item type="id" name="button2Icon"/>
+      <item type="id" name="button2Text"/>
+      <item type="id" name="button3"/>
+      <item type="id" name="button3Icon"/>
+      <item type="id" name="button3Text"/>
+      <item type="id" name="button4"/>
+      <item type="id" name="button4Icon"/>
+      <item type="id" name="button4Text"/>
+      <item type="id" name="bytes_threshold"/>
+      <item type="id" name="bytes_threshold_container"/>
+      <item type="id" name="bytes_units"/>
+      <item type="id" name="car_settings_activity_wrapper"/>
+      <item type="id" name="carrier_info_text"/>
+      <item type="id" name="checkbox"/>
+      <item type="id" name="current_profile_frame"/>
+      <item type="id" name="cycle_reset_day_of_month"/>
+      <item type="id" name="data_limit_text"/>
+      <item type="id" name="date_picker"/>
+      <item type="id" name="dismiss_button"/>
+      <item type="id" name="down_arrow_container"/>
+      <item type="id" name="entity_header"/>
+      <item type="id" name="entity_header_icon"/>
+      <item type="id" name="entity_header_summary"/>
+      <item type="id" name="entity_header_title"/>
+      <item type="id" name="fragment_container"/>
+      <item type="id" name="fragment_container_wrapper"/>
+      <item type="id" name="guideline_bottom"/>
+      <item type="id" name="guideline_end"/>
+      <item type="id" name="guideline_start"/>
+      <item type="id" name="guideline_top"/>
+      <item type="id" name="hint_text"/>
+      <item type="id" name="icon_background"/>
+      <item type="id" name="icon_container"/>
+      <item type="id" name="icon_frame"/>
+      <item type="id" name="key0"/>
+      <item type="id" name="key1"/>
+      <item type="id" name="key2"/>
+      <item type="id" name="key3"/>
+      <item type="id" name="key4"/>
+      <item type="id" name="key5"/>
+      <item type="id" name="key6"/>
+      <item type="id" name="key7"/>
+      <item type="id" name="key8"/>
+      <item type="id" name="key9"/>
+      <item type="id" name="key_backspace"/>
+      <item type="id" name="key_enter"/>
+      <item type="id" name="lockPattern"/>
+      <item type="id" name="manage_subscription_button"/>
+      <item type="id" name="managed_device"/>
+      <item type="id" name="message"/>
+      <item type="id" name="message_below_pin"/>
+      <item type="id" name="multi_action_preference_divider"/>
+      <item type="id" name="multi_action_preference_first_action_container"/>
+      <item type="id" name="multi_action_preference_item_container1"/>
+      <item type="id" name="multi_action_preference_item_container2"/>
+      <item type="id" name="multi_action_preference_item_container3"/>
+      <item type="id" name="multi_action_preference_second_action_container"/>
+      <item type="id" name="multi_action_preference_toggle_button"/>
+      <item type="id" name="pairing_caption"/>
+      <item type="id" name="pairing_code_message"/>
+      <item type="id" name="pairing_subhead"/>
+      <item type="id" name="password_entry"/>
+      <item type="id" name="phonebook_sharing_message_confirm_pin"/>
+      <item type="id" name="phonebook_sharing_message_confirm_pin_container"/>
+      <item type="id" name="phonebook_sharing_message_confirm_pin_text"/>
+      <item type="id" name="phonebook_sharing_message_entry_pin"/>
+      <item type="id" name="pin_pad"/>
+      <item type="id" name="pin_values_hint"/>
+      <item type="id" name="preference_highlighted"/>
+      <item type="id" name="profile_avatar"/>
+      <item type="id" name="profile_grid"/>
+      <item type="id" name="profile_name"/>
+      <item type="id" name="profile_name_text_edit"/>
+      <item type="id" name="progress_bar_labels"/>
+      <item type="id" name="quick_settings_brightness_seekbar"/>
+      <item type="id" name="quick_settings_list"/>
+      <item type="id" name="regulatory_info"/>
+      <item type="id" name="remaining_billing_cycle_time_text"/>
+      <item type="id" name="restricted_message"/>
+      <item type="id" name="ringtone_picker_selected_id"/>
+      <item type="id" name="settings_car_ui_focus_area"/>
+      <item type="id" name="settings_content_focus_area"/>
+      <item type="id" name="settings_focus_parking_view"/>
+      <item type="id" name="settings_recycler_view"/>
+      <item type="id" name="subtitle_text"/>
+      <item type="id" name="switch_widget"/>
+      <item type="id" name="text"/>
+      <item type="id" name="tile_icon"/>
+      <item type="id" name="tile_text"/>
+      <item type="id" name="time_picker"/>
+      <item type="id" name="title_text"/>
+      <item type="id" name="toolbar_menu_item_0"/>
+      <item type="id" name="toolbar_menu_item_1"/>
+      <item type="id" name="topDivider"/>
+      <item type="id" name="top_level_divider"/>
+      <item type="id" name="top_level_menu"/>
+      <item type="id" name="top_level_menu_container"/>
+      <item type="id" name="top_level_recycler_view"/>
+      <item type="id" name="up_arrow_container"/>
+      <item type="id" name="widget_summary"/>
+      <item type="integer" name="button_max_ems"/>
+      <item type="integer" name="clear_content_timeout_ms"/>
+      <item type="integer" name="config_networkAvoidBadWifi"/>
+      <item type="integer" name="config_top_level_icon_shape"/>
+      <item type="integer" name="content_weight"/>
+      <item type="integer" name="data_usage_bytes_threshold_ems"/>
+      <item type="integer" name="default_app_safe_icon_size"/>
+      <item type="integer" name="enable_developer_settings_click_count"/>
+      <item type="integer" name="enable_developer_settings_clicks_to_show_toast_count"/>
+      <item type="integer" name="illustration_weight"/>
+      <item type="integer" name="limited_wifi_entry_list_count"/>
+      <item type="integer" name="max_device_policies_shown"/>
+      <item type="integer" name="millisecond_app_data_update_interval"/>
+      <item type="integer" name="millisecond_max_app_load_wait_interval"/>
+      <item type="integer" name="quick_setting_column_count"/>
+      <item type="integer" name="recent_apps_days_threshold"/>
+      <item type="integer" name="recent_apps_max_count"/>
+      <item type="integer" name="recent_notifications_apps_list_count"/>
+      <item type="integer" name="recent_notifications_days_threshold"/>
+      <item type="integer" name="user_switcher_num_col"/>
+      <item type="layout" name="action_buttons_preference"/>
+      <item type="layout" name="bluetooth_pin_confirm"/>
+      <item type="layout" name="bluetooth_pin_entry"/>
+      <item type="layout" name="brightness_tile"/>
+      <item type="layout" name="car_setting_activity"/>
+      <item type="layout" name="choose_lock_password"/>
+      <item type="layout" name="choose_lock_pattern"/>
+      <item type="layout" name="choose_lock_pin"/>
+      <item type="layout" name="confirm_lock_password"/>
+      <item type="layout" name="confirm_lock_pattern"/>
+      <item type="layout" name="confirm_lock_pin"/>
+      <item type="layout" name="data_usage_summary_preference"/>
+      <item type="layout" name="date_picker"/>
+      <item type="layout" name="delete_preference_widget"/>
+      <item type="layout" name="divider_preference"/>
+      <item type="layout" name="dropdown_preference_widget"/>
+      <item type="layout" name="edit_profile_name_fragment"/>
+      <item type="layout" name="entity_header_preference"/>
+      <item type="layout" name="fallback_home_finishing_boot"/>
+      <item type="layout" name="logical_preference_group"/>
+      <item type="layout" name="multi_action_preference"/>
+      <item type="layout" name="multi_action_preference_toggle_button"/>
+      <item type="layout" name="pin_pad_view"/>
+      <item type="layout" name="preference_dialog_password_edittext"/>
+      <item type="layout" name="preference_settings_icon"/>
+      <item type="layout" name="preference_wifi_entry"/>
+      <item type="layout" name="profile_switcher"/>
+      <item type="layout" name="profile_switcher_pod"/>
+      <item type="layout" name="progress_bar_preference"/>
+      <item type="layout" name="quick_settings"/>
+      <item type="layout" name="regulatory_info"/>
+      <item type="layout" name="settings_preference_fragment"/>
+      <item type="layout" name="settings_recyclerview_default"/>
+      <item type="layout" name="suggestion_preference"/>
+      <item type="layout" name="summary_preference_widget"/>
+      <item type="layout" name="switch_widget"/>
+      <item type="layout" name="tile"/>
+      <item type="layout" name="time_picker"/>
+      <item type="layout" name="top_level_preference"/>
+      <item type="layout" name="top_level_recyclerview"/>
+      <item type="layout" name="usage_bytes_threshold_picker"/>
+      <item type="layout" name="usage_cycle_reset_day_of_month_picker"/>
+      <item type="layout" name="usage_indicator_preference"/>
+      <item type="plurals" name="billing_cycle_days_left"/>
+      <item type="plurals" name="lockpassword_password_requires_letters"/>
+      <item type="plurals" name="lockpassword_password_requires_lowercase"/>
+      <item type="plurals" name="lockpassword_password_requires_nonletter"/>
+      <item type="plurals" name="lockpassword_password_requires_numeric"/>
+      <item type="plurals" name="lockpassword_password_requires_symbols"/>
+      <item type="plurals" name="lockpassword_password_requires_uppercase"/>
+      <item type="plurals" name="mobile_network_summary_count"/>
+      <item type="plurals" name="runtime_permissions_additional_count"/>
+      <item type="plurals" name="show_dev_countdown"/>
+      <item type="plurals" name="unused_apps_summary"/>
+      <item type="plurals" name="user_limit_reached_message"/>
+      <item type="string" name="about_settings"/>
+      <item type="string" name="about_settings_summary"/>
+      <item type="string" name="about_summary"/>
+      <item type="string" name="access_point_tag_key"/>
+      <item type="string" name="account_auto_sync_summary"/>
+      <item type="string" name="account_auto_sync_title"/>
+      <item type="string" name="account_details_title"/>
+      <item type="string" name="account_list_title"/>
+      <item type="string" name="account_sync_summary_all_off"/>
+      <item type="string" name="account_sync_summary_all_on"/>
+      <item type="string" name="account_sync_summary_some_on"/>
+      <item type="string" name="account_sync_title"/>
+      <item type="string" name="accounts_settings_title"/>
+      <item type="string" name="action_not_reversible_message"/>
+      <item type="string" name="action_unavailable"/>
+      <item type="string" name="add_a_profile_button_text"/>
+      <item type="string" name="add_account_title"/>
+      <item type="string" name="add_an_account"/>
+      <item type="string" name="add_device_admin"/>
+      <item type="string" name="add_device_admin_msg"/>
+      <item type="string" name="add_profile_text"/>
+      <item type="string" name="add_user_error_title"/>
+      <item type="string" name="add_user_restricted_while_driving"/>
+      <item type="string" name="admin_device_owner_message"/>
+      <item type="string" name="admin_financed_message"/>
+      <item type="string" name="admin_profile_owner_message"/>
+      <item type="string" name="admin_profile_owner_user_message"/>
+      <item type="string" name="admin_support_more_info"/>
+      <item type="string" name="alarm_ringtone_title"/>
+      <item type="string" name="alarm_volume_title"/>
+      <item type="string" name="all_applications"/>
+      <item type="string" name="allow"/>
+      <item type="string" name="app_data_usage"/>
+      <item type="string" name="app_disable_dialog_positive"/>
+      <item type="string" name="app_disable_dialog_text"/>
+      <item type="string" name="app_launch_domain_links_title"/>
+      <item type="string" name="app_launch_open_domain_urls_title"/>
+      <item type="string" name="app_launch_other_defaults_title"/>
+      <item type="string" name="app_launch_supported_domain_urls_title"/>
+      <item type="string" name="app_launch_title"/>
+      <item type="string" name="app_link_open_always"/>
+      <item type="string" name="app_link_open_ask"/>
+      <item type="string" name="app_link_open_never"/>
+      <item type="string" name="app_list_preference_none"/>
+      <item type="string" name="app_permissions"/>
+      <item type="string" name="app_permissions_summary"/>
+      <item type="string" name="app_usage_cycle"/>
+      <item type="string" name="application_version_label"/>
+      <item type="string" name="applications_settings"/>
+      <item type="string" name="apps_and_notifications_settings"/>
+      <item type="string" name="apps_default_apps_summary"/>
+      <item type="string" name="apps_permission_manager_summary"/>
+      <item type="string" name="apps_permission_manager_title"/>
+      <item type="string" name="apps_recently_opened"/>
+      <item type="string" name="apps_settings_title"/>
+      <item type="string" name="apps_special_app_access_summary"/>
+      <item type="string" name="apps_view_all_apps_title"/>
+      <item type="string" name="assist_access_context_summary"/>
+      <item type="string" name="assist_access_context_title"/>
+      <item type="string" name="assist_access_screenshot_summary"/>
+      <item type="string" name="assist_access_screenshot_title"/>
+      <item type="string" name="assist_and_voice_input_settings"/>
+      <item type="string" name="assist_app_settings"/>
+      <item type="string" name="assistant_and_voice_assistant_app_title"/>
+      <item type="string" name="assistant_and_voice_setting_title"/>
+      <item type="string" name="assistant_and_voice_use_screenshot_summary"/>
+      <item type="string" name="assistant_and_voice_use_screenshot_title"/>
+      <item type="string" name="assistant_and_voice_use_text_from_screen_summary"/>
+      <item type="string" name="assistant_and_voice_use_text_from_screen_title"/>
+      <item type="string" name="assistant_security_warning"/>
+      <item type="string" name="auto_brightness_summary"/>
+      <item type="string" name="auto_brightness_title"/>
+      <item type="string" name="auto_launch_disable_text"/>
+      <item type="string" name="auto_launch_enable_text"/>
+      <item type="string" name="auto_launch_reset_text"/>
+      <item type="string" name="autofill_add_service"/>
+      <item type="string" name="autofill_confirmation_message"/>
+      <item type="string" name="autofill_settings_title"/>
+      <item type="string" name="backspace_key"/>
+      <item type="string" name="baseband_version"/>
+      <item type="string" name="billing_cycle_less_than_one_day_left"/>
+      <item type="string" name="billing_cycle_none_left"/>
+      <item type="string" name="bluetooth_ask_disablement"/>
+      <item type="string" name="bluetooth_ask_disablement_no_name"/>
+      <item type="string" name="bluetooth_ask_discovery"/>
+      <item type="string" name="bluetooth_ask_discovery_no_name"/>
+      <item type="string" name="bluetooth_ask_enablement"/>
+      <item type="string" name="bluetooth_ask_enablement_and_discovery"/>
+      <item type="string" name="bluetooth_ask_enablement_and_discovery_no_name"/>
+      <item type="string" name="bluetooth_ask_enablement_no_name"/>
+      <item type="string" name="bluetooth_available_devices"/>
+      <item type="string" name="bluetooth_device"/>
+      <item type="string" name="bluetooth_device_connected_toast"/>
+      <item type="string" name="bluetooth_device_context_pair_connect"/>
+      <item type="string" name="bluetooth_device_disconnected_toast"/>
+      <item type="string" name="bluetooth_device_mac_address"/>
+      <item type="string" name="bluetooth_device_picker"/>
+      <item type="string" name="bluetooth_disconnect_all_profiles"/>
+      <item type="string" name="bluetooth_disconnect_title"/>
+      <item type="string" name="bluetooth_enable_alphanumeric_pin"/>
+      <item type="string" name="bluetooth_enter_passkey_msg"/>
+      <item type="string" name="bluetooth_enter_passkey_other_device"/>
+      <item type="string" name="bluetooth_enter_pin_other_device"/>
+      <item type="string" name="bluetooth_error_title"/>
+      <item type="string" name="bluetooth_mac_address"/>
+      <item type="string" name="bluetooth_my_devices"/>
+      <item type="string" name="bluetooth_name"/>
+      <item type="string" name="bluetooth_notif_message"/>
+      <item type="string" name="bluetooth_notif_ticker"/>
+      <item type="string" name="bluetooth_notif_title"/>
+      <item type="string" name="bluetooth_pair_new_device"/>
+      <item type="string" name="bluetooth_pair_new_device_summary"/>
+      <item type="string" name="bluetooth_paired_devices"/>
+      <item type="string" name="bluetooth_pairing_key_msg"/>
+      <item type="string" name="bluetooth_pairing_request"/>
+      <item type="string" name="bluetooth_pairing_shares_phonebook"/>
+      <item type="string" name="bluetooth_pin_values_hint"/>
+      <item type="string" name="bluetooth_pin_values_hint_16_digits"/>
+      <item type="string" name="bluetooth_previously_connected"/>
+      <item type="string" name="bluetooth_profiles"/>
+      <item type="string" name="bluetooth_rename_button"/>
+      <item type="string" name="bluetooth_rename_device"/>
+      <item type="string" name="bluetooth_rename_vehicle"/>
+      <item type="string" name="bluetooth_settings_title"/>
+      <item type="string" name="bluetooth_state_switch_content_description"/>
+      <item type="string" name="bluetooth_state_switch_summary"/>
+      <item type="string" name="bluetooth_turning_off"/>
+      <item type="string" name="bluetooth_turning_on"/>
+      <item type="string" name="bluetooth_vehicle_mac_address"/>
+      <item type="string" name="brightness"/>
+      <item type="string" name="build_info_fmt"/>
+      <item type="string" name="build_number"/>
+      <item type="string" name="cancel"/>
+      <item type="string" name="carrier_and_update_now_text"/>
+      <item type="string" name="carrier_and_update_text"/>
+      <item type="string" name="cell_data_limit"/>
+      <item type="string" name="cell_data_warning"/>
+      <item type="string" name="cell_data_warning_and_limit"/>
+      <item type="string" name="choose_lock_password_hints"/>
+      <item type="string" name="choose_lock_password_message"/>
+      <item type="string" name="choose_lock_pattern_message"/>
+      <item type="string" name="choose_lock_pin_hints"/>
+      <item type="string" name="choose_lock_pin_message"/>
+      <item type="string" name="choose_new_admin_label"/>
+      <item type="string" name="choose_new_admin_message"/>
+      <item type="string" name="choose_new_admin_title"/>
+      <item type="string" name="computing_size"/>
+      <item type="string" name="condition_night_display_title"/>
+      <item type="string" name="config_dev_options_module"/>
+      <item type="string" name="config_homepage_fragment_class"/>
+      <item type="string" name="config_settingsintelligence_package_name"/>
+      <item type="string" name="confirm_grant_admin"/>
+      <item type="string" name="confirm_mobile_data_disable"/>
+      <item type="string" name="confirm_passwords_dont_match"/>
+      <item type="string" name="confirm_pins_dont_match"/>
+      <item type="string" name="confirm_your_password_header"/>
+      <item type="string" name="confirm_your_pin_header"/>
+      <item type="string" name="connect"/>
+      <item type="string" name="continue_button_text"/>
+      <item type="string" name="contributors_title"/>
+      <item type="string" name="copyright_title"/>
+      <item type="string" name="create_user_permission_title"/>
+      <item type="string" name="credentials_erased"/>
+      <item type="string" name="credentials_not_erased"/>
+      <item type="string" name="credentials_reset"/>
+      <item type="string" name="credentials_reset_hint"/>
+      <item type="string" name="credentials_reset_summary"/>
+      <item type="string" name="current_screen_lock"/>
+      <item type="string" name="current_user_name"/>
+      <item type="string" name="cycle_reset_day_of_month_picker_positive_button"/>
+      <item type="string" name="cycle_reset_day_of_month_picker_subtitle"/>
+      <item type="string" name="cycle_reset_day_of_month_picker_title"/>
+      <item type="string" name="data_limit"/>
+      <item type="string" name="data_usage_app_restricted"/>
+      <item type="string" name="data_usage_app_summary_title"/>
+      <item type="string" name="data_usage_auto_sync_off_dialog"/>
+      <item type="string" name="data_usage_auto_sync_off_dialog_title"/>
+      <item type="string" name="data_usage_auto_sync_on_dialog"/>
+      <item type="string" name="data_usage_auto_sync_on_dialog_title"/>
+      <item type="string" name="data_usage_limit_dialog_mobile"/>
+      <item type="string" name="data_usage_limit_dialog_title"/>
+      <item type="string" name="data_usage_limit_editor_title"/>
+      <item type="string" name="data_usage_settings"/>
+      <item type="string" name="data_usage_summary_title"/>
+      <item type="string" name="data_usage_title"/>
+      <item type="string" name="data_usage_warning_editor_title"/>
+      <item type="string" name="data_used_formatted"/>
+      <item type="string" name="data_warning"/>
+      <item type="string" name="data_warning_limit_title"/>
+      <item type="string" name="date_and_time_settings_summary"/>
+      <item type="string" name="date_and_time_settings_title"/>
+      <item type="string" name="date_picker_title"/>
+      <item type="string" name="date_time_24hour"/>
+      <item type="string" name="date_time_24hour_title"/>
+      <item type="string" name="date_time_auto"/>
+      <item type="string" name="date_time_set_date"/>
+      <item type="string" name="date_time_set_date_title"/>
+      <item type="string" name="date_time_set_time"/>
+      <item type="string" name="date_time_set_time_title"/>
+      <item type="string" name="date_time_set_timezone"/>
+      <item type="string" name="date_time_set_timezone_title"/>
+      <item type="string" name="decline_remote_bugreport_action"/>
+      <item type="string" name="default_admin_support_msg"/>
+      <item type="string" name="default_app_selected_app"/>
+      <item type="string" name="default_applications"/>
+      <item type="string" name="default_network_name_summary"/>
+      <item type="string" name="default_password_summary"/>
+      <item type="string" name="default_search_query"/>
+      <item type="string" name="delete_button"/>
+      <item type="string" name="delete_last_user_delete_warning"/>
+      <item type="string" name="delete_last_user_dialog_title"/>
+      <item type="string" name="delete_last_user_system_setup_required_message"/>
+      <item type="string" name="delete_this_profile_text"/>
+      <item type="string" name="delete_user_dialog_message"/>
+      <item type="string" name="delete_user_dialog_title"/>
+      <item type="string" name="delete_user_error_dismiss"/>
+      <item type="string" name="delete_user_error_retry"/>
+      <item type="string" name="delete_user_error_set_ephemeral_title"/>
+      <item type="string" name="delete_user_error_title"/>
+      <item type="string" name="deny"/>
+      <item type="string" name="developer_options_settings"/>
+      <item type="string" name="device_admin_add_title"/>
+      <item type="string" name="device_admin_status"/>
+      <item type="string" name="device_admin_warning"/>
+      <item type="string" name="device_info_not_available"/>
+      <item type="string" name="device_status"/>
+      <item type="string" name="device_status_activity_title"/>
+      <item type="string" name="device_status_summary"/>
+      <item type="string" name="direct_boot_unaware_dialog_message_car"/>
+      <item type="string" name="disable_text"/>
+      <item type="string" name="disabled_by_policy_content_biometric_parental_consent"/>
+      <item type="string" name="disabled_by_policy_title"/>
+      <item type="string" name="disabled_by_policy_title_adjust_volume"/>
+      <item type="string" name="disabled_by_policy_title_biometric_parental_consent"/>
+      <item type="string" name="disabled_by_policy_title_camera"/>
+      <item type="string" name="disabled_by_policy_title_financed_device"/>
+      <item type="string" name="disabled_by_policy_title_outgoing_calls"/>
+      <item type="string" name="disabled_by_policy_title_screen_capture"/>
+      <item type="string" name="disabled_by_policy_title_sms"/>
+      <item type="string" name="disabled_by_policy_title_suspend_packages"/>
+      <item type="string" name="disconnect"/>
+      <item type="string" name="display_brightness"/>
+      <item type="string" name="display_night_mode_summary"/>
+      <item type="string" name="display_settings"/>
+      <item type="string" name="domain_url_section_title"/>
+      <item type="string" name="domain_urls_summary_none"/>
+      <item type="string" name="domain_urls_summary_one"/>
+      <item type="string" name="domain_urls_summary_some"/>
+      <item type="string" name="edit_user_name_title"/>
+      <item type="string" name="eight"/>
+      <item type="string" name="empty_placeholder"/>
+      <item type="string" name="enable_text"/>
+      <item type="string" name="enter_key"/>
+      <item type="string" name="error_saving_lockpattern"/>
+      <item type="string" name="error_saving_lockpin"/>
+      <item type="string" name="error_saving_password"/>
+      <item type="string" name="exit_retail_button_text"/>
+      <item type="string" name="exit_retail_mode_dialog_body"/>
+      <item type="string" name="exit_retail_mode_dialog_confirmation_button_text"/>
+      <item type="string" name="exit_retail_mode_dialog_title"/>
+      <item type="string" name="factory_reset_accounts"/>
+      <item type="string" name="factory_reset_button_text"/>
+      <item type="string" name="factory_reset_confirm_button_text"/>
+      <item type="string" name="factory_reset_confirm_desc"/>
+      <item type="string" name="factory_reset_confirm_title"/>
+      <item type="string" name="factory_reset_desc"/>
+      <item type="string" name="factory_reset_other_users_present"/>
+      <item type="string" name="factory_reset_progress_text"/>
+      <item type="string" name="factory_reset_progress_title"/>
+      <item type="string" name="factory_reset_summary"/>
+      <item type="string" name="factory_reset_title"/>
+      <item type="string" name="firmware_version"/>
+      <item type="string" name="five"/>
+      <item type="string" name="force_stop"/>
+      <item type="string" name="force_stop_dialog_text"/>
+      <item type="string" name="force_stop_dialog_title"/>
+      <item type="string" name="forget"/>
+      <item type="string" name="four"/>
+      <item type="string" name="grant_admin_permissions_button_text"/>
+      <item type="string" name="grant_admin_permissions_message"/>
+      <item type="string" name="grant_admin_permissions_title"/>
+      <item type="string" name="hardware_info"/>
+      <item type="string" name="hardware_info_summary"/>
+      <item type="string" name="hardware_revision"/>
+      <item type="string" name="help_uri_wifi_scanning_required"/>
+      <item type="string" name="help_url_action_disabled_by_it_admin"/>
+      <item type="string" name="hide_system"/>
+      <item type="string" name="hide_system_apps"/>
+      <item type="string" name="hk_AboutSettingsActivity"/>
+      <item type="string" name="hk_AddWifiActivity"/>
+      <item type="string" name="hk_ApplicationsDetailsActivity"/>
+      <item type="string" name="hk_ApplicationsSettingsActivity"/>
+      <item type="string" name="hk_AppsActivity"/>
+      <item type="string" name="hk_AssistantAndVoiceSettingsActivity"/>
+      <item type="string" name="hk_BluetoothDevicePickerActivity"/>
+      <item type="string" name="hk_BluetoothSettingsActivity"/>
+      <item type="string" name="hk_ChooseAccountActivity"/>
+      <item type="string" name="hk_DataUsageActivity"/>
+      <item type="string" name="hk_DataWarningAndLimitActivity"/>
+      <item type="string" name="hk_DatetimeSettingsActivity"/>
+      <item type="string" name="hk_DefaultAutofillPickerActivity"/>
+      <item type="string" name="hk_DisplaySettingsActivity"/>
+      <item type="string" name="hk_HomepageActivity"/>
+      <item type="string" name="hk_KeyboardActivity"/>
+      <item type="string" name="hk_LanguagePickerActivity"/>
+      <item type="string" name="hk_LanguagesAndInputActivity"/>
+      <item type="string" name="hk_LegalInformationActivity"/>
+      <item type="string" name="hk_LocationSettingsActivity"/>
+      <item type="string" name="hk_MobileNetworkActivity"/>
+      <item type="string" name="hk_MobileNetworkListActivity"/>
+      <item type="string" name="hk_ModifySystemSettingsActivity"/>
+      <item type="string" name="hk_NetworkAndInternetActivity"/>
+      <item type="string" name="hk_NotificationAccessActivity"/>
+      <item type="string" name="hk_NotificationsActivity"/>
+      <item type="string" name="hk_PremiumSmsAccessActivity"/>
+      <item type="string" name="hk_PrivacySettingsActivity"/>
+      <item type="string" name="hk_ProfileDetailsActivity"/>
+      <item type="string" name="hk_ResetOptionsActivity"/>
+      <item type="string" name="hk_RingtonePickerActivity"/>
+      <item type="string" name="hk_SecuritySettingsActivity"/>
+      <item type="string" name="hk_SoundSettingsActivity"/>
+      <item type="string" name="hk_SpecialAccessSettingsActivity"/>
+      <item type="string" name="hk_StorageSettingsActivity"/>
+      <item type="string" name="hk_SystemSettingsActivity"/>
+      <item type="string" name="hk_TextToSpeechOutputActivity"/>
+      <item type="string" name="hk_UnitsSettingsActivity"/>
+      <item type="string" name="hk_UsageAccessActivity"/>
+      <item type="string" name="hk_VehicleDataActivity"/>
+      <item type="string" name="hk_WifiControlActivity"/>
+      <item type="string" name="hk_WifiPreferencesActivity"/>
+      <item type="string" name="hk_WifiSettingsActivity"/>
+      <item type="string" name="hk_WifiTetherActivity"/>
+      <item type="string" name="hotspot_settings_title"/>
+      <item type="string" name="incoming_call_volume_title"/>
+      <item type="string" name="install_apps_permission_title"/>
+      <item type="string" name="kernel_version"/>
+      <item type="string" name="keyboard_settings"/>
+      <item type="string" name="keywords_display"/>
+      <item type="string" name="keywords_display_auto_brightness"/>
+      <item type="string" name="keywords_display_brightness_level"/>
+      <item type="string" name="keywords_display_night_display"/>
+      <item type="string" name="language_picker_list_all_header"/>
+      <item type="string" name="language_picker_list_suggested_header"/>
+      <item type="string" name="language_settings"/>
+      <item type="string" name="languages_and_input_settings"/>
+      <item type="string" name="last_synced"/>
+      <item type="string" name="launch_manage_plan_text"/>
+      <item type="string" name="learn_more"/>
+      <item type="string" name="legal_information"/>
+      <item type="string" name="license_title"/>
+      <item type="string" name="link_speed"/>
+      <item type="string" name="loading_wifi_list"/>
+      <item type="string" name="location_settings_app_permissions_title"/>
+      <item type="string" name="location_settings_footer"/>
+      <item type="string" name="location_settings_recent_requests_empty_message"/>
+      <item type="string" name="location_settings_recent_requests_title"/>
+      <item type="string" name="location_settings_services_title"/>
+      <item type="string" name="location_settings_title"/>
+      <item type="string" name="location_state_switch_content_description"/>
+      <item type="string" name="location_use_location_title"/>
+      <item type="string" name="lock_settings_enter_password"/>
+      <item type="string" name="lock_settings_enter_pattern"/>
+      <item type="string" name="lock_settings_enter_pin"/>
+      <item type="string" name="lock_settings_picker_title"/>
+      <item type="string" name="lockpassword_cancel_label"/>
+      <item type="string" name="lockpassword_clear_label"/>
+      <item type="string" name="lockpassword_confirm_label"/>
+      <item type="string" name="lockpassword_illegal_character"/>
+      <item type="string" name="lockpassword_invalid_password"/>
+      <item type="string" name="lockpassword_password_denylisted_by_admin"/>
+      <item type="string" name="lockpassword_password_recently_used"/>
+      <item type="string" name="lockpassword_password_too_long"/>
+      <item type="string" name="lockpassword_password_too_short"/>
+      <item type="string" name="lockpassword_pin_contains_non_digits"/>
+      <item type="string" name="lockpassword_pin_denylisted_by_admin"/>
+      <item type="string" name="lockpassword_pin_no_sequential_digits"/>
+      <item type="string" name="lockpassword_pin_recently_used"/>
+      <item type="string" name="lockpassword_pin_too_long"/>
+      <item type="string" name="lockpassword_pin_too_short"/>
+      <item type="string" name="lockpattern_cancel_button_text"/>
+      <item type="string" name="lockpattern_confirm_button_text"/>
+      <item type="string" name="lockpattern_need_to_confirm"/>
+      <item type="string" name="lockpattern_pattern_confirmed"/>
+      <item type="string" name="lockpattern_pattern_entered"/>
+      <item type="string" name="lockpattern_pattern_wrong"/>
+      <item type="string" name="lockpattern_recording_incorrect_too_short"/>
+      <item type="string" name="lockpattern_recording_inprogress"/>
+      <item type="string" name="lockpattern_recording_intro_header"/>
+      <item type="string" name="lockpattern_restart_button_text"/>
+      <item type="string" name="lockpattern_retry_button_text"/>
+      <item type="string" name="lockpattern_settings_help_how_to_record"/>
+      <item type="string" name="lockpattern_too_many_failed_confirmation_attempts"/>
+      <item type="string" name="lockpin_invalid_pin"/>
+      <item type="string" name="lockscreen_choose_your_password"/>
+      <item type="string" name="lockscreen_choose_your_pin"/>
+      <item type="string" name="lockscreen_retry_button_text"/>
+      <item type="string" name="lockscreen_skip_button_text"/>
+      <item type="string" name="lockscreen_wrong_password"/>
+      <item type="string" name="lockscreen_wrong_pin"/>
+      <item type="string" name="manage_keyboard"/>
+      <item type="string" name="manage_other_profiles_button_text"/>
+      <item type="string" name="manual"/>
+      <item type="string" name="media_volume_summary"/>
+      <item type="string" name="media_volume_title"/>
+      <item type="string" name="memory_calculating_size"/>
+      <item type="string" name="mobile_network_active_esim"/>
+      <item type="string" name="mobile_network_active_sim"/>
+      <item type="string" name="mobile_network_inactive_esim"/>
+      <item type="string" name="mobile_network_inactive_sim"/>
+      <item type="string" name="mobile_network_list_add_more"/>
+      <item type="string" name="mobile_network_settings"/>
+      <item type="string" name="mobile_network_toggle_summary"/>
+      <item type="string" name="mobile_network_toggle_title"/>
+      <item type="string" name="model_info"/>
+      <item type="string" name="modify_system_settings_description"/>
+      <item type="string" name="modify_system_settings_title"/>
+      <item type="string" name="more_settings_label"/>
+      <item type="string" name="more_special_access_title"/>
+      <item type="string" name="mute_mic_summary"/>
+      <item type="string" name="mute_mic_title"/>
+      <item type="string" name="name_input_blank_error"/>
+      <item type="string" name="name_input_invalid_error"/>
+      <item type="string" name="navi_volume_title"/>
+      <item type="string" name="network_and_internet"/>
+      <item type="string" name="network_and_internet_data_usage_time_range_summary"/>
+      <item type="string" name="network_and_internet_join_other_network_title"/>
+      <item type="string" name="network_and_internet_network_preferences_title"/>
+      <item type="string" name="network_and_internet_oem_network_title"/>
+      <item type="string" name="network_connection_connect_successful"/>
+      <item type="string" name="network_connection_errorstate_dialog_message"/>
+      <item type="string" name="network_connection_request_dialog_showall"/>
+      <item type="string" name="network_connection_request_dialog_title"/>
+      <item type="string" name="network_connection_timeout_dialog_message"/>
+      <item type="string" name="network_connection_timeout_dialog_ok"/>
+      <item type="string" name="night_mode_tile_label"/>
+      <item type="string" name="nine"/>
+      <item type="string" name="no_accounts_added"/>
+      <item type="string" name="no_carrier_update_now_text"/>
+      <item type="string" name="no_carrier_update_text"/>
+      <item type="string" name="not_installed"/>
+      <item type="string" name="notification_access_title"/>
+      <item type="string" name="notification_listener_revoke_warning_cancel"/>
+      <item type="string" name="notification_listener_revoke_warning_confirm"/>
+      <item type="string" name="notification_listener_revoke_warning_summary"/>
+      <item type="string" name="notification_listener_security_warning_summary"/>
+      <item type="string" name="notification_listener_security_warning_title"/>
+      <item type="string" name="notification_ringtone_title"/>
+      <item type="string" name="notification_volume_title"/>
+      <item type="string" name="notifications_all_apps"/>
+      <item type="string" name="notifications_label"/>
+      <item type="string" name="notifications_recently_sent"/>
+      <item type="string" name="okay"/>
+      <item type="string" name="one"/>
+      <item type="string" name="outgoing_calls_permission_title"/>
+      <item type="string" name="peak_performance_dialog_action_off"/>
+      <item type="string" name="peak_performance_dialog_action_on"/>
+      <item type="string" name="peak_performance_dialog_text"/>
+      <item type="string" name="peak_performance_dialog_title"/>
+      <item type="string" name="peak_performance_label"/>
+      <item type="string" name="peak_performance_summary"/>
+      <item type="string" name="permissions_label"/>
+      <item type="string" name="power_component_disabled"/>
+      <item type="string" name="premium_sms_access_description"/>
+      <item type="string" name="premium_sms_access_title"/>
+      <item type="string" name="privacy_location_summary"/>
+      <item type="string" name="privacy_settings_title"/>
+      <item type="string" name="privacy_vehicle_data_title"/>
+      <item type="string" name="profiles_and_accounts_settings_title"/>
+      <item type="string" name="profiles_list_title"/>
+      <item type="string" name="progress_scanning"/>
+      <item type="string" name="really_remove_account_message"/>
+      <item type="string" name="really_remove_account_title"/>
+      <item type="string" name="regulatory_info_text"/>
+      <item type="string" name="regulatory_labels"/>
+      <item type="string" name="remove_account_error_title"/>
+      <item type="string" name="remove_account_title"/>
+      <item type="string" name="remove_button"/>
+      <item type="string" name="remove_device_admin"/>
+      <item type="string" name="remove_screen_lock_message"/>
+      <item type="string" name="remove_screen_lock_title"/>
+      <item type="string" name="reset_app_pref_button_text"/>
+      <item type="string" name="reset_app_pref_complete_toast"/>
+      <item type="string" name="reset_app_pref_desc"/>
+      <item type="string" name="reset_app_pref_title"/>
+      <item type="string" name="reset_esim_desc"/>
+      <item type="string" name="reset_esim_error_title"/>
+      <item type="string" name="reset_esim_title"/>
+      <item type="string" name="reset_network_button_text"/>
+      <item type="string" name="reset_network_complete_toast"/>
+      <item type="string" name="reset_network_confirm_button_text"/>
+      <item type="string" name="reset_network_confirm_desc"/>
+      <item type="string" name="reset_network_confirm_title"/>
+      <item type="string" name="reset_network_desc"/>
+      <item type="string" name="reset_network_fallback_subscription_name"/>
+      <item type="string" name="reset_network_item_bluetooth"/>
+      <item type="string" name="reset_network_item_mobile"/>
+      <item type="string" name="reset_network_item_wifi"/>
+      <item type="string" name="reset_network_select"/>
+      <item type="string" name="reset_network_title"/>
+      <item type="string" name="reset_options_summary"/>
+      <item type="string" name="reset_options_title"/>
+      <item type="string" name="restricted_while_driving"/>
+      <item type="string" name="ring_volume_title"/>
+      <item type="string" name="ringtone_picker_save_title"/>
+      <item type="string" name="ringtone_title"/>
+      <item type="string" name="roaming_alert_title"/>
+      <item type="string" name="roaming_summary"/>
+      <item type="string" name="roaming_title"/>
+      <item type="string" name="roaming_warning"/>
+      <item type="string" name="runtime_permissions_summary_no_permissions_granted"/>
+      <item type="string" name="runtime_permissions_summary_no_permissions_requested"/>
+      <item type="string" name="safety_and_regulatory_info"/>
+      <item type="string" name="screen_lock_options"/>
+      <item type="string" name="security_lock_none"/>
+      <item type="string" name="security_lock_password"/>
+      <item type="string" name="security_lock_pattern"/>
+      <item type="string" name="security_lock_pin"/>
+      <item type="string" name="security_patch"/>
+      <item type="string" name="security_profile_lock_title"/>
+      <item type="string" name="security_settings_subtitle"/>
+      <item type="string" name="security_settings_title"/>
+      <item type="string" name="security_unlock_profile_summary"/>
+      <item type="string" name="set_data_limit"/>
+      <item type="string" name="set_data_warning"/>
+      <item type="string" name="set_screen_lock"/>
+      <item type="string" name="settings_label"/>
+      <item type="string" name="settings_license_activity_loading"/>
+      <item type="string" name="settings_license_activity_title"/>
+      <item type="string" name="settings_license_activity_unavailable"/>
+      <item type="string" name="setup_lock_settings_options_button_label"/>
+      <item type="string" name="seven"/>
+      <item type="string" name="share_remote_bugreport_action"/>
+      <item type="string" name="share_remote_bugreport_dialog_message"/>
+      <item type="string" name="share_remote_bugreport_dialog_message_finished"/>
+      <item type="string" name="share_remote_bugreport_dialog_title"/>
+      <item type="string" name="sharing_remote_bugreport_dialog_message"/>
+      <item type="string" name="show_dev_already"/>
+      <item type="string" name="show_dev_on"/>
+      <item type="string" name="show_password"/>
+      <item type="string" name="show_system"/>
+      <item type="string" name="signed_in_admin_user"/>
+      <item type="string" name="sim_change_data_message"/>
+      <item type="string" name="sim_change_data_ok"/>
+      <item type="string" name="sim_change_data_title"/>
+      <item type="string" name="sim_selection_required_pref"/>
+      <item type="string" name="six"/>
+      <item type="string" name="sms_messaging_permission_title"/>
+      <item type="string" name="sound_alert_sounds"/>
+      <item type="string" name="sound_alert_sounds_summary"/>
+      <item type="string" name="sound_settings"/>
+      <item type="string" name="special_access"/>
+      <item type="string" name="start_guest_session"/>
+      <item type="string" name="status_serial_number"/>
+      <item type="string" name="storage_application_label"/>
+      <item type="string" name="storage_application_size_label"/>
+      <item type="string" name="storage_audio_files_title"/>
+      <item type="string" name="storage_cache_size_label"/>
+      <item type="string" name="storage_clear_cache_btn_text"/>
+      <item type="string" name="storage_clear_data_dlg_text"/>
+      <item type="string" name="storage_clear_data_dlg_title"/>
+      <item type="string" name="storage_clear_failed_dlg_text"/>
+      <item type="string" name="storage_clear_user_data_text"/>
+      <item type="string" name="storage_data_size_label"/>
+      <item type="string" name="storage_detail_dialog_system"/>
+      <item type="string" name="storage_files"/>
+      <item type="string" name="storage_music_audio"/>
+      <item type="string" name="storage_other_apps"/>
+      <item type="string" name="storage_settings_title"/>
+      <item type="string" name="storage_system"/>
+      <item type="string" name="storage_total_size_label"/>
+      <item type="string" name="storage_type_internal"/>
+      <item type="string" name="storage_unmount_failure"/>
+      <item type="string" name="storage_unmount_success"/>
+      <item type="string" name="suggestion_dismiss_button"/>
+      <item type="string" name="sync_button_sync_cancel"/>
+      <item type="string" name="sync_button_sync_now"/>
+      <item type="string" name="sync_disabled"/>
+      <item type="string" name="sync_error"/>
+      <item type="string" name="sync_in_progress"/>
+      <item type="string" name="sync_is_failing"/>
+      <item type="string" name="sync_one_time_sync"/>
+      <item type="string" name="system_advanced_summary"/>
+      <item type="string" name="system_advanced_title"/>
+      <item type="string" name="system_setting_title"/>
+      <item type="string" name="system_update_settings_title"/>
+      <item type="string" name="terms_title"/>
+      <item type="string" name="tether_settings_title_all"/>
+      <item type="string" name="text_to_speech_current_engine"/>
+      <item type="string" name="text_to_speech_preferred_engine_settings"/>
+      <item type="string" name="text_to_speech_settings"/>
+      <item type="string" name="three"/>
+      <item type="string" name="time_picker_title"/>
+      <item type="string" name="tts_pitch"/>
+      <item type="string" name="tts_reset"/>
+      <item type="string" name="tts_speech_rate"/>
+      <item type="string" name="two"/>
+      <item type="string" name="uninstall_apps_permission_title"/>
+      <item type="string" name="uninstall_text"/>
+      <item type="string" name="units_distance_title"/>
+      <item type="string" name="units_energy_consumption_title"/>
+      <item type="string" name="units_fuel_consumption_title"/>
+      <item type="string" name="units_list_entry"/>
+      <item type="string" name="units_pressure_title"/>
+      <item type="string" name="units_ratio"/>
+      <item type="string" name="units_ratio_denominator"/>
+      <item type="string" name="units_ratio_numerator"/>
+      <item type="string" name="units_settings"/>
+      <item type="string" name="units_speed_title"/>
+      <item type="string" name="units_temperature_title"/>
+      <item type="string" name="units_unit_abbreviation_ampere_hour"/>
+      <item type="string" name="units_unit_abbreviation_bar"/>
+      <item type="string" name="units_unit_abbreviation_celsius"/>
+      <item type="string" name="units_unit_abbreviation_degrees"/>
+      <item type="string" name="units_unit_abbreviation_fahrenheit"/>
+      <item type="string" name="units_unit_abbreviation_hertz"/>
+      <item type="string" name="units_unit_abbreviation_imperial_gallon"/>
+      <item type="string" name="units_unit_abbreviation_kelvin"/>
+      <item type="string" name="units_unit_abbreviation_kilometer"/>
+      <item type="string" name="units_unit_abbreviation_kilometers_per_hour"/>
+      <item type="string" name="units_unit_abbreviation_kilometers_per_liter"/>
+      <item type="string" name="units_unit_abbreviation_kilopascal"/>
+      <item type="string" name="units_unit_abbreviation_kilowatt_hour"/>
+      <item type="string" name="units_unit_abbreviation_liter"/>
+      <item type="string" name="units_unit_abbreviation_liters_per_hundred_kilometers"/>
+      <item type="string" name="units_unit_abbreviation_meter"/>
+      <item type="string" name="units_unit_abbreviation_meter_per_sec"/>
+      <item type="string" name="units_unit_abbreviation_mile"/>
+      <item type="string" name="units_unit_abbreviation_miles_per_gallon_uk"/>
+      <item type="string" name="units_unit_abbreviation_miles_per_gallon_us"/>
+      <item type="string" name="units_unit_abbreviation_miles_per_hour"/>
+      <item type="string" name="units_unit_abbreviation_milliampere"/>
+      <item type="string" name="units_unit_abbreviation_milliliter"/>
+      <item type="string" name="units_unit_abbreviation_millimeter"/>
+      <item type="string" name="units_unit_abbreviation_millivolt"/>
+      <item type="string" name="units_unit_abbreviation_milliwatts"/>
+      <item type="string" name="units_unit_abbreviation_nano_secs"/>
+      <item type="string" name="units_unit_abbreviation_percentile"/>
+      <item type="string" name="units_unit_abbreviation_psi"/>
+      <item type="string" name="units_unit_abbreviation_rpm"/>
+      <item type="string" name="units_unit_abbreviation_secs"/>
+      <item type="string" name="units_unit_abbreviation_us_gallon"/>
+      <item type="string" name="units_unit_abbreviation_watt_hour"/>
+      <item type="string" name="units_unit_abbreviation_year"/>
+      <item type="string" name="units_unit_name_ampere_hour"/>
+      <item type="string" name="units_unit_name_bar"/>
+      <item type="string" name="units_unit_name_celsius"/>
+      <item type="string" name="units_unit_name_degrees"/>
+      <item type="string" name="units_unit_name_fahrenheit"/>
+      <item type="string" name="units_unit_name_hertz"/>
+      <item type="string" name="units_unit_name_imperial_gallon"/>
+      <item type="string" name="units_unit_name_kelvin"/>
+      <item type="string" name="units_unit_name_kilometer"/>
+      <item type="string" name="units_unit_name_kilometers_per_hour"/>
+      <item type="string" name="units_unit_name_kilometers_per_liter"/>
+      <item type="string" name="units_unit_name_kilopascal"/>
+      <item type="string" name="units_unit_name_kilowatt_hour"/>
+      <item type="string" name="units_unit_name_kilowatt_per_hundred_kilometers"/>
+      <item type="string" name="units_unit_name_kilowatt_per_hundred_miles"/>
+      <item type="string" name="units_unit_name_liter"/>
+      <item type="string" name="units_unit_name_liter_per_hundred_kilometers"/>
+      <item type="string" name="units_unit_name_meter"/>
+      <item type="string" name="units_unit_name_meter_per_sec"/>
+      <item type="string" name="units_unit_name_mile"/>
+      <item type="string" name="units_unit_name_miles_per_gallon_uk"/>
+      <item type="string" name="units_unit_name_miles_per_gallon_us"/>
+      <item type="string" name="units_unit_name_miles_per_hour"/>
+      <item type="string" name="units_unit_name_milliampere"/>
+      <item type="string" name="units_unit_name_milliliter"/>
+      <item type="string" name="units_unit_name_millimeter"/>
+      <item type="string" name="units_unit_name_millivolt"/>
+      <item type="string" name="units_unit_name_milliwatts"/>
+      <item type="string" name="units_unit_name_nano_secs"/>
+      <item type="string" name="units_unit_name_percentile"/>
+      <item type="string" name="units_unit_name_psi"/>
+      <item type="string" name="units_unit_name_rpm"/>
+      <item type="string" name="units_unit_name_secs"/>
+      <item type="string" name="units_unit_name_us_gallon"/>
+      <item type="string" name="units_unit_name_watt_hour"/>
+      <item type="string" name="units_unit_name_year"/>
+      <item type="string" name="units_volume_title"/>
+      <item type="string" name="unused_apps"/>
+      <item type="string" name="unused_apps_switch"/>
+      <item type="string" name="usage_access_description"/>
+      <item type="string" name="usage_access_title"/>
+      <item type="string" name="usage_bytes_threshold_picker_positive_button"/>
+      <item type="string" name="user_add_account_menu"/>
+      <item type="string" name="user_add_user_menu"/>
+      <item type="string" name="user_add_user_message_setup"/>
+      <item type="string" name="user_add_user_message_update"/>
+      <item type="string" name="user_add_user_title"/>
+      <item type="string" name="user_admin"/>
+      <item type="string" name="user_cannot_add_accounts_message"/>
+      <item type="string" name="user_details_admin_title"/>
+      <item type="string" name="user_guest"/>
+      <item type="string" name="user_limit_reached_title"/>
+      <item type="string" name="user_name_label"/>
+      <item type="string" name="user_new_user_name"/>
+      <item type="string" name="user_summary_not_set_up"/>
+      <item type="string" name="user_switch"/>
+      <item type="string" name="users_list_title"/>
+      <item type="string" name="vehicle_data_delete_user_summary"/>
+      <item type="string" name="vehicle_data_delete_user_title"/>
+      <item type="string" name="vehicle_data_summary"/>
+      <item type="string" name="vehicle_data_title"/>
+      <item type="string" name="voice_input_settings_title"/>
+      <item type="string" name="wallpaper_attributions"/>
+      <item type="string" name="wallpaper_attributions_values"/>
+      <item type="string" name="webview_license_title"/>
+      <item type="string" name="wifi_ap_2G"/>
+      <item type="string" name="wifi_ap_5G"/>
+      <item type="string" name="wifi_ap_band_config"/>
+      <item type="string" name="wifi_ap_band_select_one"/>
+      <item type="string" name="wifi_ap_choose_2G"/>
+      <item type="string" name="wifi_ap_choose_5G"/>
+      <item type="string" name="wifi_ap_choose_auto"/>
+      <item type="string" name="wifi_ap_prefer_5G"/>
+      <item type="string" name="wifi_ask_disable"/>
+      <item type="string" name="wifi_ask_enable"/>
+      <item type="string" name="wifi_band_24ghz"/>
+      <item type="string" name="wifi_band_5ghz"/>
+      <item type="string" name="wifi_cellular_fallback_summary"/>
+      <item type="string" name="wifi_cellular_fallback_title"/>
+      <item type="string" name="wifi_connecting"/>
+      <item type="string" name="wifi_control_description"/>
+      <item type="string" name="wifi_control_title"/>
+      <item type="string" name="wifi_details_ipv6_address_header"/>
+      <item type="string" name="wifi_disabled"/>
+      <item type="string" name="wifi_dns"/>
+      <item type="string" name="wifi_error"/>
+      <item type="string" name="wifi_failed_connect_message"/>
+      <item type="string" name="wifi_failed_forget_message"/>
+      <item type="string" name="wifi_frequency"/>
+      <item type="string" name="wifi_gateway"/>
+      <item type="string" name="wifi_hotspot_ap_band_title"/>
+      <item type="string" name="wifi_hotspot_auto_off_summary"/>
+      <item type="string" name="wifi_hotspot_auto_off_title"/>
+      <item type="string" name="wifi_hotspot_name_summary_connected"/>
+      <item type="string" name="wifi_hotspot_name_summary_connecting"/>
+      <item type="string" name="wifi_hotspot_name_title"/>
+      <item type="string" name="wifi_hotspot_password_title"/>
+      <item type="string" name="wifi_hotspot_security_none"/>
+      <item type="string" name="wifi_hotspot_security_title"/>
+      <item type="string" name="wifi_hotspot_state_switch_content_description"/>
+      <item type="string" name="wifi_hotspot_wpa2_personal"/>
+      <item type="string" name="wifi_ip_address"/>
+      <item type="string" name="wifi_ip_address_title"/>
+      <item type="string" name="wifi_mac_address"/>
+      <item type="string" name="wifi_network_detail"/>
+      <item type="string" name="wifi_no_network_name"/>
+      <item type="string" name="wifi_not_in_range_message"/>
+      <item type="string" name="wifi_password"/>
+      <item type="string" name="wifi_preferences_title"/>
+      <item type="string" name="wifi_security"/>
+      <item type="string" name="wifi_settings"/>
+      <item type="string" name="wifi_settings_scanning_required_enabled"/>
+      <item type="string" name="wifi_settings_scanning_required_title"/>
+      <item type="string" name="wifi_settings_scanning_required_turn_on"/>
+      <item type="string" name="wifi_setup_add_network"/>
+      <item type="string" name="wifi_setup_connect"/>
+      <item type="string" name="wifi_show_password"/>
+      <item type="string" name="wifi_signal_strength"/>
+      <item type="string" name="wifi_speed"/>
+      <item type="string" name="wifi_ssid"/>
+      <item type="string" name="wifi_ssid_hint"/>
+      <item type="string" name="wifi_starting"/>
+      <item type="string" name="wifi_state_switch_content_description"/>
+      <item type="string" name="wifi_status"/>
+      <item type="string" name="wifi_stopping"/>
+      <item type="string" name="wifi_subnet_mask"/>
+      <item type="string" name="wifi_wakeup"/>
+      <item type="string" name="wifi_wakeup_summary"/>
+      <item type="string" name="wifi_wakeup_summary_no_location"/>
+      <item type="string" name="work_policy_privacy_settings"/>
+      <item type="string" name="work_policy_privacy_settings_summary"/>
+      <item type="string" name="zero"/>
+      <item type="string" name="zone_auto"/>
+      <item type="string" name="zone_list_menu_sort_alphabetically"/>
+      <item type="string" name="zone_list_menu_sort_by_timezone"/>
+      <item type="style" name="ActionDialogTheme"/>
+      <item type="style" name="CarSettingTheme"/>
+      <item type="style" name="CarSettingsPreferenceFragment"/>
+      <item type="style" name="CarSettingsPreferenceTheme"/>
+      <item type="style" name="ColoredAccentPreferenceStyle"/>
+      <item type="style" name="ColoredSwitchPreferenceStyle"/>
+      <item type="style" name="DataUsageSummaryCarrierInfoTextAppearance"/>
+      <item type="style" name="DataUsageSummaryCarrierInfoWarningTextAppearance"/>
+      <item type="style" name="FallbackHome"/>
+      <item type="style" name="FallbackHome.SetupWizard"/>
+      <item type="style" name="LockPattern"/>
+      <item type="style" name="NumberPickerStyle"/>
+      <item type="style" name="PinPadKey"/>
+      <item type="style" name="PreferenceButtonIconAppearance"/>
+      <item type="style" name="PreferenceButtonTextAppearance"/>
+      <item type="xml" name="about_settings_fragment"/>
+      <item type="xml" name="account_details_fragment"/>
+      <item type="xml" name="account_sync_details_fragment"/>
+      <item type="xml" name="add_wifi_fragment"/>
+      <item type="xml" name="app_data_usage_fragment"/>
+      <item type="xml" name="app_storage_settings_details_fragment"/>
+      <item type="xml" name="application_details_fragment"/>
+      <item type="xml" name="application_launch_settings_fragment"/>
+      <item type="xml" name="applications_settings_fragment"/>
+      <item type="xml" name="apps_fragment"/>
+      <item type="xml" name="assistant_and_voice_fragment"/>
+      <item type="xml" name="bluetooth_device_details_fragment"/>
+      <item type="xml" name="bluetooth_device_picker_fragment"/>
+      <item type="xml" name="bluetooth_pairing_selection_fragment"/>
+      <item type="xml" name="bluetooth_settings_fragment"/>
+      <item type="xml" name="car_volume_items"/>
+      <item type="xml" name="child_locale_picker_fragment"/>
+      <item type="xml" name="choose_account_fragment"/>
+      <item type="xml" name="choose_lock_type_fragment"/>
+      <item type="xml" name="choose_new_admin_fragment"/>
+      <item type="xml" name="data_usage_fragment"/>
+      <item type="xml" name="data_warning_and_limit_fragment"/>
+      <item type="xml" name="datetime_settings_fragment"/>
+      <item type="xml" name="default_autofill_picker_fragment"/>
+      <item type="xml" name="default_voice_input_picker_fragment"/>
+      <item type="xml" name="developer_options_fragment"/>
+      <item type="xml" name="device_admin_add"/>
+      <item type="xml" name="display_settings_fragment"/>
+      <item type="xml" name="factory_reset_confirm_fragment"/>
+      <item type="xml" name="factory_reset_fragment"/>
+      <item type="xml" name="file_paths"/>
+      <item type="xml" name="hardware_info_fragment"/>
+      <item type="xml" name="homepage_fragment"/>
+      <item type="xml" name="keyboard_fragment"/>
+      <item type="xml" name="keyboard_management_fragment"/>
+      <item type="xml" name="language_picker_fragment"/>
+      <item type="xml" name="languages_and_input_fragment"/>
+      <item type="xml" name="legal_information_fragment"/>
+      <item type="xml" name="location_recent_requests_fragment"/>
+      <item type="xml" name="location_settings_fragment"/>
+      <item type="xml" name="manage_domain_urls_fragment"/>
+      <item type="xml" name="mobile_network_fragment"/>
+      <item type="xml" name="mobile_network_list_fragment"/>
+      <item type="xml" name="modify_system_settings_fragment"/>
+      <item type="xml" name="network_and_internet_fragment"/>
+      <item type="xml" name="notification_access_fragment"/>
+      <item type="xml" name="notifications_fragment"/>
+      <item type="xml" name="preferred_engine_fragment"/>
+      <item type="xml" name="premium_sms_access_fragment"/>
+      <item type="xml" name="privacy_settings_fragment"/>
+      <item type="xml" name="profile_details_fragment"/>
+      <item type="xml" name="profile_details_permissions_fragment"/>
+      <item type="xml" name="profiles_list_fragment"/>
+      <item type="xml" name="reset_app_pref_fragment"/>
+      <item type="xml" name="reset_network_confirm_fragment"/>
+      <item type="xml" name="reset_network_fragment"/>
+      <item type="xml" name="reset_options_fragment"/>
+      <item type="xml" name="ringtone_picker_fragment"/>
+      <item type="xml" name="security_settings_fragment"/>
+      <item type="xml" name="sound_settings_fragment"/>
+      <item type="xml" name="special_access_fragment"/>
+      <item type="xml" name="storage_media_category_detail_fragment"/>
+      <item type="xml" name="storage_other_category_detail_fragment"/>
+      <item type="xml" name="storage_settings_fragment"/>
+      <item type="xml" name="system_settings_fragment"/>
+      <item type="xml" name="text_to_speech_output_fragment"/>
+      <item type="xml" name="timezone_picker_screen_fragment"/>
+      <item type="xml" name="units_fragment"/>
+      <item type="xml" name="usage_access_fragment"/>
+      <item type="xml" name="vehicle_data_fragment"/>
+      <item type="xml" name="wifi_control_fragment"/>
+      <item type="xml" name="wifi_detail_fragment"/>
+      <item type="xml" name="wifi_list_fragment"/>
+      <item type="xml" name="wifi_preferences_fragment"/>
+      <item type="xml" name="wifi_tether_fragment"/>
+    </policy>
+  </overlayable>
+</resources>
diff --git a/res/values/preference_keys.xml b/res/values/preference_keys.xml
index a447c69..e808d19 100644
--- a/res/values/preference_keys.xml
+++ b/res/values/preference_keys.xml
@@ -30,16 +30,23 @@
     <string name="pk_bluetooth_settings_entry" translatable="false">bluetooth_settings_entry
     </string>
     <string name="pk_location_settings_entry" translatable="false">location_settings_entry</string>
-    <string name="pk_apps_and_notifications_settings_entry" translatable="false">
-        apps_and_notifications_settings_entry
+    <string name="pk_notifications_settings_entry" translatable="false">
+        notifications_settings_entry
     </string>
     <string name="pk_date_time_settings_entry" translatable="false">date_time_settings_entry
     </string>
-    <string name="pk_users_settings_entry" translatable="false">users_settings_entry</string>
-    <string name="pk_accounts_settings_entry" translatable="false">accounts_settings_entry</string>
+    <string name="pk_profiles_and_accounts_settings_entry" translatable="false">
+        profiles_and_accounts_settings_entry
+    </string>
     <string name="pk_privacy_settings_entry" translatable="false">privacy_settings_entry</string>
     <string name="pk_storage_settings_entry" translatable="false">storage_settings_entry</string>
     <string name="pk_security_settings_entry" translatable="false">security_settings_entry</string>
+    <string name="pk_apps_settings_entry" translatable="false">
+        apps_settings_entry
+    </string>
+    <string name="pk_assistant_and_voice_settings_entry" translatable="false">
+        assistant_and_voice_settings_entry
+    </string>
     <string name="pk_system_settings_entry" translatable="false">system_settings_entry</string>
     <string name="pk_device_extra_settings" translatable="false">device_extra_settings</string>
     <string name="pk_personal_extra_settings" translatable="false">personal_extra_settings</string>
@@ -77,6 +84,8 @@
     <string name="pk_wifi_tether_auto_off" translatable="false">wifi_tether_auto_off</string>
     <string name="pk_wifi_tether_password" translatable="false">wifi_tether_password</string>
     <string name="pk_wifi_tether_name" translatable="false">wifi_tether_name</string>
+    <string name="pk_wifi_tether_state_switch" translatable="false">wifi_tether_state_switch
+    </string>
 
     <!-- WIFI -->
     <string name="pk_wifi_settings_entry" translatable="false">wifi_settings_entry</string>
@@ -99,6 +108,14 @@
     <string name="pk_wifi_preferences" translatable="false">wifi_preferences</string>
     <string name="pk_wifi_cellular_fallback" translatable="false">wifi_cellular_fallback</string>
     <string name="pk_enable_wifi_wakeup" translatable="false">enable_wifi_wakeup</string>
+    <string name="pk_wifi_state_switch" translatable="false">wifi_state_switch</string>
+    <string name="pk_wifi_details_header" translatable="false">wifi_details_header
+    </string>
+    <string name="pk_wifi_details_action_buttons" translatable="false">wifi_details_action_buttons
+    </string>
+    <string name="pk_wifi_entry_group" translatable="false">wifi_entry_group</string>
+    <string name="pk_wifi_entry_state_switch" translatable="false">wifi_entry_state_switch</string>
+    <string name="pk_limited_wifi_list" translatable="false">limited_wifi_list</string>
 
     <!-- Bluetooth -->
     <string name="pk_bluetooth_paired_devices" translatable="false">bluetooth_paired_devicesd
@@ -115,11 +132,26 @@
     <string name="pk_bluetooth_device_address" translatable="false">bluetooth_device_address
     </string>
     <string name="pk_bluetooth_device_picker" translatable="false">bluetooth_device_picker</string>
+    <string name="pk_bluetooth_state_switch" translatable="false">bluetooth_state_switch</string>
+    <string name="pk_bluetooth_device_action_buttons" translatable="false">
+        bluetooth_device_action_buttons
+    </string>
 
-    <!-- Applications and Notifications Settings -->
+    <!-- Notifications Settings -->
+    <string name="pk_notifications_settings_recently_sent" translatable="false">
+        notifications_settings_recently_sent
+    </string>
+    <string name="pk_notifications_settings_all_apps" translatable="false">
+        notifications_settings_all_apps
+    </string>
+
+    <!-- Applications Settings -->
     <string name="pk_applications_settings_screen_entry" translatable="false">
         applications_settings_screen_entry
     </string>
+    <string name="pk_recent_apps_group" translatable="false">recent_apps_group</string>
+    <string name="pk_recent_apps_list" translatable="false">recent_apps_list</string>
+    <string name="pk_recent_apps_view_all" translatable="false">recent_apps_view_all</string>
     <string name="pk_default_applications_settings_entry" translatable="false">
         default_applications_entry
     </string>
@@ -133,6 +165,9 @@
     <string name="pk_application_extra_settings" translatable="false">
         application_extra_settings
     </string>
+    <string name="pk_all_applications_settings_hide_system_switch" translatable="false">
+        all_applications_settings_hide_system_switch
+    </string>
 
     <!-- Application Details -->
     <string name="pk_application_details_app" translatable="false">application_details_app</string>
@@ -148,6 +183,15 @@
     <string name="pk_application_details_storage" translatable="false">
         application_details_storage
     </string>
+    <string name="pk_application_details_peak_performance" translatable="false">
+        pk_application_details_peak_performance
+    </string>
+    <string name="pk_hibernation_switch" translatable="false">
+        hibernation_switch
+    </string>
+    <string name="pk_hibernated_apps" translatable="false">
+        hibernated_apps
+    </string>
     <string name="pk_application_details_version" translatable="false">
         application_details_version
     </string>
@@ -188,6 +232,9 @@
     <string name="pk_modify_system_settings_description" translatable="false">
         modify_system_settings_description
     </string>
+    <string name="pk_modify_system_settings_hide_system_switch" translatable="false">
+        modify_system_settings_hide_system_switch
+    </string>
     <string name="pk_notification_access_entry" translatable="false">notification_access_entry
     </string>
     <string name="pk_notification_access" translatable="false">notification_access</string>
@@ -201,26 +248,22 @@
     <string name="pk_usage_access" translatable="false">usage_access</string>
     <string name="pk_usage_access_description" translatable="false">usage_access_description
     </string>
+    <string name="pk_usage_access_hide_system_switch" translatable="false">
+        usage_access_hide_system_switch
+    </string>
     <string name="pk_wifi_control_entry" translatable="false">wifi_control_entry</string>
     <string name="pk_wifi_control" translatable="false">wifi_control</string>
     <string name="pk_wifi_control_description" translatable="false">wifi_control_description
     </string>
-    <string name="pk_more_special_access" translatable="false">more_special_access</string>
-
-    <!-- DateTime Settings -->
-    <string name="pk_auto_datetime_switch" translatable="false">auto_datetime_switch</string>
-    <string name="pk_auto_timezone_switch" translatable="false">auto_timezone_switch</string>
-    <string name="pk_date_picker_entry" translatable="false">date_picker_entry</string>
-    <string name="pk_time_picker_entry" translatable="false">time_picker_entry</string>
-    <string name="pk_timezone_picker_screen_entry" translatable="false">
-        timezone_picker_screen_entry
+    <string name="pk_wifi_control_hide_system_switch" translatable="false">
+        wifi_control_hide_system_switch
     </string>
-    <string name="pk_use_24hour_switch" translatable="false">use_24hour_switch</string>
-    <string name="pk_timezone_picker_screen" translatable="false">timezone_picker_screen</string>
+    <string name="pk_more_special_access" translatable="false">more_special_access</string>
 
     <!-- Accounts -->
     <string name="pk_account_list" translatable="false">account_list</string>
     <string name="pk_account_settings" translatable="false">account_settings</string>
+    <string name="pk_account_settings_add" translatable="false">account_settings_add</string>
     <string name="pk_accounts_extra_settings" translatable="false">accounts_extra_settings</string>
     <string name="pk_account_auto_sync" translatable="false">account_auto_sync</string>
     <string name="pk_add_account" translatable="false">add_account</string>
@@ -229,11 +272,16 @@
     <string name="pk_account_details_with_sync" translatable="false">account_details_with_sync
     </string>
     <string name="pk_account_sync_details" translatable="false">account_sync_details</string>
+    <string name="pk_account_group" translatable="false">account_group</string>
 
     <!-- Privacy -->
+    <string name="pk_privacy_work_policy" translatable="false">privacy_work_policy</string>
     <string name="pk_privacy_manage_perms" translatable="false">privacy_manage_perms</string>
     <string name="pk_show_password" translatable="false">privacy_show_password</string>
     <string name="pk_privacy_extra_settings" translatable="false">privacy_extra_settings</string>
+    <string name="pk_mute_mic_switch" translatable="false">privacy_mute_mic</string>
+    <string name="pk_vehicle_data" translatable="false">vehicle_data</string>
+    <string name="pk_vehicle_data_delete_profile" translatable="false">vehicle_data_delete_profile</string>
 
     <!-- Storage -->
     <string name="pk_storage_music_audio" translatable="false">storage_music_audio</string>
@@ -241,9 +289,15 @@
     </string>
     <string name="pk_storage_music_audio_details" translatable="false">storage_music_audio_details
     </string>
+    <string name="pk_storage_music_audio_details_hide_system_switch" translatable="false">
+        storage_music_audio_details_hide_system_switch
+    </string>
     <string name="pk_storage_other_apps" translatable="false">storage_other_apps</string>
     <string name="pk_storage_other_apps_details" translatable="false">storage_other_apps_details
     </string>
+    <string name="pk_storage_other_apps_details_hide_system_switch" translatable="false">
+        storage_other_apps_details_hide_system_switch
+    </string>
     <string name="pk_storage_application_size" translatable="false">storage_application_size
     </string>
     <string name="pk_storage_application_total_size" translatable="false">
@@ -268,6 +322,16 @@
     </string>
     <string name="pk_brightness_level" translatable="false">brightness_level</string>
     <string name="pk_display_extra_settings" translatable="false">display_extra_settings</string>
+    <!-- DateTime Settings -->
+    <string name="pk_auto_datetime_switch" translatable="false">auto_datetime_switch</string>
+    <string name="pk_auto_timezone_switch" translatable="false">auto_timezone_switch</string>
+    <string name="pk_date_picker_entry" translatable="false">date_picker_entry</string>
+    <string name="pk_time_picker_entry" translatable="false">time_picker_entry</string>
+    <string name="pk_timezone_picker_screen_entry" translatable="false">
+        timezone_picker_screen_entry
+    </string>
+    <string name="pk_use_24hour_switch" translatable="false">use_24hour_switch</string>
+    <string name="pk_timezone_picker_screen" translatable="false">timezone_picker_screen</string>
 
     <!-- Sound Settings -->
     <string name="pk_volume_settings" translatable="false">volume_settings</string>
@@ -298,13 +362,23 @@
     </string>
     <string name="pk_location_services" translatable="false">location_services</string>
     <string name="pk_location_footer" translatable="false">location_footer</string>
+    <string name="pk_location_state_switch" translatable="false">location_state_switch</string>
 
-    <!-- Users Settings -->
-    <string name="pk_users_list" translatable="false">users_list</string>
+    <!-- Profiles and Accounts Settings -->
+    <string name="pk_profiles_list" translatable="false">profiles_list</string>
+    <string name="pk_add_profile" translatable="false">add_profile</string>
     <string name="pk_choose_new_admin" translatable="false">choose_new_admin</string>
-    <string name="pk_edit_user_name_entry" translatable="false">edit_user_name_entry</string>
-    <string name="pk_make_user_admin" translatable="false">make_user_admin</string>
-    <string name="pk_user_permissions" translatable="false">user_permissions</string>
+    <string name="pk_profile_details_header" translatable="false">profile_details_header</string>
+    <string name="pk_profile_details_action_buttons" translatable="false">profile_details_action_buttons
+    </string>
+    <string name="pk_profile_details_permissions_header" translatable="false">
+        profile_details_permissions_header
+    </string>
+    <string name="pk_profile_details_permissions_action_buttons" translatable="false">
+        profile_details_permissions_action_buttons
+    </string>
+    <string name="pk_profile_details_delete" translatable="false">profile_details_delete</string>
+    <string name="pk_profile_permissions" translatable="false">profile_permissions</string>
 
     <!-- Security Settings -->
     <string name="pk_no_lock" translatable="false">no_lock</string>
@@ -382,7 +456,7 @@
     <!-- Reset Options -->
     <string name="pk_reset_network" translatable="false">reset_network</string>
     <string name="pk_reset_app_pref" translatable="false">reset_app_pref</string>
-    <string name="pk_master_clear" translatable="false">master_clear</string>
+    <string name="pk_factory_reset" translatable="false">factory_reset</string>
 
     <!-- Reset Network -->
     <string name="pk_reset_network_items" translatable="false">reset_network_items</string>
@@ -390,17 +464,26 @@
     <string name="pk_reset_network_subscription" translatable="false">reset_network_subscription
     </string>
 
-    <!-- Master Clear -->
-    <string name="pk_master_clear_desc" translatable="false">master_clear_desc</string>
-    <string name="pk_master_clear_account_list" translatable="false">master_clear_account_list
+    <!-- Factory Clear -->
+    <string name="pk_factory_reset_desc" translatable="false">factory_reset_desc</string>
+    <string name="pk_factory_reset_account_list" translatable="false">factory_reset_account_list
     </string>
-    <string name="pk_master_clear_other_users_present" translatable="false">
-        master_clear_other_users_present
+    <string name="pk_factory_reset_other_profiles_present" translatable="false">
+        factory_reset_other_profiles_present
     </string>
-    <string name="pk_master_clear_reset_esim" translatable="false">master_clear_reset_esim</string>
-    <string name="pk_master_clear_confirm_desc" translatable="false">master_clear_confirm_desc
+    <string name="pk_factory_reset_reset_esim" translatable="false">factory_reset_reset_esim</string>
+    <string name="pk_factory_reset_confirm_desc" translatable="false">factory_reset_confirm_desc
     </string>
 
     <!-- Developer Options -->
     <string name="pk_usb_debugging_toggle" translatable="false">usb_debugging_toggle</string>
+
+    <!-- Device Admin -->
+    <string name="pk_device_admin_add_header" translatable="false">device_admin_add_header</string>
+    <string name="pk_device_admin_add_explanation" translatable="false">device_admin_add_explanation</string>
+    <string name="pk_device_admin_add_warning" translatable="false">device_admin_add_warning</string>
+    <string name="pk_device_admin_add_policies" translatable="false">device_admin_add_policies</string>
+    <string name="pk_device_admin_add_support" translatable="false">device_admin_add_support</string>
+    <string name="pk_device_admin_add_action" translatable="false">device_admin_add_action</string>
+    <string name="pk_device_admin_add_cancel" translatable="false">device_admin_add_cancel</string>
 </resources>
diff --git a/res/values/preference_screen_keys.xml b/res/values/preference_screen_keys.xml
index f80ec02..a9536df 100644
--- a/res/values/preference_screen_keys.xml
+++ b/res/values/preference_screen_keys.xml
@@ -22,14 +22,13 @@
 <resources>
     <string name="psk_about_settings" translatable="false">about_settings_screen</string>
     <string name="psk_account_details" translatable="false">account_details_screen</string>
-    <string name="psk_account_settings" translatable="false">account_settings_screen</string>
     <string name="psk_account_sync_details" translatable="false">account_sync_details_screen</string>
     <string name="psk_add_wifi" translatable="false">add_wifi_screen</string>
     <string name="psk_app_data_usage" translatable="false">app_data_usage_screen</string>
     <string name="psk_application_details" translatable="false">application_details_screen</string>
     <string name="psk_application_launch_settings" translatable="false">application_launch_settings_screen</string>
     <string name="psk_applications_settings" translatable="false">applications_settings_screen</string>
-    <string name="psk_apps_and_notifications" translatable="false">apps_and_notifications_screen</string>
+    <string name="psk_apps" translatable="false">apps_screen</string>
     <string name="psk_app_storage_settings_details" translatable="false">app_storage_settings_details_screen</string>
     <string name="psk_bluetooth_device_details" translatable="false">bluetooth_device_details_screen</string>
     <string name="psk_bluetooth_device_picker" translatable="false">bluetooth_device_picker_screen</string>
@@ -45,6 +44,7 @@
     <string name="psk_default_autofill_picker" translatable="false">default_autofill_picker_screen</string>
     <string name="psk_default_voice_input_picker" translatable="false">default_voice_input_picker_screen</string>
     <string name="psk_developer_options" translatable="false">developer_options_screen</string>
+    <string name="psk_device_admin_add" translatable="false">device_admin_add_screen</string>
     <string name="psk_display_settings" translatable="false">display_settings_screen</string>
     <string name="psk_hardware_info" translatable="false">hardware_info_screen</string>
     <string name="psk_homepage" translatable="false">homepage_screen</string>
@@ -55,18 +55,20 @@
     <string name="psk_legal_information" translatable="false">legal_information_screen</string>
     <string name="psk_location_recent_requests" translatable="false">location_recent_requests_screen</string>
     <string name="psk_location_settings" translatable="false">location_settings_screen</string>
-    <string name="psk_manage_assist" translatable="false">manage_assist_screen</string>
+    <string name="psk_assistant_and_voice_settings" translatable="false">assistant_and_voice_settings</string>
     <string name="psk_manage_domain_urls" translatable="false">manage_domain_urls_screen</string>
-    <string name="psk_master_clear_confirm" translatable="false">master_clear_confirm_screen</string>
-    <string name="psk_master_clear" translatable="false">master_clear_screen</string>
+    <string name="psk_factory_reset_confirm" translatable="false">factory_reset_confirm_screen</string>
+    <string name="psk_factory_reset" translatable="false">factory_reset_screen</string>
     <string name="psk_mobile_network" translatable="false">mobile_network_screen</string>
     <string name="psk_mobile_network_list" translatable="false">mobile_network_list_screen</string>
     <string name="psk_modify_system_settings" translatable="false">modify_system_settings_screen</string>
     <string name="psk_network_and_internet" translatable="false">network_and_internet_screen</string>
     <string name="psk_notification_access" translatable="false">notification_access_screen</string>
+    <string name="psk_notifications" translatable="false">notifications_screen</string>
     <string name="psk_preferred_engine" translatable="false">preferred_engine_screen</string>
     <string name="psk_premium_sms_access" translatable="false">premium_sms_access_screen</string>
     <string name="psk_privacy_settings" translatable="false">privacy_settings_screen</string>
+    <string name="psk_vehicle_data" translatable="false">vehicle_data</string>
     <string name="psk_reset_app_pref" translatable="false">reset_app_pref_screen</string>
     <string name="psk_reset_network_confirm" translatable="false">reset_network_confirm_screen</string>
     <string name="psk_reset_network" translatable="false">reset_network_screen</string>
@@ -83,9 +85,9 @@
     <string name="psk_timezone_picker_screen" translatable="false">timezone_picker_screen_screen</string>
     <string name="psk_units" translatable="false">units_screen</string>
     <string name="psk_usage_access" translatable="false">usage_access_screen</string>
-    <string name="psk_user_details" translatable="false">user_details_screen</string>
-    <string name="psk_user_details_permissions" translatable="false">user_details_permissions_screen</string>
-    <string name="psk_users_list" translatable="false">users_list_screen</string>
+    <string name="psk_profile_details" translatable="false">profile_details_screen</string>
+    <string name="psk_profile_details_permissions" translatable="false">profile_details_permissions_screen</string>
+    <string name="psk_profiles_list" translatable="false">profiles_list_screen</string>
     <string name="psk_wifi_control" translatable="false">wifi_control_screen</string>
     <string name="psk_wifi_detail" translatable="false">wifi_detail_screen</string>
     <string name="psk_wifi_list" translatable="false">wifi_list_screen</string>
diff --git a/res/values/string_arrays.xml b/res/values/string_arrays.xml
index 24ac7b0..fa93d7d 100644
--- a/res/values/string_arrays.xml
+++ b/res/values/string_arrays.xml
@@ -23,9 +23,9 @@
     </string-array>
 
     <!-- Security types for wireless tether -->
-    <string-array translatable="false" name="wifi_tether_security">
-        <item>@string/wifi_security_wpa2</item>
-        <item>@string/wifi_security_none</item>
+    <string-array name="wifi_tether_security">
+        <item>@string/wifi_hotspot_wpa2_personal</item>
+        <item>@string/wifi_hotspot_security_none</item>
     </string-array>
 
     <!-- Wi-Fi AP band settings.  Either Auto, 2.4GHz or 5GHz. -->
@@ -54,4 +54,14 @@
         <item>@string/wifi_ap_choose_auto</item>
         <item>@string/wifi_ap_choose_2G</item>
     </string-array>
+
+    <string-array translatable="false" name="recent_apps_ignored_packages">
+        <item>android</item>
+        <item>com.android.phone</item>
+        <item>com.android.settings</item>
+        <item>com.android.car.settings</item>
+        <item>com.android.systemui</item>
+        <item>com.android.providers.calendar</item>
+        <item>com.android.providers.media</item>
+    </string-array>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 58df615..833ac08 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -25,13 +25,13 @@
     <!-- Sound & display settings screen, setting option name to enable adaptive brightness [CHAR LIMIT=30] -->
     <string name="auto_brightness_title">Adaptive brightness</string>
     <!-- Sound & display settings screen, setting option summary to enable adaptive brightness [CHAR LIMIT=100] -->
-    <string name="auto_brightness_summary">Optimize brightness level for available light</string>
+    <string name="auto_brightness_summary">Adjust screen brightness to environment</string>
     <!-- Title of condition that night display is on (renamed "Night Light" with title caps) [CHAR LIMIT=30] -->
     <string name="condition_night_display_title">Night Light is on</string>
-    <string name="keywords_display">screen, touchscreen</string>
-    <string name="keywords_display_brightness_level">dim screen, touchscreen, battery</string>
-    <string name="keywords_display_auto_brightness">dim screen, touchscreen, battery</string>
-    <string name="keywords_display_night_display">dim screen, night, tint</string>
+    <string name="keywords_display" translatable="false">screen, touchscreen</string>
+    <string name="keywords_display_brightness_level" translatable="false">dim screen, touchscreen, battery</string>
+    <string name="keywords_display_auto_brightness" translatable="false">dim screen, touchscreen, battery</string>
+    <string name="keywords_display_night_display" translatable="false">dim screen, night, tint</string>
     <!-- Label for night mode toggle tile in quick setting [CHAR LIMIT=20] -->
     <string name="night_mode_tile_label">Night mode</string>
     <!-- Empty placeholder string to be used while waiting for a string to be loaded asynchronously. [CHAR LIMIT=NONE] -->
@@ -162,6 +162,14 @@
         <item>@*android:string/megabyteShort</item>
         <item>@*android:string/gigabyteShort</item>
     </string-array>
+    <!-- Network & internet settings screen, setting option name to enable OEM network connectivity [CHAR LIMIT=60] -->
+    <string name="network_and_internet_oem_network_title">OEM network</string>
+    <!-- Network & internet settings screen, setting option description of how much data has been used from a start date to end date ex. 80MB used Oct 3 - Nov 2 [CHAR LIMIT=100] -->
+    <string name="network_and_internet_data_usage_time_range_summary">%1$s used %2$s - %3$s</string>
+    <!-- Network & internet settings screen, setting option name to view other wifi networks to connect to [CHAR LIMIT=60] -->
+    <string name="network_and_internet_join_other_network_title">Join other network</string>
+    <!-- Network & internet settings screen, setting option name to view network options, such as wifi connectivity [CHAR LIMIT=60] -->
+    <string name="network_and_internet_network_preferences_title">Network preferences</string>
 
     <!-- wifi settings--><skip/>
     <!-- Used in the 1st-level settings screen to go to the 2nd-level settings screen  [CHAR LIMIT=20]-->
@@ -182,6 +190,10 @@
     <string name="wifi_setup_add_network">Add network</string>
     <!-- Button label to connect to a Wi-Fi network. [CHAR LIMIT=10] -->
     <string name="wifi_setup_connect">Connect</string>
+    <!-- Label for button when the car is connecting to a Wi-Fi network. [CHAR LIMIT=20] -->
+    <string name="wifi_connecting">Connecting\u2026</string>
+    <!-- Toast message shown when a network connection failed because it's not in range. [CHAR LIMIT=40] -->
+    <string name="wifi_not_in_range_message">Network not in range</string>
     <!-- Label for the password of the secured network -->
     <string name="wifi_password">Password</string>
     <!-- Label for the check box to show password -->
@@ -259,6 +271,8 @@
     <string name="wifi_cellular_fallback_title">Switch to mobile data automatically</string>
     <!-- Preference summary to automatically switch away from bad wifi networks [CHAR LIMIT=None]-->
     <string name="wifi_cellular_fallback_summary">Use mobile data when Wi\u2011Fi has no internet access. Data usage charges may apply.</string>
+    <!-- Content description for the wifi state switch. [CHAR LIMIT=NONE] -->
+    <string name="wifi_state_switch_content_description" translatable="false">Wi\u2011Fi toggle switch</string>
     <!-- url for the wifi scanning required dialog help page -->
     <string name="help_uri_wifi_scanning_required" translatable="false"></string>
     <!-- Button label to allow the user to view additional information [CHAR LIMIT=NONE] -->
@@ -298,10 +312,14 @@
     <string name="wifi_ap_band_select_one">Choose at least one band for Wi\u2011Fi hotspot:</string>
     <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=60]-->
     <string name="tether_settings_title_all">Hotspot &amp; tethering</string>
+    <!-- Settings title to go into the hotspot settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=60]-->
+    <string name="hotspot_settings_title">Hotspot</string>
     <!-- Title for the toggle to turn off hotspot automatically [CHAR LIMIT=50]-->
     <string name="wifi_hotspot_auto_off_title">Turn off hotspot automatically</string>
     <!-- Summary for the toggle to turn off hotspot automatically [CHAR LIMIT=100]-->
     <string name="wifi_hotspot_auto_off_summary">Wi\u2011Fi hotspot will turn off if no devices are connected</string>
+    <!-- Content description for the hotspot state switch. [CHAR LIMIT=NONE] -->
+    <string name="wifi_hotspot_state_switch_content_description" translatable="false">Hotspot toggle switch</string>
     <!-- This string asks the user whether or not to allow an app to enable WiFi. [CHAR LIMIT=NONE] -->
     <string name="wifi_ask_enable"><xliff:g id="requester" example="FancyApp">%s</xliff:g> wants to turn on Wi-Fi</string>
     <!-- This string asks the user whether or not to allow an app to disable WiFi. [CHAR LIMIT=NONE] -->
@@ -376,6 +394,18 @@
     <string name="bluetooth_ask_enablement_and_discovery"><xliff:g id="app_name">%1$s</xliff:g> wants to turn on Bluetooth and make your headunit visible to other devices for <xliff:g id="timeout">%2$d</xliff:g> seconds.</string>
     <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode. [CHAR LIMIT=NONE] -->
     <string name="bluetooth_ask_enablement_and_discovery_no_name">An app wants to turn on Bluetooth and make your headunit visible to other devices for <xliff:g id="timeout">%1$d</xliff:g> seconds.</string>
+    <!-- Content description for bluetooth state switch. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_state_switch_content_description" translatable="false">Bluetooth toggle switch</string>
+    <!-- Bluetooth settings screen, setting option description for how the user's device will show up on other devices [CHAR LIMIT=100] -->
+    <string name="bluetooth_state_switch_summary">Visible as %1$s to other devices</string>
+    <!-- Title of user's current connected devices category [CHAR LIMIT=60] -->
+    <string name="bluetooth_my_devices">My devices</string>
+    <!-- Title of user's previously connected devices category [CHAR LIMIT=60] -->
+    <string name="bluetooth_previously_connected">Previously connected</string>
+    <!-- Popup indicating that the user's bluetooth device has been connected [CHAR LIMIT=30] -->
+    <string name="bluetooth_device_connected_toast">%1$s connected</string>
+    <!-- Popup indicating that the user's bluetooth device has been disconnected [CHAR LIMIT=30] -->
+    <string name="bluetooth_device_disconnected_toast">%1$s disconnected</string>
 
     <!-- Bluetooth pairing --><skip/>
     <!-- Notification ticker text (shown in the status bar) when a Bluetooth device wants to pair with us -->
@@ -457,6 +487,16 @@
     <string name="alarm_ringtone_title">Default alarm sound</string>
     <!-- Ringtone picker save button. [CHAR LIMIT=30] -->
     <string name="ringtone_picker_save_title">Save</string>
+    <!-- Sound settings screen, setting option name to manage ringtone, notifications, and alarm sounds [CHAR LIMIT=60] -->
+    <string name="sound_alert_sounds">Alert sounds</string>
+    <!-- Sound settings screen, setting option description of different alerts that can be changed [CHAR LIMIT=100] -->
+    <string name="sound_alert_sounds_summary">Ringtone, notifications, alarm</string>
+
+    <!-- Display settings --><skip/>
+    <!-- Display settings screen, setting option name to manage display brightness [CHAR LIMIT=60] -->
+    <string name="display_brightness">Brightness</string>
+    <!-- Display settings screen, setting option description for enabling night/dark mode [CHAR LIMIT=100] -->
+    <string name="display_night_mode_summary">Adjust screen for low light</string>
 
     <!-- Units Settings -->
     <!-- Units Settings title [CHAR LIMIT=10] -->
@@ -596,7 +636,7 @@
     <!-- Label for list that shows all permissions [CHAR LIMIT=40] -->
     <string name="app_permissions">App permissions</string>
     <!-- Summary of permissions currently granted to apps [CHAR LIMIT=60] -->
-    <string name="app_permissions_summary">Apps using <xliff:g id="apps" example="location">%1$s</xliff:g></string>
+    <string name="app_permissions_summary">Control app access to your data</string>
     <!-- Applications settings title. If clicked, the user is taken to the list of installed applications. [CHAR LIMIT=40] -->
     <string name="applications_settings">App info</string>
     <!-- Manage applications, text label for button to kill / force stop an application. [CHAR LIMIT=30] -->
@@ -605,6 +645,14 @@
     <string name="force_stop_dialog_title">Force stop?</string>
     <!-- Manage applications, text for dialog when killing persistent apps. [CHAR LIMIT=200] -->
     <string name="force_stop_dialog_text">If you force stop an app, it may misbehave.</string>
+    <!-- Manage applications, title for dialog when disabling I/O overuse killing for apps. [CHAR LIMIT=40] -->
+    <string name="peak_performance_dialog_title">Turn off performance protection?</string>
+    <!-- Manage applications, text for dialog when disabling I/O overuse killing for apps. [CHAR LIMIT=200] -->
+    <string name="peak_performance_dialog_text">If you do, your software and hardware may not work as well.</string>
+    <!-- Manage applications, text for dialog button when disabling I/O overuse killing for apps. [CHAR LIMIT=200] -->
+    <string name="peak_performance_dialog_action_on">Leave on</string>
+    <!-- Manage applications, text for dialog button when disabling I/O overuse killing for apps. [CHAR LIMIT=200] -->
+    <string name="peak_performance_dialog_action_off">Turn off</string>
     <!-- Manage applications, individual application info screen. Button to disable an existing application. [CHAR LIMIT=25] -->
     <string name="disable_text">Disable</string>
     <!-- Manage applications, individual application info screen. Button to re-enable an existing application. [CHAR LIMIT=25] -->
@@ -615,22 +663,35 @@
     <string name="app_disable_dialog_text">If you disable this app, Android and other apps may no longer function as intended.</string>
     <!-- Manage applications, label for option to disable app. [CHAR LIMIT=30] -->
     <string name="app_disable_dialog_positive">Disable app</string>
-    <!-- Manage applications, text informing that an application is not installed for the current user. [CHAR_LIMIT=NONE] -->
-    <string name="not_installed">Not installed for this user</string>
+    <!-- Manage applications, text informing that an application is not installed for the current profile. [CHAR_LIMIT=NONE] -->
+    <string name="not_installed">Not installed for this profile</string>
     <!-- Manage applications, individual application info screen, heading for settings related to the app's permissions. for example, it may list all the permissions the app has. -->
     <string name="permissions_label">Permissions</string>
     <!-- Label for the toggle that enables/disables an app's notifications. [CHAR LIMIT=20] -->
     <string name="notifications_label">Notifications</string>
     <!-- Label that lead into individual application storage info screen -->
     <string name="storage_application_label">Storage &amp; cache</string>
+    <!-- Label for the toggle that enables/disables car watchdog's I/O overuse killing feature for the app. [CHAR LIMIT=20] -->
+    <string name="peak_performance_label">Ensure peak performance</string>
     <!-- Label for displaying application version. -->
     <string name="application_version_label">Version: %1$s</string>
     <!-- Runtime permissions preference summary, shown when the app has no permissions granted. [CHAR LIMIT=40] -->
     <string name="runtime_permissions_summary_no_permissions_granted">No permissions granted</string>
     <!-- Runtime permissions preference summary, shown when the app requests no permissions. [CHAR LIMIT=40] -->
     <string name="runtime_permissions_summary_no_permissions_requested">No permissions requested</string>
+    <!-- Label for showing apps that have not been used for months. [CHAR LIMIT=40]-->
+    <string name="unused_apps">Unused apps</string>
+    <!-- Summary of number of apps that have not been used for months. [CHAR LIMIT=40]-->
+    <plurals name="unused_apps_summary">
+        <item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> unused app</item>
+        <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> unused apps</item>
+    </plurals>
+    <!-- Label of a switch preference that controls whether the system will remove the permissions and free up space when the app has not been used for months [CHAR LIMIT=40]-->
+    <string name="unused_apps_switch">Remove permissions and free up space</string>
     <!-- Application's internal storage size preference summary. [CHAR LIMIT=40] -->
     <string name="storage_type_internal">%s in internal storage</string>
+    <!-- Application's peak performance preference summary. [CHAR LIMIT=40] -->
+    <string name="peak_performance_summary">When necessary, close app to avoid excessive use of resources</string>
     <!-- Activity title for network data usage summary. [CHAR LIMIT=25] -->
     <string name="data_usage_summary_title">Data usage</string>
     <!-- Activity title for Appk data usage summary. [CHAR LIMIT=25] -->
@@ -707,6 +768,20 @@
     <string name="app_link_open_never">Don\u2019t open in this app</string>
     <!-- Title of dialog showing the supported link domains [CHAR LIMIT=40] -->
     <string name="app_launch_supported_domain_urls_title">Supported links</string>
+    <!-- Main Settings screen setting option name to go into the apps settings [CHAR LIMIT=40] -->
+    <string name="apps_settings_title">Apps</string>
+    <!-- Title of recently opened apps category [CHAR LIMIT=60] -->
+    <string name="apps_recently_opened">Recently opened</string>
+    <!-- Apps settings screen, setting option name to view all apps [CHAR LIMIT=60] -->
+    <string name="apps_view_all_apps_title">View all %1$d apps</string>
+    <!-- Apps settings screen, setting option name to manage permissions of all apps [CHAR LIMIT=60] -->
+    <string name="apps_permission_manager_title">Permission manager</string>
+    <!-- Apps settings screen, setting option description of app permission manager [CHAR LIMIT=100] -->
+    <string name="apps_permission_manager_summary">Control app access to your data</string>
+    <!-- Apps settings screen, setting option description of default apps [CHAR LIMIT=100] -->
+    <string name="apps_default_apps_summary">For Assistant and more</string>
+    <!-- Apps settings screen, setting option description of special app access [CHAR LIMIT=100] -->
+    <string name="apps_special_app_access_summary">To system and other settings</string>
 
     <!-- Label for screen where user can grant applications special access to various systems. [CHAR_LIMIT=60] -->
     <string name="special_access">Special app access</string>
@@ -714,6 +789,8 @@
     <string name="show_system">Show system</string>
     <!-- Text for toggle button to control whether system processes are hidden in app lists. [CHAR_LIMIT=30] -->
     <string name="hide_system">Hide system</string>
+    <!-- Text for toggle switch to control whether system processes are hidden in app lists. [CHAR_LIMIT=40] -->
+    <string name="hide_system_apps">Hide system apps</string>
     <!-- Title for managing apps which can modify system settings. [CHAR_LIMIT=40] -->
     <string name="modify_system_settings_title">Modify system settings</string>
     <!-- Description of modifying system settings. [CHAR_LIMIT=NONE] -->
@@ -756,12 +833,25 @@
     <string name="location_settings_app_permissions_title">App-level permissions</string>
     <!-- Title of Location Services category [CHAR LIMIT=60] -->
     <string name="location_settings_services_title">Location Services</string>
+    <!-- Content description for the location state switch. [CHAR LIMIT=NONE] -->
+    <string name="location_state_switch_content_description" translatable="false">Location toggle switch</string>
+    <!-- Location settings screen, setting option name to enable location tracking [CHAR LIMIT=60] -->
+    <string name="location_use_location_title">Use location</string>
+    <!-- Location settings footer warning text [CHAR LIMIT=NONE] -->
+    <string name="location_settings_footer">
+        Location may use sources like GPS, Wi\u2011Fi, mobile networks, and sensors to help estimate
+        your device\u2019s location.
+    </string>
 
     <!-- System --><skip/>
     <!-- Main setting menu item to go into system settings -->
     <string name="system_setting_title">System</string>
     <!-- System updates title.  Takes the user to the screen for seeing and installing system updates. [CHAR LIMIT=40] -->
     <string name="system_update_settings_title">System updates</string>
+    <!-- System settings screen, setting option name to view advanced system settings [CHAR LIMIT=60] -->
+    <string name="system_advanced_title">Advanced</string>
+    <!-- System settings screen, setting option description of advanced system settings [CHAR LIMIT=100] -->
+    <string name="system_advanced_summary">About, legal info, reset, and more</string>
 
     <!-- About phone screen, status item label  [CHAR LIMIT=40] -->
     <string name="firmware_version">Android version</string>
@@ -904,26 +994,28 @@
     <!-- Reset app preferences complete toast text. [CHAR LIMIT=75] -->
     <string name="reset_app_pref_complete_toast">App preferences have been reset</string>
 
-    <!-- Master Clear --><skip/>
+    <!-- Factory Clear --><skip/>
     <!-- Button title to factory data reset the entire device. The "(factory reset)" part is optional for translation. [CHAR LIMIT=40]-->
-    <string name="master_clear_title">Erase all data (factory reset)</string>
+    <string name="factory_reset_title">Erase all data (factory reset)</string>
+    <!-- Button summary to factory data reset the entire device.  Factory reset will delete all data from the vehicle. [CHAR LIMIT=NONE]-->
+    <string name="factory_reset_summary">Erase all data and profiles from the infotainment system</string>
     <!-- Message on screen after user selects factory reset. [CHAR LIMIT=NONE] -->
-    <string name="master_clear_desc">This will erase all data from your vehicle\u2019s head unit, including:\n\n<li>Your Google account</li>\n<li>System and app data and settings</li>\n<li>Downloaded apps</li></string>
+    <string name="factory_reset_desc">This will erase all data from your vehicle\u2019s infotainment system, including:\n\n<li>Your Google Account</li>\n<li>System and app data and settings</li>\n<li>Downloaded apps</li></string>
     <!-- The list of current accounts follows this text. [CHAR LIMIT=NONE] -->
-    <string name="master_clear_accounts">You are currently signed into the following accounts:</string>
-    <!-- Message on screen if other users are present on the device after user selects factory reset. [CHAR LIMIT=NONE] -->
-    <string name="master_clear_other_users_present">There are other users present on this vehicle.</string>
+    <string name="factory_reset_accounts">You are currently signed into the following accounts:</string>
+    <!-- Message on screen if other profiles are present on the device after user selects factory reset. [CHAR LIMIT=NONE] -->
+    <string name="factory_reset_other_users_present">Other profiles have been set up for this vehicle.</string>
     <!-- Button on screen after user selects factory reset. [CHAR LIMIT=30] -->
-    <string name="master_clear_button_text">Reset vehicle</string>
-    <!-- Master clear confirmation screen title. [CHAR LIMIT=30] -->
-    <string name="master_clear_confirm_title">Reset?</string>
+    <string name="factory_reset_button_text">Erase all data</string>
+    <!-- Factory clear confirmation screen title. [CHAR LIMIT=30] -->
+    <string name="factory_reset_confirm_title">Erase all data?</string>
     <!-- Message on screen after user selects Reset device button. [CHAR LIMIT=NONE] -->
-    <string name="master_clear_confirm_desc">Erase all your personal information and downloaded apps?  You can\u2019t undo this action!</string>
-    <string name="master_clear_confirm_button_text">Erase everything</string>
-    <!-- Master clear progress screen title. [CHAR LIMIT=30] -->
-    <string name="master_clear_progress_title" >Erasing</string>
-    <!-- Master clear progress screen text. [CHAR LIMIT=75] -->
-    <string name="master_clear_progress_text">Please wait...</string>
+    <string name="factory_reset_confirm_desc">This will erase all your personal profile data, accounts, and downloaded apps on this infotainment system.\n\nYou can\u2019t undo this action.</string>
+    <string name="factory_reset_confirm_button_text">Erase everything</string>
+    <!-- Factory clear progress screen title. [CHAR LIMIT=30] -->
+    <string name="factory_reset_progress_title" >Erasing</string>
+    <!-- Factory clear progress screen text. [CHAR LIMIT=75] -->
+    <string name="factory_reset_progress_text">Please wait...</string>
 
     <!-- Date and time settings --><skip/>
     <!-- Main Settings screen setting option name to go into the date and time settings-->
@@ -931,14 +1023,10 @@
     <!-- Main Settings screen setting option summary text for the item to go into the date and time settings. -->
     <string name="date_and_time_settings_summary">Set date, time, time zone, &amp; formats</string>
     <!-- Date & time setting screen setting check box title if the date and time should be determined automatically [CHAR LIMIT=30] -->
-    <string name="date_time_auto">Automatic date &amp; time</string>
-    <!-- Date & time setting screen setting option summary text when Automatic check box is selected (that is, when date and time should be determined automatically) [CHAR LIMIT=100] -->
-    <string name="date_time_auto_summary">Use network-provided time</string>
+    <string name="date_time_auto">Set time automatically</string>
     <!-- Date & time setting screen setting check box title if the time zone should be determined automatically [CHAR LIMIT=30] -->
-    <string name="zone_auto">Automatic time zone</string>
+    <string name="zone_auto">Set time zone automatically</string>
     <!-- Date & time setting screen setting option summary text when Automatic time zone check box is selected (that is, when date and time should be determined automatically) [CHAR LIMIT=100]  -->
-    <string name="zone_auto_summary">Use network-provided time zone</string>
-    <!-- Date & time setting screen setting check box title [CHAR LIMIT=30] -->
     <string name="date_time_24hour_title">24\u2011hour format</string>
     <!-- Date & time setting screen setting check box title -->
     <string name="date_time_24hour">Use 24-hour format</string>
@@ -969,11 +1057,11 @@
     <!-- User summary to be displayed next to the currently logged-in user if they are also an admin. [CHAR LIMIT=35] -->
     <string name="signed_in_admin_user">Signed in as admin</string>
     <!-- Title for the dialog that grants the user admin permissions. [CHAR LIMIT=50]-->
-    <string name="grant_admin_permissions_title">All admin permissions</string>
+    <string name="grant_admin_permissions_title">Grant admin permissions?</string>
     <!-- Button text for granting admin permissions to a user [CHAR LIMIT=35]-->
     <string name="grant_admin_permissions_button_text">Make Admin</string>
-    <!-- Message to inform the user of what will happen when another user is upgraded to Admin status. [CHAR LIMIT=NONE]-->
-    <string name="grant_admin_permissions_message">The user will be able to delete users, including other Admins, and factory reset the system.</string>
+    <!-- Message to inform the user of what will happen when another profile is upgraded to Admin status. [CHAR LIMIT=NONE]-->
+    <string name="grant_admin_permissions_message">The admin will be able to delete other profiles, including those for other admins, and factory reset the infotainment system.</string>
     <!-- Message to inform the user that granting admin permissions to another user is not reversible. [CHAR LIMIT=100]-->
     <string name="action_not_reversible_message">This action is not reversible.</string>
     <!-- Button text to confirm granting admin permissions to another user. [CHAR LIMIT=40]-->
@@ -981,8 +1069,8 @@
 
     <!-- User Restrictions --><skip/>
     <!-- Creating Users --><skip/>
-    <!-- Title for toggle that controls whether a user is able to create other users [CHAR LIMIT=35] -->
-    <string name="create_user_permission_title">Create new users</string>
+    <!-- Title for toggle that controls whether a profile is able to create other profiles [CHAR LIMIT=35] -->
+    <string name="create_user_permission_title">Create new profiles</string>
 
     <!-- Outgoing Calls --><skip/>
     <!-- Title for toggle that controls whether a user is able to make outgoing calls [CHAR LIMIT=35] -->
@@ -999,43 +1087,45 @@
     <string name="uninstall_apps_permission_title">Uninstall apps</string>
 
     <!-- Adding new users --><skip/>
-    <!-- User settings add user menu [CHAR LIMIT=35] -->
-    <string name="user_add_user_menu">Add user</string>
-    <!-- User details new user name [CHAR LIMIT=30] -->
-    <string name="user_new_user_name">New user</string>
-    <!-- Title of the alert dialog to ask user to confirm creation of new user. [CHAR LIMIT=30] -->
-    <string name="user_add_user_title">"Add new user?"</string>
-    <!-- Message to inform user that creation of new user requires that user to set up their space. [CHAR LIMIT=100] -->
-    <string name="user_add_user_message_setup">When you add a new user, that person needs to set up their space.</string>
-    <!-- Message to inform user that the newly created user will have permissions to update apps for all other users. [CHAR LIMIT=100] -->
-    <string name="user_add_user_message_update">Any user can update apps for all other users.</string>
-    <!-- Title for the dialog that lets users know that the maximum allowed number of users on the device has been reached. [CHAR LIMIT=35]-->
-    <string name="user_limit_reached_title">User limit reached</string>
-    <!-- Message that tells people what's the maximum number of uses allowed on the device. [CHAR_LIMIT=NONE]-->
+    <!-- Profile settings add profile menu [CHAR LIMIT=35] -->
+    <string name="user_add_user_menu">Add profile</string>
+    <!-- Profile details new profile name [CHAR LIMIT=30] -->
+    <string name="user_new_user_name">New profile</string>
+    <!-- Title of the alert dialog to ask user to confirm creation of new profile. [CHAR LIMIT=30] -->
+    <string name="user_add_user_title">"Add new profile?"</string>
+    <!-- Message to inform the profile creator that the user it's intended for should customize it for themselves. [CHAR LIMIT=100] -->
+    <string name="user_add_user_message_setup">After you create a new profile, that person should customize it for themselves.</string>
+    <!-- Message to inform user that the newly created profile will have permissions to update apps for all other profiles. [CHAR LIMIT=100] -->
+    <string name="user_add_user_message_update">Apps can be updated from any profile for use by all other profiles.</string>
+    <!-- Title for the dialog that lets users know that the maximum allowed number of profiles on the device has been reached. [CHAR LIMIT=35]-->
+    <string name="user_limit_reached_title">Profile limit reached</string>
+    <!-- Message that tells people what's the maximum number of profiles allowed on the device. [CHAR_LIMIT=NONE]-->
     <plurals name="user_limit_reached_message">
-        <item quantity="one">Only one user can be created.</item>
-        <item quantity="other">You can create up to <xliff:g example="3" id="count">%d</xliff:g> users.</item>
+        <item quantity="one">Only one profile can be created.</item>
+        <item quantity="other">You can create up to <xliff:g example="3" id="count">%d</xliff:g> profiles.</item>
     </plurals>
-    <!-- Title of the alert dialog to notify that the creation of new user has failed. [CHAR LIMIT=40] -->
-    <string name="add_user_error_title">Failed to create a new user</string>
+    <!-- Title of the alert dialog to notify that the creation of new profile has failed. [CHAR LIMIT=40] -->
+    <string name="add_user_error_title">Couldn\'t create new profile</string>
 
     <!-- Deleting users --><skip/>
     <!-- Title of the alert dialog to ask user to confirm user deletion [CHAR LIMIT=40] -->
-    <string name="delete_user_dialog_title">Delete this user?</string>
+    <string name="delete_user_dialog_title">Delete this profile?</string>
     <!-- Message to inform user that all of user's data will be deleted if confirmed [CHAR LIMIT=NONE] -->
-    <string name="delete_user_dialog_message">"All apps and data will be deleted."</string>
+    <string name="delete_user_dialog_message">"All apps and data for this profile will be deleted"</string>
     <!-- Title of the alert dialog to notify that user deletion has failed. [CHAR LIMIT=40] -->
-    <string name="delete_user_error_title">Failed to delete user.</string>
+    <string name="delete_user_error_title">Couldn\'t delete profile.</string>
+    <!-- Title of the alert dialog to notify that user deletion has failed. [CHAR LIMIT=100] -->
+    <string name="delete_user_error_set_ephemeral_title">This profile will be deleted when you switch profiles or restart the vehicle.</string>
     <!-- Button label to dismiss user deletion error [CHAR LIMIT=25] -->
     <string name="delete_user_error_dismiss">Dismiss</string>
     <!-- Button label to retry user deletion [CHAR LIMIT=25] -->
     <string name="delete_user_error_retry">Retry</string>
     <!-- Title of the alert dialog to ask user to confirm deletion of the last user on the device. [CHAR LIMIT=40] -->
-    <string name="delete_last_user_dialog_title">Delete last user?</string>
+    <string name="delete_last_user_dialog_title">Delete the last remaining profile?</string>
     <!-- Message to inform user that deletion of the last user will prompt the creation of a new admin user. [CHAR LIMIT=NONE] -->
-    <string name="delete_last_user_admin_created_message">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <string name="delete_last_user_delete_warning">"If you delete the only remaining profile for this vehicle, all data, settings, and apps associated with this profile will be erased."</string>
     <!-- Message to inform user that deletion of the last user will require new system setup. [CHAR LIMIT=NONE] -->
-    <string name="delete_last_user_system_setup_required_message">"All data, settings, and apps associated with this user will be deleted. You'll need to set up the system again."</string>
+    <string name="delete_last_user_system_setup_required_message">"After reset, you can set up a new profile."</string>
     <!-- Title of the alert dialog to notify that new admin should be chosen. [CHAR LIMIT=40] -->
     <string name="choose_new_admin_title">Choose new admin</string>
     <!-- Message to notify that new admin must be chosen in order to delete the current one. [CHAR LIMIT=150] -->
@@ -1056,14 +1146,16 @@
     <string name="user_name_label">Name</string>
     <!-- User summary to indicate that user is currently not set up [CHAR LIMIT=100] -->
     <string name="user_summary_not_set_up">Not set up</string>
-    <!-- Title for edit user name page [CHAR LIMIT=30] -->
-    <string name="edit_user_name_title">Edit user name</string>
+    <!-- Title for edit profile name page [CHAR LIMIT=30] -->
+    <string name="edit_user_name_title">Edit profile name</string>
     <!-- An error message indicating that the name input field has been left blank and cannot be. [CHAR_LIMIT=50] -->
     <string name="name_input_blank_error">Field can\u2019t be blank.</string>
     <!-- An error message indicating that the name the user has entered is invalid. [CHAR_LIMIT=50] -->
-    <string name="name_input_invalid_error">Username entered is invalid.</string>
-    <!-- User settings header for list of users on the system. [CHAR LIMIT=35] -->
+    <string name="name_input_invalid_error">Profile name entered is invalid.</string>
+    <!-- Users settings header for list of users on the system. [CHAR LIMIT=35] -->
     <string name="users_list_title">Users</string>
+    <!-- Profiles settings header for list of profiles on the system. [CHAR LIMIT=35] -->
+    <string name="profiles_list_title">Profiles</string>
     <!-- Title for the user details page that shows the permissions granted to the user. The parameter is the name of the user. [CHAR LIMIT=40] -->
     <string name="user_details_admin_title">Permissions granted to %1$s</string>
 
@@ -1088,7 +1180,7 @@
     <!-- Individual application info screen, label under Storage heading. The amount of space taken up by the application itself (for example, the java compiled files) [CHAR LIMIT=35] -->
     <string name="storage_application_size_label">App size</string>
     <!-- Individual application info screen, label under Storage heading.  The amount of space taken up by the app's data (for example, downloaded emails) [CHAR LIMIT=35] -->
-    <string name="storage_data_size_label">User data</string>
+    <string name="storage_data_size_label">Profile data</string>
     <!-- Label that appears next to the cache size [CHAR LIMIT=35] -->
     <string name="storage_cache_size_label">Cache</string>
     <!-- Individual application info screen,label under Storage heading.  The total storage space taken up by this app. [CHAR LIMIT=35] -->
@@ -1175,6 +1267,24 @@
     <!-- Privacy --><skip/>
     <!-- Title for settings that lead into Privacy settings [CHAR LIMIT=40] -->
     <string name="privacy_settings_title">Privacy</string>
+    <!-- Title for Infotainment System Data privacy settings containing controls for clearing/resetting local data in the vehicle. [CHAR LIMIT=40] -->
+    <string name="privacy_vehicle_data_title">Infotainment system data</string>
+    <!-- Privacy settings screen, setting option that opens a page to manage location settings [CHAR LIMIT=NONE] -->
+    <string name="privacy_location_summary">Control app access to your location</string>
+    <!-- Privacy settings screen, title for setting option name enable/disable the microphone [CHAR LIMIT=30] -->
+    <string name="mute_mic_title">Microphone</string>
+    <!-- Privacy settings screen, summary for setting option to enable/disable the microphone [CHAR LIMIT=NONE] -->
+    <string name="mute_mic_summary">Control app access to microphone</string>
+    <!-- Privacy settings screen, button that navigates to a screen containing controls for clearing/resetting local data in the vehicle. [CHAR LIMIT=30] -->
+    <string name="vehicle_data_title">Infotainment system data</string>
+    <!-- Summary text for a screen containing controls for clearing/resetting local data in the vehicle. [CHAR LIMIT=NONE] -->
+    <string name="vehicle_data_summary">Manage activities and info saved on this vehicle</string>
+    <!-- Privacy settings screen, title for button that deletes the current user profile. [CHAR LIMIT=30] -->
+    <string name="vehicle_data_delete_user_title">Delete your profile</string>
+    <!-- Privacy settings screen, summary text for button that deletes the current user profile. [CHAR LIMIT=NONE] -->
+    <string name="vehicle_data_delete_user_summary">Erase your profile and accounts from the infotainment system</string>
+    <!-- Privacy settings screen, text that shows when a user tries to take an action that is unavailable to the current user. [CHAR LIMIT=60] -->
+    <string name="action_unavailable">This action is unavailable for your profile</string>
 
     <!-- security lock --><skip/>
     <!-- Title for security settings [CHAR LIMIT=20] -->
@@ -1209,8 +1319,6 @@
     <string name="set_screen_lock">Set a screen lock</string>
     <!-- Title string shown in choose lock PIN [CHAR LIMIT=40] -->
     <string name="lockscreen_choose_your_pin">Choose your PIN</string>
-    <!-- Title string shown in choose lock pattern [CHAR LIMIT=40] -->
-    <string name="lockscreen_choose_your_pattern">Choose your pattern</string>
     <!-- Title string shown in choose lock password [CHAR LIMIT=40] -->
     <string name="lockscreen_choose_your_password">Choose your password</string>
     <!-- Subtitle indicating the current screen lock type (none/PIN/pattern/password) [CHAR LIMIT=40] -->
@@ -1247,6 +1355,10 @@
     <string name="remove_screen_lock_title">Remove screen lock?</string>
     <!-- Message in dialog warning the user about the consequence if they choose to remove the screen lock [CHAR LIMIT=60]-->
     <string name="remove_screen_lock_message">This will allow anyone to access your account</string>
+    <!-- Security settings screen, setting option name to configure user profile security lock [CHAR LIMIT=60] -->
+    <string name="security_profile_lock_title">Profile lock</string>
+    <!-- Security settings screen, setting option description for unlocking user profile with phone [CHAR LIMIT=100] -->
+    <string name="security_unlock_profile_summary">Set up automatic unlocking</string>
 
     <!--  Title for screen asking user to enter their existing lock PIN [CHAR LIMIT=30] -->
     <string name="lock_settings_enter_pin">Enter your PIN</string>
@@ -1299,7 +1411,7 @@
     <string name="lockpassword_pin_recently_used">Device admin doesn\'t allow using a recent PIN</string>
 
     <!-- Error shown when a user is choosing a PIN for their work phone, but what they suggest is blocked by their company's IT administrator. The user should try another PIN that's less common and more complicated. [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_pin_blacklisted_by_admin">Common PINs are blocked by your IT admin. Try a different PIN.</string>
+    <string name="lockpassword_pin_denylisted_by_admin">Common PINs are blocked by your IT admin. Try a different PIN.</string>
 
     <!-- Error shown when in PASSWORD mode and user enters an invalid character. Because this may be concatenated with other messages, please make sure there's a period at the end of the sentence.  [CHAR LIMIT=40] -->
     <string name="lockpassword_illegal_character">This can\'t include an invalid character.</string>
@@ -1350,7 +1462,7 @@
     <string name="error_saving_password">Error saving password</string>
 
     <!-- Error shown when a user is choosing a PASSWORD for their work phone, but what they suggest is blocked by their company's IT administrator. The user should try another PASSWORD that's less common and more complicated. [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_password_blacklisted_by_admin">Common passwords are blocked by your IT admin. Try a different password.</string>
+    <string name="lockpassword_password_denylisted_by_admin">Common passwords are blocked by your IT admin. Try a different password.</string>
 
     <!-- [CHAR_LIMIT=NONE] Error shown when the user tries to set an ascending or descending sequence of digits. Because this may be concatenated with other messages, please make sure there's a period at the end of the sentence. [CHAR LIMIT=NONE] -->
     <string name="lockpassword_pin_no_sequential_digits">Ascending, descending, or repeated sequence of digits isn\'t allowed.</string>
@@ -1415,7 +1527,7 @@
     <!-- Title of dialog asking the user if they really want to exit the demo, which requires a factory reset [CHAR LIMIT=30]-->
     <string name="exit_retail_mode_dialog_title">Exit demo mode</string>
     <!-- Message in dialog asking the user if they really want to exit the demo, which requires a factory reset [CHAR LIMIT=150]-->
-    <string name="exit_retail_mode_dialog_body">This will delete the demo account and factory data reset the system. All user data will be lost.</string>
+    <string name="exit_retail_mode_dialog_body">This will delete the demo account and factory data reset the system. All profile data will be lost.</string>
     <!-- Text of confirmation button in dialog that appears to confirm that Demo Mode should be exited. [CHAR LIMIT=25]-->
     <string name="exit_retail_mode_dialog_confirmation_button_text">Exit Demo</string>
 
@@ -1425,9 +1537,126 @@
 
     <!-- Warn user that the action they are trying to perform is blocked while the car is in motion [CHAR LIMIT=60] -->
     <string name="restricted_while_driving">Feature not available while driving</string>
-    <!-- Warn user that adding a user is blocked while the car is in motion [CHAR LIMIT=60] -->
-    <string name="add_user_restricted_while_driving">Can\'t add user while driving</string>
+    <!-- Warn user that adding a profile is blocked while the car is in motion [CHAR LIMIT=60] -->
+    <string name="add_user_restricted_while_driving">Can\'t add profile while driving</string>
 
     <!-- Placeholder query for settings search -->
     <string name="default_search_query">Search</string>
+
+    <!-- Assistant & voice --><skip/>
+    <!-- Main Settings screen setting option name to go into the assistant & voice settings [CHAR LIMIT=40] -->
+    <string name="assistant_and_voice_setting_title">Assistant &amp; voice</string>
+    <!-- Assistant & voice settings screen, setting option name to choose the assistant app [CHAR LIMIT=60] -->
+    <string name="assistant_and_voice_assistant_app_title">Digital assistant app</string>
+    <!-- Assistant & voice settings screen, setting option name to allow the assistant app to read screen text [CHAR LIMIT=60] -->
+    <string name="assistant_and_voice_use_text_from_screen_title">Use text from screen</string>
+    <!-- Assistant & voice settings screen, setting option description for allowing the assistant app to read text from the screen [CHAR LIMIT=100] -->
+    <string name="assistant_and_voice_use_text_from_screen_summary">Allow assistant to access screen contents</string>
+    <!-- Assistant & voice settings screen, setting option name to allow the assistant app to access screen image [CHAR LIMIT=60] -->
+    <string name="assistant_and_voice_use_screenshot_title">Use screenshot</string>
+    <!-- Assistant & voice settings screen, setting option description for allowing the assistant app to use screenshots [CHAR LIMIT=100] -->
+    <string name="assistant_and_voice_use_screenshot_summary">Allow assistant to access screen image</string>
+
+    <!-- Notifications --><skip/>
+    <!-- Title of recently sent notifications category [CHAR LIMIT=60] -->
+    <string name="notifications_recently_sent">Recently sent</string>
+    <!-- Title of all apps category [CHAR LIMIT=60] -->
+    <string name="notifications_all_apps">All apps</string>
+
+    <!-- Profiles & accounts --><skip/>
+    <!-- Main Settings screen setting option name to go into the profiles & accounts settings [CHAR LIMIT=40] -->
+    <string name="profiles_and_accounts_settings_title">Profiles &amp; accounts</string>
+    <!-- Button text for viewing a list of other profiles [CHAR LIMIT=35] -->
+    <string name="manage_other_profiles_button_text">Manage other profiles</string>
+    <!-- Button text for creating a new user profile [CHAR LIMIT=35] -->
+    <string name="add_a_profile_button_text">Add a profile</string>
+    <!-- Button text for deleting the current user profile [CHAR LIMIT=35] -->
+    <string name="delete_this_profile_text">Delete this profile</string>
+    <!-- Profile settings add profile menu [CHAR LIMIT=35] -->
+    <string name="add_profile_text">Add profile</string>
+
+
+    <!-- TODO(b/186253868): remove translatable="false" once the real strings have been defined -->
+    <!-- Device Policy Management --><skip/>
+    <!-- Device admin add activity title -->
+    <string name="device_admin_add_title" translatable="false">Device admin</string>
+    <!-- Device admin warning message about policies an admin can use -->
+    <string name="device_admin_status" translatable="false">This admin app is active and allows
+        the app <xliff:g id="app_name">%1$s</xliff:g> to perform the
+        following operations:</string>
+    <!-- Device admin warning message about policies an admin can use -->
+    <string name="device_admin_warning" translatable="false">Activating this admin app will allow
+        the app <xliff:g id="app_name">%1$s</xliff:g> to perform the
+        following operations:</string>
+    <!-- Title for screen to add a device admin app [CHAR LIMIT=40] -->
+    <string name="add_device_admin_msg" translatable="false">Activate device admin app?</string>
+    <!-- Label for button to set the active device admin [CHAR_LIMIT=80] -->
+    <string name="add_device_admin" translatable="false">Activate this device admin app</string>
+    <!-- Label for button to remove the active device admin app [CHAR LIMIT=80] -->
+    <string name="remove_device_admin" translatable="false">Deactivate this device admin app</string>
+    <!-- Shown in dialog to allow user to see more information about the device admin [CHAR LIMIT=30] -->
+    <string name="admin_support_more_info" translatable="false">More details</string>
+    <!-- Shown in admin details page to warn user about policies the admin can set in a work profile. [CHAR LIMIT=NONE] -->
+    <string name="admin_profile_owner_message" translatable="false">Your admin can monitor and manage apps and data
+        associated with your work profile, including settings, permissions, corporate access,
+        network activity, and the device\'s location information.</string>
+    <!-- Shown in admin details page to warn user about policies the admin can set on a user. [CHAR LIMIT=NONE] -->
+    <string name="admin_profile_owner_user_message" translatable="false">Your admin can monitor and manage apps and data
+        associated with this user, including settings, permissions, corporate access,
+        network activity, and the device\'s location information.</string>
+    <!-- Shown in admin details page to warn user about policies the admin can set on a device. [CHAR LIMIT=NONE] -->
+    <string name="admin_device_owner_message" translatable="false">Your admin can monitor and manage apps and data
+        associated with this device, including settings, permissions, corporate access,
+        network activity, and the device\'s location information.</string>
+    <!-- Shown in admin details page to warn user about policies the admin can set on a financed device. [CHAR LIMIT=NONE] -->
+    <string name="admin_financed_message" translatable="false">Your device administrator may be able to access data
+        associated with this device, manage apps, and change this device\’s settings.</string>
+    <!-- Title for dialog displayed when user selects on a setting locked by an admin [CHAR LIMIT=30] -->
+    <string name="disabled_by_policy_title" translatable="false">Blocked by your IT admin</string>
+    <!-- Title for dialog displayed to tell user that changing volume was disallowed by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_adjust_volume" translatable="false">Can’t change volume</string>
+    <!-- Title for dialog displayed to tell user that outgoing calls were disabled by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_outgoing_calls" translatable="false">Can’t make calls</string>
+    <!-- Title for dialog displayed to tell user that sending SMS were disabled by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_sms" translatable="false">SMS not allowed</string>
+    <!-- Title for dialog displayed to tell user that the camera was disabled by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_camera" translatable="false">Can’t use camera</string>
+    <!-- Title for dialog displayed to tell user that screenshots are disabled by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_screen_capture" translatable="false">Can’t take screenshots</string>
+    <!-- Title for dialog displayed to tell user that the app was suspended by an admin [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_suspend_packages" translatable="false">Can’t open this app</string>
+    <!-- Dialog title. This dialog lets a user know that a specific setting is blocked by their credit provider. Since the user purchased the device from the credit provider, the credit provider controls what they can access. [CHAR LIMIT=50] -->
+    <string name="disabled_by_policy_title_financed_device" translatable="false">Blocked by your credit provider</string>
+    <!-- Dialog title shown when parental consent is required for the child to set up biometric authentication. [CHAR LIMIT=30] -->
+    <string name="disabled_by_policy_title_biometric_parental_consent" translatable="false">Parent needed</string>
+    <!-- Dialog content shown when parental consent is required for the child to set up biometric authentication. [CHAR LIMIT=NONE] -->
+    <string name="disabled_by_policy_content_biometric_parental_consent" translatable="false">Hand the phone to your parent to start setting this up</string>
+    <!-- Shown when the user tries to change a settings locked by an admin [CHAR LIMIT=200] -->
+    <string name="default_admin_support_msg" translatable="false">If you have questions, contact your IT admin</string>
+    <!-- url for learning more about IT admin policy disabling -->
+    <string name="help_url_action_disabled_by_it_admin" translatable="false"></string>
+    <!-- Title of setting on privacy settings screen that will show work policy info. [CHAR LIMIT=NONE] -->
+    <string name="work_policy_privacy_settings" translatable="false">Your work policy info</string>
+    <!-- Summary for Enterprise Privacy settings, explaining what the user can expect to find under it [CHAR LIMIT=NONE]-->
+    <string name="work_policy_privacy_settings_summary" translatable="false">Settings managed by your IT admin</string>
+
+    <!-- Power policy --><skip/>
+    <!-- Power components which are disabled by the current power policy cannot be toggled in Setting. [CHAR LIMIT=80] -->
+    <string name="power_component_disabled">This setting can\'t be changed right now</string>
+
+
+    <!-- TODO(b/186566325): remove translatable="false" once the string is finalized -->
+    <!-- Remote rquest bugreport --><skip/>
+    <!-- Title of dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the vehicle's fleet manager. [CHAR LIMIT=50] -->
+    <string name="share_remote_bugreport_dialog_title" translatable="false">Share bug report?</string>
+    <!-- Message of a dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the vehicle's fleet manager. [CHAR LIMIT=NONE] -->
+    <string name="share_remote_bugreport_dialog_message_finished" translatable="false">This vehicle\'s fleet manager requested a bug report to help troubleshoot this device. Apps and data may be shared.</string>
+    <!-- Message of a dialog shown to ask for user consent for sharing a bugreport that was requested remotely by the vehicle's fleet manager and it's still being taken. [CHAR LIMIT=NONE] -->
+    <string name="share_remote_bugreport_dialog_message" translatable="false">This vehicle\'s fleet manager requested a bug report to help troubleshoot this device. Apps and data may be shared, and your device may temporarily slow down.</string>
+    <!-- Message of a dialog shown to inform that the remote bugreport that was requested remotely by the vehicle\'s fleet manager is still being taken and will be shared when finished. [CHAR LIMIT=NONE]  -->
+    <string name="sharing_remote_bugreport_dialog_message" translatable="false">This bug report is being shared with this vehicle\'s fleet manager. Contact them for more details.</string>
+    <!-- Acceptance label of dialog shown to ask for user consent for sharing the remote bugreport. [CHAR LIMIT=20] -->
+    <string name="share_remote_bugreport_action" translatable="false">Share</string>
+    <!-- Decline label of dialog shown to ask for user consent for sharing the remote bugreport. [CHAR LIMIT=20] -->
+    <string name="decline_remote_bugreport_action" translatable="false">Decline</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index f9c3bf6..8a2372b 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -29,6 +29,10 @@
         <item name="android:tint">@*android:color/btn_colored_borderless_text_material</item>
     </style>
 
+    <style name="CarSettingsPreferenceFragment" parent="@style/PreferenceFragment.CarUi">
+        <item name="android:layout">@layout/settings_preference_fragment</item>
+    </style>
+
     <style name="LockPattern">
         <item name="*android:regularColor">@*android:color/car_body1</item>
         <item name="*android:successColor">@*android:color/car_blue_500</item>
@@ -68,4 +72,14 @@
         <!-- Use '?android:attr/textColorPrimary' (or another chosen color) to show the dividers -->
         <item name="android:colorControlNormal">@android:color/transparent</item>
     </style>
+
+    <style name="ColoredAccentPreferenceStyle">
+        <item name="titleColor">@color/text_color_accent_with_disable</item>
+        <item name="iconColor">?android:attr/colorAccent</item>
+    </style>
+
+    <style name="ColoredSwitchPreferenceStyle">
+        <item name="disabledTitleColor">@color/car_grey_400_with_disable</item>
+        <item name="enabledTitleColor">@color/text_color_accent_with_disable</item>
+    </style>
 </resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index d9d8fbc..f1067b0 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -16,16 +16,17 @@
 -->
 
 <resources>
-    <style name="CarSettingTheme" parent="@style/Theme.CarUi.WithToolbar">
+    <style name="CarSettingTheme" parent="@style/Theme.CarUi.NoToolbar">
         <item name="wifi_signal">@drawable/wifi_signal</item>
         <item name="wifiSignalColor">?android:attr/textColorPrimary</item>
         <item name="iconColor">@color/car_ui_text_color_primary</item>
         <item name="dividerColor">@*android:color/car_list_divider</item>
-        <item name="userSwitcherBackground">@android:color/transparent</item>
-        <item name="userSwitcherCurrentUserColor">?android:attr/colorAccent</item>
-        <item name="userSwitcherAddIconColor">@*android:color/car_tint</item>
-        <item name="userSwitcherAddIconBackgroundColor">?android:attr/colorPrimaryDark</item>
-        <item name="userSwitcherNameTextAppearance">?android:attr/textAppearanceLarge</item>
+        <item name="preferenceTheme">@style/CarSettingsPreferenceTheme</item>
+        <item name="profileSwitcherBackground">@android:color/transparent</item>
+        <item name="profileSwitcherCurrentProfileColor">?android:attr/colorAccent</item>
+        <item name="profileSwitcherAddIconColor">@*android:color/car_tint</item>
+        <item name="profileSwitcherAddIconBackgroundColor">?android:attr/colorPrimaryDark</item>
+        <item name="profileSwitcherNameTextAppearance">?android:attr/textAppearanceLarge</item>
         <item name="quickSettingsEnabledColor">?android:attr/colorControlActivated</item>
         <item name="quickSettingsDisabledColor">?android:attr/colorControlNormal</item>
         <item name="quickSettingsIconEnabledColor">?android:attr/colorPrimary</item>
@@ -61,6 +62,11 @@
         <item name="android:windowIsFloating">true</item>
     </style>
 
+    <style name="CarSettingsPreferenceTheme" parent="@style/CarUiPreferenceTheme">
+        <item name="preferenceFragmentCompatStyle">@style/CarSettingsPreferenceFragment</item>
+        <item name="preferenceFragmentStyle">@style/CarSettingsPreferenceFragment</item>
+    </style>
+
     <!-- Themes for Setup Wizard -->
 
     <style name="FallbackHome.SetupWizard"
diff --git a/res/xml/account_details_fragment.xml b/res/xml/account_details_fragment.xml
index 75704a5..9ac5dd3 100644
--- a/res/xml/account_details_fragment.xml
+++ b/res/xml/account_details_fragment.xml
@@ -17,15 +17,16 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                   xmlns:settings="http://schemas.android.com/apk/res-auto"
                   android:key="@string/psk_account_details">
-    <com.android.car.ui.preference.CarUiPreference
+    <com.android.car.ui.preference.CarUiTwoActionIconPreference
         android:key="@string/pk_account_details"
         android:selectable="false"
         settings:controller="com.android.car.settings.accounts.AccountDetailsPreferenceController"
+        settings:secondaryActionIcon="@drawable/ic_delete"
         settings:showChevron="false"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_account_settings"
         settings:controller="com.android.car.settings.accounts.AccountDetailsSettingController">
-        <intent android:action="com.android.settings.action.IA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.account_detail"/>
         </intent>
diff --git a/res/xml/account_settings_fragment.xml b/res/xml/account_settings_fragment.xml
deleted file mode 100644
index f8b40d1..0000000
--- a/res/xml/account_settings_fragment.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/accounts_settings_title"
-    android:key="@string/psk_account_settings">
-    <PreferenceCategory
-        android:key="@string/pk_account_list"
-        android:title="@string/account_list_title"
-        settings:controller="com.android.car.settings.accounts.AccountListPreferenceController"
-        settings:searchable="false"/>
-    <SwitchPreference
-        android:key="@string/pk_account_auto_sync"
-        android:title="@string/account_auto_sync_title"
-        android:summary="@string/account_auto_sync_summary"
-        settings:controller="com.android.car.settings.accounts.AccountAutoSyncPreferenceController"/>
-    <com.android.car.settings.common.LogicalPreferenceGroup
-        android:key="@string/pk_accounts_extra_settings"
-        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
-            <extra android:name="com.android.settings.category"
-                   android:value="com.android.settings.category.ia.accounts"/>
-        </intent>
-    </com.android.car.settings.common.LogicalPreferenceGroup>
-</PreferenceScreen>
diff --git a/res/xml/account_sync_details_fragment.xml b/res/xml/account_sync_details_fragment.xml
index 121a109..1da94fa 100644
--- a/res/xml/account_sync_details_fragment.xml
+++ b/res/xml/account_sync_details_fragment.xml
@@ -18,10 +18,11 @@
                   xmlns:settings="http://schemas.android.com/apk/res-auto"
                   android:title="@string/account_sync_title"
                   android:key="@string/psk_account_sync_details">
-    <Preference
+    <com.android.car.ui.preference.CarUiTwoActionIconPreference
         android:key="@string/pk_account_details_with_sync"
         android:selectable="false"
-        settings:controller="com.android.car.settings.accounts.AccountDetailsWithSyncStatusPreferenceController"/>
+        settings:controller="com.android.car.settings.accounts.AccountDetailsWithSyncStatusPreferenceController"
+        settings:showChevron="false"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_account_sync_details"
         settings:controller="com.android.car.settings.accounts.AccountSyncDetailsPreferenceController"/>
diff --git a/res/xml/add_wifi_fragment.xml b/res/xml/add_wifi_fragment.xml
index b1e8ff7..ad35e91 100644
--- a/res/xml/add_wifi_fragment.xml
+++ b/res/xml/add_wifi_fragment.xml
@@ -20,11 +20,12 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/wifi_setup_add_network"
     android:key="@string/psk_add_wifi">
-    <EditTextPreference
+    <com.android.car.ui.preference.CarUiEditTextPreference
         android:key="@string/pk_add_wifi_network_name"
         android:persistent="false"
         android:title="@string/wifi_ssid"
-        settings:controller="com.android.car.settings.wifi.NetworkNamePreferenceController"/>
+        settings:controller="com.android.car.settings.wifi.NetworkNamePreferenceController"
+        settings:showChevron="false"/>
     <ListPreference
         android:dialogTitle="@string/wifi_security"
         android:key="@string/pk_add_wifi_security"
@@ -37,5 +38,6 @@
         android:persistent="false"
         android:summary="@string/default_password_summary"
         android:title="@string/wifi_password"
-        settings:controller="com.android.car.settings.wifi.NetworkPasswordPreferenceController"/>
+        settings:controller="com.android.car.settings.wifi.NetworkPasswordPreferenceController"
+        settings:showChevron="false"/>
 </PreferenceScreen>
diff --git a/res/xml/application_details_fragment.xml b/res/xml/application_details_fragment.xml
index e44a785..832488c 100644
--- a/res/xml/application_details_fragment.xml
+++ b/res/xml/application_details_fragment.xml
@@ -40,6 +40,16 @@
         android:key="@string/pk_application_details_storage"
         android:title="@string/storage_application_label"
         settings:controller="com.android.car.settings.applications.StoragePreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_application_details_peak_performance"
+        android:title="@string/peak_performance_label"
+        settings:controller=
+            "com.android.car.settings.applications.PeakPerformancePreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_hibernation_switch"
+        android:title="@string/unused_apps_switch"
+        settings:controller=
+            "com.android.car.settings.applications.appinfo.HibernationSwitchPreferenceController" />
     <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_application_details_version"
         settings:controller="com.android.car.settings.applications.VersionPreferenceController"
diff --git a/res/xml/application_launch_settings_fragment.xml b/res/xml/application_launch_settings_fragment.xml
index 55d5de9..92816eb 100644
--- a/res/xml/application_launch_settings_fragment.xml
+++ b/res/xml/application_launch_settings_fragment.xml
@@ -20,20 +20,22 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/app_launch_title"
     android:key="@string/psk_application_launch_settings">
-    <Preference
+    <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_opening_links_app_details"
-        settings:controller="com.android.car.settings.applications.managedomainurls.ApplicationWithVersionPreferenceController"/>
+        settings:controller="com.android.car.settings.applications.managedomainurls.ApplicationWithVersionPreferenceController"
+        settings:showChevron="false"/>
     <PreferenceCategory android:title="@string/app_launch_domain_links_title">
         <ListPreference
             android:key="@string/pk_opening_links_app_details_state"
             android:title="@string/app_launch_open_domain_urls_title"
             android:summary="%s"
             settings:controller="com.android.car.settings.applications.managedomainurls.AppLinkStatePreferenceController"/>
-        <Preference
+        <com.android.car.ui.preference.CarUiPreference
             android:key="@string/pk_opening_links_app_details_urls"
             android:title="@string/app_launch_supported_domain_urls_title"
             android:dependency="@string/pk_opening_links_app_details_state"
-            settings:controller="com.android.car.settings.applications.managedomainurls.DomainUrlsPreferenceController"/>
+            settings:controller="com.android.car.settings.applications.managedomainurls.DomainUrlsPreferenceController"
+            settings:showChevron="false"/>
     </PreferenceCategory>
     <PreferenceCategory android:title="@string/app_launch_other_defaults_title">
         <Preference
diff --git a/res/xml/applications_settings_fragment.xml b/res/xml/applications_settings_fragment.xml
index 1110371..14300b6 100644
--- a/res/xml/applications_settings_fragment.xml
+++ b/res/xml/applications_settings_fragment.xml
@@ -20,6 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/applications_settings"
     android:key="@string/psk_applications_settings">
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_all_applications_settings_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_all_applications_settings_list"
         settings:controller="com.android.car.settings.applications.ApplicationsSettingsPreferenceController"/>
diff --git a/res/xml/apps_and_notifications_fragment.xml b/res/xml/apps_and_notifications_fragment.xml
deleted file mode 100644
index c9005ad..0000000
--- a/res/xml/apps_and_notifications_fragment.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/apps_and_notifications_settings"
-    android:key="@string/psk_apps_and_notifications">
-    <Preference
-        android:key="@string/pk_applications_settings_screen_entry"
-        android:title="@string/all_applications"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$ApplicationsSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:key="@string/pk_default_applications_settings_entry"
-        android:title="@string/default_applications"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:action="android.settings.MANAGE_DEFAULT_APPS_SETTINGS"/>
-    </Preference>
-    <Preference
-        android:key="@string/pk_app_permissions_entry"
-        android:title="@string/app_permissions"
-        settings:controller="com.android.car.settings.applications.AppPermissionsEntryPreferenceController">
-        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
-    </Preference>
-    <Preference
-        android:key="@string/pk_special_access_entry"
-        android:title="@string/special_access"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$SpecialAccessSettingsActivity"/>
-    </Preference>
-</PreferenceScreen>
diff --git a/res/xml/apps_fragment.xml b/res/xml/apps_fragment.xml
new file mode 100644
index 0000000..f2e9d1e
--- /dev/null
+++ b/res/xml/apps_fragment.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/apps_settings_title"
+    android:key="@string/psk_apps">
+    <Preference
+        android:fragment="com.android.car.settings.applications.ApplicationsSettingsFragment"
+        android:key="@string/pk_applications_settings_screen_entry"
+        android:title="@string/all_applications"
+        settings:controller="com.android.car.settings.applications.AllAppsPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_recent_apps_group"
+        settings:controller="com.android.car.settings.applications.RecentAppsGroupPreferenceController">
+        <PreferenceCategory
+            android:key="@string/pk_recent_apps_list"
+            android:title="@string/apps_recently_opened"
+            settings:controller="com.android.car.settings.applications.RecentAppsListPreferenceController"
+            settings:searchable="false"/>
+        <Preference
+            android:fragment="com.android.car.settings.applications.ApplicationsSettingsFragment"
+            android:key="@string/pk_recent_apps_view_all"
+            settings:controller="com.android.car.settings.applications.RecentAppsViewAllPreferenceController"/>
+        <com.android.car.settings.common.DividerPreference/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <Preference
+        android:key="@string/pk_app_permissions_entry"
+        android:title="@string/apps_permission_manager_title"
+        android:summary="@string/app_permissions_summary"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
+    <Preference
+        android:key="@string/pk_default_applications_settings_entry"
+        android:title="@string/default_applications"
+        android:summary="@string/apps_default_apps_summary"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:action="android.settings.MANAGE_DEFAULT_APPS_SETTINGS"/>
+    </Preference>
+    <Preference
+        android:key="@string/pk_hibernated_apps"
+        android:title="@string/unused_apps"
+        settings:controller=
+            "com.android.car.settings.applications.HibernatedAppsPreferenceController">
+        <intent android:action="android.intent.action.MANAGE_UNUSED_APPS"/>
+    </Preference>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.SpecialAccessSettingsFragment"
+        android:key="@string/pk_special_access_entry"
+        android:title="@string/special_access"
+        android:summary="@string/apps_special_app_access_summary"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/assistant_and_voice_fragment.xml b/res/xml/assistant_and_voice_fragment.xml
new file mode 100644
index 0000000..1f7ebc7
--- /dev/null
+++ b/res/xml/assistant_and_voice_fragment.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/assistant_and_voice_setting_title"
+    android:key="@string/psk_assistant_and_voice_settings">
+    <com.android.car.ui.preference.CarUiTwoActionIconPreference
+        android:key="@string/pk_default_assist"
+        android:title="@string/assistant_and_voice_assistant_app_title"
+        settings:controller="com.android.car.settings.applications.defaultapps.DefaultAssistantPickerEntryPreferenceController"
+        settings:iconSpaceReserved="true"
+        settings:secondaryActionIcon="@drawable/ic_settings_gear"/>
+    <SwitchPreference
+        android:key="@string/pk_assist_use_text_context"
+        android:summary="@string/assist_access_context_summary"
+        android:title="@string/assist_access_context_title"
+        settings:controller="com.android.car.settings.applications.assist.TextContextPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <SwitchPreference
+        android:key="@string/pk_assist_use_screenshot"
+        android:summary="@string/assist_access_screenshot_summary"
+        android:title="@string/assist_access_screenshot_title"
+        settings:controller="com.android.car.settings.applications.assist.ScreenshotContextPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <com.android.car.ui.preference.CarUiTwoActionIconPreference
+        android:fragment="com.android.car.settings.applications.assist.DefaultVoiceInputPickerFragment"
+        android:key="@string/pk_default_voice_input"
+        android:title="@string/voice_input_settings_title"
+        settings:controller="com.android.car.settings.applications.assist.DefaultVoiceInputPickerEntryPreferenceController"
+        settings:iconSpaceReserved="true"
+        settings:secondaryActionIcon="@drawable/ic_settings_gear"/>
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml
index b0853a5..a41d171 100644
--- a/res/xml/bluetooth_device_details_fragment.xml
+++ b/res/xml/bluetooth_device_details_fragment.xml
@@ -20,9 +20,15 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/bluetooth_settings_title"
     android:key="@string/psk_bluetooth_device_details">
-    <Preference
+    <com.android.car.settings.common.EntityHeaderPreference
         android:key="@string/pk_bluetooth_device_name"
-        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceNamePreferenceController"/>
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceNamePreferenceController"
+        settings:selectable="true"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.ActionButtonsPreference
+        android:key="@string/pk_bluetooth_device_action_buttons"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceActionButtonsPreferenceController"
+        settings:searchable="false"/>
     <PreferenceCategory
         android:key="@string/pk_bluetooth_device_profiles"
         android:title="@string/bluetooth_profiles"
diff --git a/res/xml/bluetooth_pairing_selection_fragment.xml b/res/xml/bluetooth_pairing_selection_fragment.xml
index 56e02ed..a97d853 100644
--- a/res/xml/bluetooth_pairing_selection_fragment.xml
+++ b/res/xml/bluetooth_pairing_selection_fragment.xml
@@ -20,17 +20,21 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/bluetooth_pair_new_device"
     android:key="@string/psk_bluetooth_pairing_selection">
-    <Preference
+    <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_bluetooth_name"
         android:title="@string/bluetooth_name"
-        settings:controller="com.android.car.settings.bluetooth.BluetoothNamePreferenceController"/>
-    <PreferenceCategory
+        android:icon="@drawable/ic_car"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothNamePreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.settings.common.SettingsPreferenceCategory
         android:key="@string/pk_bluetooth_available_devices"
         android:title="@string/bluetooth_available_devices"
-        settings:controller="com.android.car.settings.bluetooth.BluetoothUnbondedDevicesPreferenceController"/>
-    <Preference
+        settings:controller="com.android.car.settings.bluetooth.BluetoothUnbondedDevicesPreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.ui.preference.CarUiPreference
         android:icon="@drawable/ic_settings_about"
         android:key="@string/pk_bluetooth_address"
         android:selectable="false"
-        settings:controller="com.android.car.settings.bluetooth.BluetoothAddressPreferenceController"/>
+        settings:controller="com.android.car.settings.bluetooth.BluetoothAddressPreferenceController"
+        settings:showChevron="false"/>
 </PreferenceScreen>
diff --git a/res/xml/bluetooth_settings_fragment.xml b/res/xml/bluetooth_settings_fragment.xml
index ee81cf9..55c831e 100644
--- a/res/xml/bluetooth_settings_fragment.xml
+++ b/res/xml/bluetooth_settings_fragment.xml
@@ -20,14 +20,22 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/bluetooth_settings_title"
     android:key="@string/psk_bluetooth_settings">
+    <com.android.car.settings.common.ClickableWhileDisabledSwitchPreference
+        android:key="@string/pk_bluetooth_state_switch"
+        android:title="@string/bluetooth_settings_title"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothStateSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <PreferenceCategory
         android:key="@string/pk_bluetooth_paired_devices"
         android:title="@string/bluetooth_paired_devices"
         settings:controller="com.android.car.settings.bluetooth.BluetoothBondedDevicesPreferenceController"/>
-    <Preference
+    <com.android.car.ui.preference.CarUiPreference
         android:fragment="com.android.car.settings.bluetooth.BluetoothPairingSelectionFragment"
         android:icon="@drawable/ic_add"
         android:key="@string/pk_bluetooth_pair_new_device"
         android:title="@string/bluetooth_pair_new_device"
-        settings:controller="com.android.car.settings.bluetooth.PairNewDevicePreferenceController"/>
+        settings:controller="com.android.car.settings.bluetooth.PairNewDevicePreferenceController"
+        settings:showChevron="false"/>
 </PreferenceScreen>
diff --git a/res/xml/choose_account_fragment.xml b/res/xml/choose_account_fragment.xml
index 3245cd7..db6edf7 100644
--- a/res/xml/choose_account_fragment.xml
+++ b/res/xml/choose_account_fragment.xml
@@ -16,7 +16,7 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                   xmlns:settings="http://schemas.android.com/apk/res-auto"
-                  android:title="@string/add_an_account"
+                  android:title="@string/add_account_title"
                   android:key="@string/psk_choose_account">
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_add_account"
diff --git a/res/xml/choose_new_admin_fragment.xml b/res/xml/choose_new_admin_fragment.xml
index 6ff22c1..ebf89b4 100644
--- a/res/xml/choose_new_admin_fragment.xml
+++ b/res/xml/choose_new_admin_fragment.xml
@@ -22,5 +22,5 @@
     android:key="@string/psk_choose_new_admin">
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_choose_new_admin"
-        settings:controller="com.android.car.settings.users.ChooseNewAdminPreferenceController"/>
+        settings:controller="com.android.car.settings.profiles.ChooseNewAdminPreferenceController"/>
 </PreferenceScreen>
diff --git a/res/xml/data_usage_fragment.xml b/res/xml/data_usage_fragment.xml
index 78f3bb3..c0f6d27 100644
--- a/res/xml/data_usage_fragment.xml
+++ b/res/xml/data_usage_fragment.xml
@@ -29,11 +29,9 @@
         android:title="@string/app_data_usage"
         settings:controller="com.android.car.settings.datausage.DataUsagePreferenceController"/>
     <Preference
+        android:fragment="com.android.car.settings.datausage.DataWarningAndLimitFragment"
         android:key="@string/pk_data_warning_and_limit"
         android:title="@string/data_warning_limit_title"
         settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.datausage.DataWarningAndLimitActivity"/>
-    </Preference>
+        settings:searchable="false"/>
 </PreferenceScreen>
diff --git a/res/xml/datetime_settings_fragment.xml b/res/xml/datetime_settings_fragment.xml
index 0b16c23..070ccd4 100644
--- a/res/xml/datetime_settings_fragment.xml
+++ b/res/xml/datetime_settings_fragment.xml
@@ -22,12 +22,10 @@
     android:key="@string/psk_datetime_settings">
     <SwitchPreference
         android:key="@string/pk_auto_datetime_switch"
-        android:summary="@string/date_time_auto_summary"
         android:title="@string/date_time_auto"
         settings:controller="com.android.car.settings.datetime.AutoDatetimeTogglePreferenceController"/>
     <SwitchPreference
         android:key="@string/pk_auto_timezone_switch"
-        android:summary="@string/zone_auto_summary"
         android:title="@string/zone_auto"
         settings:controller="com.android.car.settings.datetime.AutoTimeZoneTogglePreferenceController"/>
     <Preference
diff --git a/res/xml/device_admin_add.xml b/res/xml/device_admin_add.xml
new file mode 100644
index 0000000..1fce5ab
--- /dev/null
+++ b/res/xml/device_admin_add.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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/device_admin_add_title"
+    android:key="@string/psk_device_admin_add">
+
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_header"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddHeaderPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_explanation"
+        android:selectable="false"
+        settings:singleLineTitle="false"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddExplanationPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_warning"
+        android:selectable="false"
+        settings:singleLineTitle="false"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddWarningPreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_device_admin_add_policies"
+        android:selectable="false"
+        settings:singleLineTitle="false"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddPoliciesPreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_support"
+        android:selectable="false"
+        settings:singleLineTitle="false"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddSupportPreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_action"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddActionPreferenceController"
+        settings:showChevron="false"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_device_admin_add_cancel"
+        settings:controller="com.android.car.settings.enterprise.DeviceAdminAddCancelPreferenceController"
+        settings:showChevron="false"/>
+
+</PreferenceScreen>
diff --git a/res/xml/display_settings_fragment.xml b/res/xml/display_settings_fragment.xml
index 4db76d0..6d1ba8d 100644
--- a/res/xml/display_settings_fragment.xml
+++ b/res/xml/display_settings_fragment.xml
@@ -20,20 +20,26 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/display_settings"
     android:key="@string/psk_display_settings">
-    <SwitchPreference
-        android:key="@string/pk_adaptive_brightness_switch"
-        android:summary="@string/auto_brightness_summary"
-        android:title="@string/auto_brightness_title"
-        settings:controller="com.android.car.settings.display.AdaptiveBrightnessTogglePreferenceController"/>
     <com.android.car.settings.common.SeekBarPreference
         android:key="@string/pk_brightness_level"
         android:title="@string/brightness"
         settings:controller="com.android.car.settings.display.BrightnessLevelPreferenceController"
         settings:showSeekBarValue="false"/>
+    <SwitchPreference
+        android:key="@string/pk_adaptive_brightness_switch"
+        android:summary="@string/auto_brightness_summary"
+        android:title="@string/auto_brightness_title"
+        settings:controller="com.android.car.settings.display.AdaptiveBrightnessTogglePreferenceController"/>
+    <com.android.car.settings.common.DividerPreference/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.DatetimeSettingsFragment"
+        android:key="@string/pk_date_time_settings_entry"
+        android:title="@string/date_and_time_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_display_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.display"/>
         </intent>
diff --git a/res/xml/factory_reset_confirm_fragment.xml b/res/xml/factory_reset_confirm_fragment.xml
new file mode 100644
index 0000000..cf72941
--- /dev/null
+++ b/res/xml/factory_reset_confirm_fragment.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/factory_reset_confirm_title"
+    android:key="@string/psk_factory_reset_confirm">
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_factory_reset_confirm_desc"
+        android:selectable="false"
+        android:title="@string/factory_reset_confirm_desc"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:singleLineTitle="false"
+        settings:showChevron="false"/>
+</PreferenceScreen>
diff --git a/res/xml/factory_reset_fragment.xml b/res/xml/factory_reset_fragment.xml
new file mode 100644
index 0000000..31d03f6
--- /dev/null
+++ b/res/xml/factory_reset_fragment.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/factory_reset_title"
+    android:key="@string/psk_factory_reset">
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_factory_reset_desc"
+        android:selectable="false"
+        android:title="@string/factory_reset_desc"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:singleLineTitle="false"
+        settings:showChevron="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_factory_reset_account_list"
+        android:selectable="false"
+        android:title="@string/factory_reset_accounts"
+        settings:controller="com.android.car.settings.system.FactoryResetAccountsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_factory_reset_other_profiles_present"
+        android:selectable="false"
+        android:title="@string/factory_reset_other_users_present"
+        settings:controller="com.android.car.settings.system.FactoryResetOtherProfilesPresentPreferenceController"
+        settings:singleLineTitle="false"/>
+    <CheckBoxPreference
+        android:defaultValue="true"
+        android:key="@string/pk_factory_reset_reset_esim"
+        android:summary="@string/reset_esim_desc"
+        android:title="@string/reset_esim_title"
+        settings:controller="com.android.car.settings.system.FactoryResetEsimPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/homepage_fragment.xml b/res/xml/homepage_fragment.xml
index 8244f12..f75401d 100644
--- a/res/xml/homepage_fragment.xml
+++ b/res/xml/homepage_fragment.xml
@@ -25,130 +25,89 @@
         android:key="@string/pk_suggestions"
         settings:controller="com.android.car.settings.suggestions.SuggestionsPreferenceController"/>
     -->
-    <Preference
-        android:icon="@drawable/ic_settings_display"
-        android:key="@string/pk_display_settings_entry"
-        android:title="@string/display_settings"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$DisplaySettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_sound"
-        android:key="@string/pk_sound_settings_entry"
-        android:title="@string/sound_settings"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$SoundSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_wifi"
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.bluetooth.BluetoothSettingsFragment"
+        android:icon="@drawable/ic_top_level_bluetooth"
+        android:key="@string/pk_bluetooth_settings_entry"
+        android:title="@string/bluetooth_settings_title"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothEntryPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.network.NetworkAndInternetFragment"
+        android:icon="@drawable/ic_top_level_network_and_internet"
         android:key="@string/pk_network_and_internet_entry"
         android:title="@string/network_and_internet"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$NetworkAndInternetActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_wireless_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.wireless"/>
         </intent>
     </com.android.car.settings.common.LogicalPreferenceGroup>
-    <Preference
-        android:icon="@drawable/ic_settings_bluetooth"
-        android:key="@string/pk_bluetooth_settings_entry"
-        android:title="@string/bluetooth_settings_title"
-        settings:controller="com.android.car.settings.bluetooth.BluetoothEntryPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$BluetoothSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_units"
-        android:key="@string/pk_units_settings_entry"
-        android:title="@string/units_settings"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-            android:targetClass="com.android.car.settings.common.CarSettingActivities$UnitsSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_location"
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.notifications.NotificationsFragment"
+        android:icon="@drawable/ic_top_level_notifications"
+        android:key="@string/pk_notifications_settings_entry"
+        android:title="@string/notifications_label"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.sound.SoundSettingsFragment"
+        android:icon="@drawable/ic_top_level_sound"
+        android:key="@string/pk_sound_settings_entry"
+        android:title="@string/sound_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.display.DisplaySettingsFragment"
+        android:icon="@drawable/ic_top_level_display"
+        android:key="@string/pk_display_settings_entry"
+        android:title="@string/display_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:icon="@drawable/ic_top_level_profiles_and_accounts"
+        android:key="@string/pk_profiles_and_accounts_settings_entry"
+        android:title="@string/profiles_and_accounts_settings_title"
+        settings:controller="com.android.car.settings.profiles.ProfilesEntryPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.location.LocationSettingsFragment"
+        android:icon="@drawable/ic_top_level_location"
         android:key="@string/pk_location_settings_entry"
         android:title="@string/location_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$LocationSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_applications"
-        android:key="@string/pk_apps_and_notifications_settings_entry"
-        android:title="@string/apps_and_notifications_settings"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$AppsAndNotificationsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_date_time"
-        android:key="@string/pk_date_time_settings_entry"
-        android:title="@string/date_and_time_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$DatetimeSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_user"
-        android:key="@string/pk_users_settings_entry"
-        android:title="@string/users_list_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$UserDetailsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_account"
-        android:key="@string/pk_accounts_settings_entry"
-        android:title="@string/accounts_settings_title"
-        settings:controller="com.android.car.settings.accounts.AccountsEntryPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$AccountSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_privacy"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.privacy.PrivacySettingsFragment"
+        android:icon="@drawable/ic_top_level_privacy"
         android:key="@string/pk_privacy_settings_entry"
         android:title="@string/privacy_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$PrivacySettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_storage"
-        android:key="@string/pk_storage_settings_entry"
-        android:title="@string/storage_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$StorageSettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_lock"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.security.SecuritySettingsFragment"
+        android:icon="@drawable/ic_top_level_security"
         android:key="@string/pk_security_settings_entry"
         android:title="@string/security_settings_title"
-        settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$SecuritySettingsActivity"/>
-    </Preference>
-    <Preference
-        android:icon="@drawable/ic_settings_about"
+        settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.applications.AppsFragment"
+        android:icon="@drawable/ic_top_level_applications"
+        android:key="@string/pk_apps_settings_entry"
+        android:title="@string/apps_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.applications.assist.AssistantAndVoiceFragment"
+        android:icon="@drawable/ic_top_level_assistant_and_voice"
+        android:key="@string/pk_assistant_and_voice_settings_entry"
+        android:title="@string/assistant_and_voice_setting_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.TopLevelPreference
+        android:fragment="com.android.car.settings.system.SystemSettingsFragment"
+        android:icon="@drawable/ic_top_level_system"
         android:key="@string/pk_system_settings_entry"
         android:title="@string/system_setting_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$SystemSettingsActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_device_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.device"/>
         </intent>
@@ -156,7 +115,7 @@
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_personal_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.personal"/>
         </intent>
diff --git a/res/xml/languages_and_input_fragment.xml b/res/xml/languages_and_input_fragment.xml
index da5442e..20d5f11 100644
--- a/res/xml/languages_and_input_fragment.xml
+++ b/res/xml/languages_and_input_fragment.xml
@@ -19,45 +19,37 @@
                   android:title="@string/languages_and_input_settings"
                   android:key="@string/psk_languages_and_input">
     <Preference
+        android:fragment="com.android.car.settings.language.LanguagePickerFragment"
         android:icon="@drawable/ic_translate"
         android:key="@string/pk_language_settings_entry"
         android:title="@string/language_settings"
-        settings:controller="com.android.car.settings.language.LanguageSettingsEntryPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$LanguagePickerActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.language.LanguageSettingsEntryPreferenceController"/>
     <com.android.car.ui.preference.CarUiTwoActionIconPreference
+        android:fragment="com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment"
         android:key="@string/pk_autofill_picker_entry"
         android:summary="@string/app_list_preference_none"
         android:title="@string/autofill_settings_title"
         settings:controller="com.android.car.settings.applications.defaultapps.DefaultAutofillPickerEntryPreferenceController"
         settings:iconSpaceReserved="true"
-        settings:secondaryActionIcon="@drawable/ic_settings_gear">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$DefaultAutofillPickerActivity"/>
-    </com.android.car.ui.preference.CarUiTwoActionIconPreference>
+        settings:secondaryActionIcon="@drawable/ic_settings_gear"/>
     <Preference
+        android:fragment="com.android.car.settings.inputmethod.KeyboardFragment"
         android:key="@string/pk_keyboard_entry"
         android:title="@string/keyboard_settings"
         settings:controller="com.android.car.settings.inputmethod.KeyboardPreferenceController"
         settings:iconSpaceReserved="true"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$KeyboardActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <Preference
+        android:fragment="com.android.car.settings.tts.TextToSpeechOutputFragment"
         android:key="@string/pk_tts_settings_entry"
         android:title="@string/text_to_speech_settings"
         settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
         settings:iconSpaceReserved="true"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$TextToSpeechOutputActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_language_and_input_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.language"/>
         </intent>
diff --git a/res/xml/location_settings_fragment.xml b/res/xml/location_settings_fragment.xml
index 5835d9a..721729e 100644
--- a/res/xml/location_settings_fragment.xml
+++ b/res/xml/location_settings_fragment.xml
@@ -20,6 +20,12 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/location_settings_title"
     android:key="@string/psk_location_settings">
+    <com.android.car.settings.common.ClickableWhileDisabledSwitchPreference
+        android:key="@string/pk_location_state_switch"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.location.LocationStateSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <Preference
         android:fragment="com.android.car.settings.location.RecentLocationRequestsFragment"
         android:key="@string/pk_location_recent_requests_entry"
@@ -38,7 +44,10 @@
         android:key="@string/pk_location_services"
         android:title="@string/location_settings_services_title"
         settings:controller="com.android.car.settings.location.LocationServicesPreferenceController"/>
-    <com.android.car.settings.common.LogicalPreferenceGroup
+
+    <Preference
         android:key="@string/pk_location_footer"
-        settings:controller="com.android.car.settings.location.LocationFooterPreferenceController"/>
+        android:summary="@string/location_settings_footer"
+        android:icon="@drawable/ic_settings_about"
+        android:selectable="false"/>
 </PreferenceScreen>
diff --git a/res/xml/manage_assist_fragment.xml b/res/xml/manage_assist_fragment.xml
deleted file mode 100644
index e06c8f0..0000000
--- a/res/xml/manage_assist_fragment.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/assist_and_voice_input_settings"
-    android:key="@string/psk_manage_assist">
-    <com.android.car.ui.preference.CarUiTwoActionIconPreference
-        android:key="@string/pk_default_assist"
-        android:title="@string/assist_app_settings"
-        settings:controller="com.android.car.settings.applications.defaultapps.DefaultAssistantPickerEntryPreferenceController"
-        settings:iconSpaceReserved="true"
-        settings:secondaryActionIcon="@drawable/ic_settings_gear"/>
-    <SwitchPreference
-        android:key="@string/pk_assist_use_text_context"
-        android:summary="@string/assist_access_context_summary"
-        android:title="@string/assist_access_context_title"
-        settings:controller="com.android.car.settings.applications.assist.TextContextPreferenceController"
-        settings:iconSpaceReserved="true"/>
-    <SwitchPreference
-        android:key="@string/pk_assist_use_screenshot"
-        android:summary="@string/assist_access_screenshot_summary"
-        android:title="@string/assist_access_screenshot_title"
-        settings:controller="com.android.car.settings.applications.assist.ScreenshotContextPreferenceController"
-        settings:iconSpaceReserved="true"/>
-    <com.android.car.ui.preference.CarUiTwoActionIconPreference
-        android:fragment="com.android.car.settings.applications.assist.DefaultVoiceInputPickerFragment"
-        android:key="@string/pk_default_voice_input"
-        android:title="@string/voice_input_settings_title"
-        settings:controller="com.android.car.settings.applications.assist.DefaultVoiceInputPickerEntryPreferenceController"
-        settings:iconSpaceReserved="true"
-        settings:secondaryActionIcon="@drawable/ic_settings_gear"/>
-</PreferenceScreen>
diff --git a/res/xml/master_clear_confirm_fragment.xml b/res/xml/master_clear_confirm_fragment.xml
deleted file mode 100644
index e265b1b..0000000
--- a/res/xml/master_clear_confirm_fragment.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/master_clear_confirm_title"
-    android:key="@string/psk_master_clear_confirm">
-    <com.android.car.ui.preference.CarUiPreference
-        android:key="@string/pk_master_clear_confirm_desc"
-        android:selectable="false"
-        android:title="@string/master_clear_confirm_desc"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:singleLineTitle="false"
-        settings:showChevron="false"/>
-</PreferenceScreen>
diff --git a/res/xml/master_clear_fragment.xml b/res/xml/master_clear_fragment.xml
deleted file mode 100644
index e25fb4e..0000000
--- a/res/xml/master_clear_fragment.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 2019 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/master_clear_title"
-    android:key="@string/psk_master_clear">
-    <com.android.car.ui.preference.CarUiPreference
-        android:key="@string/pk_master_clear_desc"
-        android:selectable="false"
-        android:title="@string/master_clear_desc"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:singleLineTitle="false"
-        settings:showChevron="false"/>
-    <com.android.car.settings.common.LogicalPreferenceGroup
-        android:key="@string/pk_master_clear_account_list"
-        android:selectable="false"
-        android:title="@string/master_clear_accounts"
-        settings:controller="com.android.car.settings.system.MasterClearAccountsPreferenceController"/>
-    <Preference
-        android:key="@string/pk_master_clear_other_users_present"
-        android:selectable="false"
-        android:title="@string/master_clear_other_users_present"
-        settings:controller="com.android.car.settings.system.MasterClearOtherUsersPresentPreferenceController"
-        settings:singleLineTitle="false"/>
-    <CheckBoxPreference
-        android:defaultValue="true"
-        android:key="@string/pk_master_clear_reset_esim"
-        android:summary="@string/reset_esim_desc"
-        android:title="@string/reset_esim_title"
-        settings:controller="com.android.car.settings.system.MasterClearResetEsimPreferenceController"/>
-</PreferenceScreen>
diff --git a/res/xml/modify_system_settings_fragment.xml b/res/xml/modify_system_settings_fragment.xml
index 2b57956..ae4da92 100644
--- a/res/xml/modify_system_settings_fragment.xml
+++ b/res/xml/modify_system_settings_fragment.xml
@@ -20,6 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/modify_system_settings_title"
     android:key="@string/psk_modify_system_settings">
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_modify_system_settings_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_modify_system_settings_description"
         android:selectable="false"
diff --git a/res/xml/network_and_internet_fragment.xml b/res/xml/network_and_internet_fragment.xml
index 1f07753..f43b420 100644
--- a/res/xml/network_and_internet_fragment.xml
+++ b/res/xml/network_and_internet_fragment.xml
@@ -21,43 +21,57 @@
     android:title="@string/network_and_internet"
     android:key="@string/psk_network_and_internet">
     <com.android.car.ui.preference.CarUiTwoActionSwitchPreference
-        android:icon="@drawable/ic_settings_wifi"
-        android:key="@string/pk_wifi_settings_entry"
-        android:title="@string/wifi_settings"
-        settings:controller="com.android.car.settings.wifi.WifiEntryPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$WifiSettingsActivity"/>
-    </com.android.car.ui.preference.CarUiTwoActionSwitchPreference>
-    <Preference
+        android:fragment="com.android.car.settings.wifi.WifiTetherFragment"
         android:key="@string/pk_wifi_tether_settings_entry"
-        android:title="@string/tether_settings_title_all"
+        android:title="@string/hotspot_settings_title"
         android:icon="@drawable/ic_wifi_tethering"
         settings:controller="com.android.car.settings.wifi.WifiTetherPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$WifiTetherActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <Preference
         android:icon="@drawable/ic_settings_cellular"
         android:key="@string/pk_mobile_network_settings_entry"
         android:title="@string/mobile_network_settings"
         settings:controller="com.android.car.settings.network.MobileNetworkEntryPreferenceController"
-        settings:searchable="false">
-    </Preference>
+        settings:searchable="false"/>
     <Preference
+        android:fragment="com.android.car.settings.datausage.DataUsageFragment"
         android:icon="@drawable/ic_settings_data_usage"
         android:key="@string/pk_data_usage_settings_entry"
         android:title="@string/data_usage_settings"
         settings:controller="com.android.car.settings.datausage.DataUsageEntryPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$DataUsageActivity"/>
-    </Preference>
+        settings:searchable="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_wifi_entry_group"
+        settings:controller="com.android.car.settings.wifi.WifiEntryGroupPreferenceController">
+        <com.android.car.settings.common.DividerPreference/>
+        <com.android.car.settings.common.ClickableWhileDisabledSwitchPreference
+            android:key="@string/pk_wifi_entry_state_switch"
+            style="@style/ColoredSwitchPreferenceStyle"
+            android:title="@string/wifi_settings"
+            settings:controller="com.android.car.settings.wifi.WifiStateSwitchPreferenceController"
+            settings:searchable="false"/>
+        <com.android.car.settings.common.LogicalPreferenceGroup
+            android:key="@string/pk_limited_wifi_list"
+            settings:controller="com.android.car.settings.wifi.LimitedWifiEntryListPreferenceController"
+            settings:searchable="false"/>
+        <Preference
+            android:fragment="com.android.car.settings.wifi.WifiSettingsFragment"
+            android:key="@string/pk_wifi_settings_entry"
+            android:title="@string/network_and_internet_join_other_network_title"
+            settings:searchable="false"/>
+        <com.android.car.settings.common.DividerPreference/>
+        <Preference
+            android:fragment="com.android.car.settings.wifi.preferences.WifiPreferencesFragment"
+            android:key="@string/pk_wifi_preferences"
+            android:title="@string/wifi_preferences_title"
+            android:summary="@string/wifi_wakeup"
+            settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+            settings:searchable="false"/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_network_and_internet_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.wireless"/>
         </intent>
diff --git a/res/xml/notifications_fragment.xml b/res/xml/notifications_fragment.xml
new file mode 100644
index 0000000..5bd0814
--- /dev/null
+++ b/res/xml/notifications_fragment.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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/notifications_label"
+    android:key="@string/psk_notifications">
+    <PreferenceCategory
+        android:key="@string/pk_notifications_settings_recently_sent"
+        android:title="@string/notifications_recently_sent"
+        settings:controller="com.android.car.settings.notifications.RecentNotificationsAppsPreferenceController"/>
+    <PreferenceCategory
+        android:key="@string/pk_notifications_settings_all_apps"
+        android:title="@string/notifications_all_apps"
+        settings:controller="com.android.car.settings.notifications.NotificationsAppListPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/privacy_settings_fragment.xml b/res/xml/privacy_settings_fragment.xml
index d2f1c6f..3cb8848 100644
--- a/res/xml/privacy_settings_fragment.xml
+++ b/res/xml/privacy_settings_fragment.xml
@@ -21,34 +21,59 @@
     android:title="@string/privacy_settings_title"
     android:key="@string/psk_privacy_settings">
 
+    <!--  TODO(b/182409057): proper icon -->
     <Preference
+        android:key="@string/pk_privacy_work_policy"
+        android:title="@string/work_policy_privacy_settings"
+        android:summary="@string/work_policy_privacy_settings_summary"
+        android:icon="@drawable/privacy_app_permissions"
+        settings:controller="com.android.car.settings.enterprise.WorkPolicyInfoPreferenceController">
+    </Preference>
+
+    <com.android.car.ui.preference.CarUiTwoActionSwitchPreference
+        android:key="@string/pk_mute_mic_switch"
+        android:title="@string/mute_mic_title"
+        android:summary="@string/mute_mic_summary"
+        android:icon="@drawable/privacy_mic"
+        settings:controller="com.android.car.settings.privacy.MuteMicTogglePreferenceController">
+        <intent android:action="android.intent.action.MANAGE_PERMISSION_APPS">
+            <extra android:name="android.intent.extra.PERMISSION_NAME"
+                   android:value="android.permission-group.MICROPHONE"/>
+        </intent>
+    </com.android.car.ui.preference.CarUiTwoActionSwitchPreference>
+
+    <com.android.car.ui.preference.CarUiTwoActionSwitchPreference
+        android:fragment="com.android.car.settings.location.LocationSettingsFragment"
         android:key="@string/pk_location_settings_entry"
         android:title="@string/location_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$LocationSettingsActivity"/>
-    </Preference>
+        android:summary="@string/privacy_location_summary"
+        android:icon="@drawable/privacy_location"
+        settings:controller="com.android.car.settings.privacy.LocationTogglePreferenceController"/>
 
     <Preference
         android:key="@string/pk_privacy_manage_perms"
         android:title="@string/app_permissions"
         android:summary="@string/app_permissions_summary"
-        settings:controller="com.android.car.settings.applications.AppPermissionsEntryPreferenceController">
+        android:icon="@drawable/privacy_app_permissions"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
         <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
     </Preference>
 
+    <Preference
+        android:fragment="com.android.car.settings.privacy.VehicleDataFragment"
+        android:key="@string/pk_vehicle_data"
+        android:summary="@string/vehicle_data_summary"
+        android:title="@string/vehicle_data_title"
+        android:icon="@drawable/privacy_vehicle_data"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_privacy_extra_settings"
-        settings:controller="com.android.car.settings.privacy.PrivacyExtraPreferenceController">
-        <intent android:action="com.android.settings.action.IA_SETTINGS">
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.privacy"/>
         </intent>
     </com.android.car.settings.common.LogicalPreferenceGroup>
 
-    <Preference
-        android:key="terms"
-        android:title="@string/terms_title"
-        settings:controller="com.android.car.settings.system.legal.TermsPreferenceController"/>
-
 </PreferenceScreen>
diff --git a/res/xml/profile_details_fragment.xml b/res/xml/profile_details_fragment.xml
new file mode 100644
index 0000000..5cc0a76
--- /dev/null
+++ b/res/xml/profile_details_fragment.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:key="@string/psk_profile_details">
+    <com.android.car.settings.common.EntityHeaderPreference
+        android:key="@string/pk_profile_details_header"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.profiles.ProfileDetailsHeaderPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.ActionButtonsPreference
+        android:key="@string/pk_profile_details_action_buttons"
+        settings:controller="com.android.car.settings.profiles.ProfileDetailsActionButtonsPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_account_group"
+        settings:controller="com.android.car.settings.accounts.AccountGroupPreferenceController">
+        <PreferenceCategory
+            android:key="@string/pk_account_list"
+            android:title="@string/account_list_title"
+            settings:controller="com.android.car.settings.accounts.AccountListPreferenceController"
+            settings:searchable="false"/>
+        <com.android.car.ui.preference.CarUiPreference
+            android:key="@string/pk_account_settings_add"
+            android:title="@string/user_add_account_menu"
+            android:icon="@drawable/ic_add"
+            settings:controller="com.android.car.settings.accounts.AddAccountPreferenceController"
+            settings:showChevron="false"/>
+        <com.android.car.settings.common.DividerPreference/>
+        <SwitchPreference
+            android:key="@string/pk_account_auto_sync"
+            android:title="@string/account_auto_sync_title"
+            android:summary="@string/account_auto_sync_summary"
+            settings:controller="com.android.car.settings.accounts.AccountAutoSyncPreferenceController"/>
+    <com.android.car.settings.common.DividerPreference/>
+        <com.android.car.settings.common.LogicalPreferenceGroup
+            android:key="@string/pk_accounts_extra_settings"
+            settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+            <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+                <extra android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.accounts"/>
+            </intent>
+        </com.android.car.settings.common.LogicalPreferenceGroup>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_profile_details_delete"
+        android:title="@string/delete_this_profile_text"
+        settings:controller="com.android.car.settings.profiles.ProfileDetailsDeletePreferenceController"
+        settings:showChevron="false"/>
+</PreferenceScreen>
diff --git a/res/xml/profile_details_permissions_fragment.xml b/res/xml/profile_details_permissions_fragment.xml
new file mode 100644
index 0000000..2f50d93
--- /dev/null
+++ b/res/xml/profile_details_permissions_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:key="@string/psk_profile_details_permissions">
+    <com.android.car.settings.common.EntityHeaderPreference
+        android:key="@string/pk_profile_details_permissions_header"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.profiles.ProfileDetailsHeaderPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.ActionButtonsPreference
+        android:key="@string/pk_profile_details_permissions_action_buttons"
+        settings:controller="com.android.car.settings.profiles.ProfileDetailsActionButtonsPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_profile_permissions"
+        settings:controller="com.android.car.settings.profiles.PermissionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/profiles_list_fragment.xml b/res/xml/profiles_list_fragment.xml
new file mode 100644
index 0000000..ff9d281
--- /dev/null
+++ b/res/xml/profiles_list_fragment.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/manage_other_profiles_button_text"
+    android:key="@string/psk_profiles_list">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_profiles_list"
+        settings:controller="com.android.car.settings.profiles.ProfilesListPreferenceController"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:key="@string/pk_add_profile"
+        settings:controller="com.android.car.settings.profiles.AddProfilePreferenceController"
+        settings:showChevron="false"/>
+</PreferenceScreen>
diff --git a/res/xml/reset_options_fragment.xml b/res/xml/reset_options_fragment.xml
index 3692168..a769b02 100644
--- a/res/xml/reset_options_fragment.xml
+++ b/res/xml/reset_options_fragment.xml
@@ -30,9 +30,10 @@
         android:key="@string/pk_reset_app_pref"
         android:title="@string/reset_app_pref_title"
         settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
-    <Preference
-        android:fragment="com.android.car.settings.system.MasterClearFragment"
-        android:key="@string/pk_master_clear"
-        android:title="@string/master_clear_title"
-        settings:controller="com.android.car.settings.system.MasterClearEntryPreferenceController"/>
+    <com.android.car.settings.common.ClickableWhileDisabledPreference
+        android:fragment="com.android.car.settings.system.FactoryResetFragment"
+        android:key="@string/pk_factory_reset"
+        android:title="@string/factory_reset_title"
+        android:summary="@string/factory_reset_summary"
+        settings:controller="com.android.car.settings.system.FactoryResetEntryPreferenceController"/>
 </PreferenceScreen>
diff --git a/res/xml/security_settings_fragment.xml b/res/xml/security_settings_fragment.xml
index b63175e..032a1a5 100644
--- a/res/xml/security_settings_fragment.xml
+++ b/res/xml/security_settings_fragment.xml
@@ -23,25 +23,22 @@
     <Preference
         android:icon="@drawable/ic_lock"
         android:key="@string/pk_choose_lock_type"
-        android:title="@string/lock_settings_picker_title"
-        settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController">
-        <intent
-            android:targetClass="com.android.car.settings.security.SettingsScreenLockActivity"
-            android:targetPackage="com.android.car.settings"/>
-    </Preference>
-    <Preference
+        android:title="@string/security_profile_lock_title"
+        settings:controller="com.android.car.settings.security.ChooseLockTypePreferenceController"/>
+    <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_credentials_reset"
         android:summary="@string/credentials_reset_summary"
         android:title="@string/credentials_reset"
-        settings:controller="com.android.car.settings.security.CredentialsResetPreferenceController">
+        settings:controller="com.android.car.settings.security.CredentialsResetPreferenceController"
+        settings:showChevron="false">
         <intent
             android:action="com.android.credentials.RESET"
             android:targetPackage="com.android.car.settings"/>
-    </Preference>
+    </com.android.car.ui.preference.CarUiPreference>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_system_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.security"/>
         </intent>
diff --git a/res/xml/sound_settings_fragment.xml b/res/xml/sound_settings_fragment.xml
index 5337788..6ecb5e2 100644
--- a/res/xml/sound_settings_fragment.xml
+++ b/res/xml/sound_settings_fragment.xml
@@ -41,7 +41,7 @@
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_sounds_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.sound"/>
         </intent>
diff --git a/res/xml/special_access_fragment.xml b/res/xml/special_access_fragment.xml
index feb4bb2..e0119c8 100644
--- a/res/xml/special_access_fragment.xml
+++ b/res/xml/special_access_fragment.xml
@@ -21,40 +21,30 @@
     android:title="@string/special_access"
     android:key="@string/psk_special_access">
     <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment"
         android:key="@string/pk_modify_system_settings_entry"
         android:title="@string/modify_system_settings_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$ModifySystemSettingsActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.NotificationAccessFragment"
         android:key="@string/pk_notification_access_entry"
         android:title="@string/notification_access_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$NotificationAccessActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.PremiumSmsAccessFragment"
         android:key="@string/pk_premium_sms_access_entry"
         android:title="@string/premium_sms_access_title"
-        settings:controller="com.android.car.settings.applications.specialaccess.PremiumSmsAccessEntryPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$PremiumSmsAccessActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.applications.specialaccess.PremiumSmsAccessEntryPreferenceController"/>
     <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.UsageAccessFragment"
         android:key="@string/pk_usage_access_entry"
         android:title="@string/usage_access_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$UsageAccessActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.WifiControlFragment"
         android:key="@string/pk_wifi_control_entry"
         android:title="@string/wifi_control_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$WifiControlActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
     <Preference
         android:key="@string/pk_more_special_access"
         android:title="@string/more_special_access_title"
diff --git a/res/xml/storage_media_category_detail_fragment.xml b/res/xml/storage_media_category_detail_fragment.xml
index a22e5bd..c125014 100644
--- a/res/xml/storage_media_category_detail_fragment.xml
+++ b/res/xml/storage_media_category_detail_fragment.xml
@@ -20,7 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/storage_music_audio"
     android:key="@string/psk_storage_media_category_detail">
-
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_storage_music_audio_details_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_storage_music_audio_details"
         settings:controller="com.android.car.settings.storage.StorageMediaCategoryDetailPreferenceController"/>
diff --git a/res/xml/storage_other_category_detail_fragment.xml b/res/xml/storage_other_category_detail_fragment.xml
index 6ad40ae..9d27cd8 100644
--- a/res/xml/storage_other_category_detail_fragment.xml
+++ b/res/xml/storage_other_category_detail_fragment.xml
@@ -20,7 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/storage_other_apps"
     android:key="@string/psk_storage_other_category_detail">
-
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_storage_other_apps_details_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_storage_other_apps_details"
         settings:controller="com.android.car.settings.storage.StorageApplicationListPreferenceController"/>
diff --git a/res/xml/system_settings_fragment.xml b/res/xml/system_settings_fragment.xml
index 949a640..932453b 100644
--- a/res/xml/system_settings_fragment.xml
+++ b/res/xml/system_settings_fragment.xml
@@ -21,15 +21,6 @@
     android:title="@string/system_setting_title"
     android:key="@string/psk_system_settings">
     <Preference
-        android:key="@string/pk_languages_and_input_settings"
-        android:icon="@drawable/ic_language"
-        android:title="@string/languages_and_input_settings"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$LanguagesAndInputActivity"/>
-    </Preference>
-    <Preference
         android:icon="@drawable/ic_system_update"
         android:key="@string/pk_system_update_settings"
         android:title="@string/system_update_settings_title"
@@ -37,33 +28,52 @@
         <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS"/>
     </Preference>
     <Preference
+        android:fragment="com.android.car.settings.language.LanguagesAndInputFragment"
+        android:key="@string/pk_languages_and_input_settings"
+        android:icon="@drawable/ic_language"
+        android:title="@string/languages_and_input_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:searchable="false"/>
+    <Preference
+        android:fragment="com.android.car.settings.units.UnitsSettingsFragment"
+        android:icon="@drawable/ic_units"
+        android:key="@string/pk_units_settings_entry"
+        android:title="@string/units_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.DatetimeSettingsFragment"
+        android:key="@string/pk_date_time_settings_entry"
+        android:icon="@drawable/ic_date_time"
+        android:title="@string/date_and_time_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.storage.StorageSettingsFragment"
+        android:icon="@drawable/ic_storage"
+        android:key="@string/pk_storage_settings_entry"
+        android:title="@string/storage_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.AboutSettingsFragment"
         android:icon="@drawable/ic_settings_about"
         android:key="@string/pk_about_settings_entry"
         android:title="@string/about_settings"
         settings:controller="com.android.car.settings.system.AboutSettingsEntryPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$AboutSettingsActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <Preference
+        android:fragment="com.android.car.settings.system.LegalInformationFragment"
         android:icon="@drawable/ic_settings_about"
         android:key="@string/pk_legal_information_entry"
         android:title="@string/legal_information"
         settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$LegalInformationActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <Preference
+        android:fragment="com.android.car.settings.system.ResetOptionsFragment"
         android:icon="@drawable/ic_restore"
         android:key="@string/pk_reset_options_entry"
         android:summary="@string/reset_options_summary"
         android:title="@string/reset_options_title"
         settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$ResetOptionsActivity"/>
-    </Preference>
+        settings:searchable="false"/>
     <Preference
         android:icon="@drawable/ic_settings_development"
         android:key="@string/pk_developer_options_entry"
@@ -74,7 +84,7 @@
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_system_extra_settings"
         settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
-        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+        <intent>
             <extra android:name="com.android.settings.category"
                    android:value="com.android.settings.category.ia.system"/>
         </intent>
diff --git a/res/xml/usage_access_fragment.xml b/res/xml/usage_access_fragment.xml
index d75d78c..144413d 100644
--- a/res/xml/usage_access_fragment.xml
+++ b/res/xml/usage_access_fragment.xml
@@ -20,6 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/usage_access_title"
     android:key="@string/psk_usage_access">
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_usage_access_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <Preference
         android:key="@string/pk_usage_access_description"
         android:selectable="false"
diff --git a/res/xml/user_details_fragment.xml b/res/xml/user_details_fragment.xml
deleted file mode 100644
index d9e8433..0000000
--- a/res/xml/user_details_fragment.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res-auto"
-                  android:key="@string/psk_user_details">
-    <com.android.car.ui.preference.CarUiTwoActionIconPreference
-        android:key="@string/pk_edit_user_name_entry"
-        android:selectable="false"
-        settings:controller="com.android.car.settings.users.EditUserNameEntryPreferenceController"
-        settings:secondaryActionIcon="@drawable/ic_edit"/>
-</PreferenceScreen>
diff --git a/res/xml/user_details_permissions_fragment.xml b/res/xml/user_details_permissions_fragment.xml
deleted file mode 100644
index 360d4b1..0000000
--- a/res/xml/user_details_permissions_fragment.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res-auto"
-                  android:key="@string/psk_user_details_permissions">
-    <com.android.car.ui.preference.CarUiTwoActionTextPreference
-        android:key="@string/pk_make_user_admin"
-        android:selectable="false"
-        android:title="@string/grant_admin_permissions_title"
-        settings:controller="com.android.car.settings.users.MakeAdminPreferenceController"
-        settings:secondaryActionStyle="borderless"
-        settings:secondaryActionText="@string/grant_admin_permissions_button_text"/>
-    <com.android.car.settings.common.LogicalPreferenceGroup
-        android:key="@string/pk_user_permissions"
-        settings:controller="com.android.car.settings.users.PermissionsPreferenceController"/>
-</PreferenceScreen>
diff --git a/res/xml/users_list_fragment.xml b/res/xml/users_list_fragment.xml
deleted file mode 100644
index 392162a..0000000
--- a/res/xml/users_list_fragment.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright 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.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/users_list_title"
-    android:key="@string/psk_users_list">
-    <com.android.car.settings.common.LogicalPreferenceGroup
-        android:key="@string/pk_users_list"
-        settings:controller="com.android.car.settings.users.UsersListPreferenceController"/>
-</PreferenceScreen>
diff --git a/res/xml/vehicle_data_fragment.xml b/res/xml/vehicle_data_fragment.xml
new file mode 100644
index 0000000..0188021
--- /dev/null
+++ b/res/xml/vehicle_data_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2021 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/privacy_vehicle_data_title"
+    android:key="@string/psk_vehicle_data">
+
+    <com.android.car.settings.common.ClickableWhileDisabledPreference
+        android:key="@string/pk_vehicle_data_delete_profile"
+        android:title="@string/vehicle_data_delete_user_title"
+        android:summary="@string/vehicle_data_delete_user_summary"
+        settings:controller="com.android.car.settings.privacy.DeleteUserPreferenceController"/>
+
+    <com.android.car.settings.common.ClickableWhileDisabledPreference
+        android:fragment="com.android.car.settings.system.FactoryResetFragment"
+        android:key="@string/pk_factory_reset"
+        android:title="@string/factory_reset_title"
+        android:summary="@string/factory_reset_summary"
+        settings:controller="com.android.car.settings.system.FactoryResetEntryPreferenceController"/>
+
+</PreferenceScreen>
diff --git a/res/xml/wifi_control_fragment.xml b/res/xml/wifi_control_fragment.xml
index 8ebfcc8..c27f797 100644
--- a/res/xml/wifi_control_fragment.xml
+++ b/res/xml/wifi_control_fragment.xml
@@ -20,6 +20,13 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/wifi_control_title"
     android:key="@string/psk_wifi_control">
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_wifi_control_hide_system_switch"
+        android:title="@string/hide_system_apps"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.applications.HideSystemSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <Preference
         android:key="@string/pk_wifi_control_description"
         android:selectable="false"
diff --git a/res/xml/wifi_detail_fragment.xml b/res/xml/wifi_detail_fragment.xml
index a49fe01..465773b 100644
--- a/res/xml/wifi_detail_fragment.xml
+++ b/res/xml/wifi_detail_fragment.xml
@@ -18,8 +18,16 @@
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/wifi_settings"
+    android:title="@string/wifi_network_detail"
     android:key="@string/psk_wifi_detail">
+    <com.android.car.settings.common.EntityHeaderPreference
+        android:key="@string/pk_wifi_details_header"
+        settings:controller="com.android.car.settings.wifi.details.WifiDetailsHeaderPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.ActionButtonsPreference
+        android:key="@string/pk_wifi_details_action_buttons"
+        settings:controller="com.android.car.settings.wifi.details.WifiDetailsActionButtonsPreferenceController"
+        settings:searchable="false"/>
     <!-- General Details Category -->
     <com.android.car.settings.common.LogicalPreferenceGroup>
         <com.android.car.settings.wifi.details.WifiDetailsPreference
@@ -78,7 +86,7 @@
     <PreferenceCategory
         android:selectable="false"
         android:title="@string/wifi_details_ipv6_address_header">
-        <Preference
+        <com.android.car.ui.preference.CarUiPreference
             android:key="@string/pk_wifi_ipv6"
             android:selectable="false"
             settings:controller="com.android.car.settings.wifi.details.WifiIpv6AddressPreferenceController"
diff --git a/res/xml/wifi_list_fragment.xml b/res/xml/wifi_list_fragment.xml
index ab346b6..f4ae249 100644
--- a/res/xml/wifi_list_fragment.xml
+++ b/res/xml/wifi_list_fragment.xml
@@ -18,27 +18,25 @@
                   xmlns:settings="http://schemas.android.com/apk/res-auto"
                   android:title="@string/wifi_settings"
                   android:key="@string/psk_wifi_list">
+    <com.android.car.settings.common.ClickableWhileDisabledSwitchPreference
+        android:key="@string/pk_wifi_state_switch"
+        android:title="@string/wifi_settings"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.wifi.WifiStateSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.ui.preference.CarUiPreference
         android:key="@string/pk_wifi_status"
         settings:controller="com.android.car.settings.wifi.WifiStatusPreferenceController"
         settings:showChevron="false"/>
     <com.android.car.settings.common.LogicalPreferenceGroup
         android:key="@string/pk_wifi_list"
-        settings:controller="com.android.car.settings.wifi.AccessPointListPreferenceController"/>
-    <Preference
+        settings:controller="com.android.car.settings.wifi.WifiEntryListPreferenceController"/>
+    <com.android.car.ui.preference.CarUiPreference
+        android:fragment="com.android.car.settings.wifi.AddWifiFragment"
         android:icon="@drawable/ic_add"
         android:key="@string/pk_add_wifi"
         android:title="@string/wifi_setup_add_network"
-        settings:controller="com.android.car.settings.wifi.AddWifiPreferenceController">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$AddWifiActivity"/>
-    </Preference>
-    <Preference
-        android:key="@string/pk_wifi_preferences"
-        android:title="@string/wifi_preferences_title"
-        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
-        settings:searchable="false">
-        <intent android:targetPackage="com.android.car.settings"
-                android:targetClass="com.android.car.settings.common.CarSettingActivities$WifiPreferencesActivity"/>
-    </Preference>
+        settings:controller="com.android.car.settings.wifi.AddWifiPreferenceController"
+        settings:showChevron="false"/>
 </PreferenceScreen>
diff --git a/res/xml/wifi_tether_fragment.xml b/res/xml/wifi_tether_fragment.xml
index c3f4d03..98e8721 100644
--- a/res/xml/wifi_tether_fragment.xml
+++ b/res/xml/wifi_tether_fragment.xml
@@ -18,10 +18,17 @@
                   xmlns:settings="http://schemas.android.com/apk/res-auto"
                   android:title="@string/tether_settings_title_all"
                   android:key="@string/psk_wifi_tether">
+    <com.android.car.settings.common.ColoredSwitchPreference
+        android:key="@string/pk_wifi_tether_state_switch"
+        style="@style/ColoredSwitchPreferenceStyle"
+        settings:controller="com.android.car.settings.wifi.WifiTetherStateSwitchPreferenceController"
+        settings:searchable="false"/>
+    <com.android.car.settings.common.DividerPreference/>
     <com.android.car.settings.common.ValidatedEditTextPreference
         android:key="@string/pk_wifi_tether_name"
         android:title="@string/wifi_hotspot_name_title"
-        settings:controller="com.android.car.settings.wifi.WifiTetherNamePreferenceController"/>
+        settings:controller="com.android.car.settings.wifi.WifiTetherNamePreferenceController"
+        settings:showChevron="false"/>
     <ListPreference
         android:key="@string/pk_wifi_tether_security"
         android:title="@string/wifi_hotspot_security_title"
@@ -32,7 +39,8 @@
         android:key="@string/pk_wifi_tether_password"
         android:title="@string/wifi_hotspot_password_title"
         android:persistent="false"
-        settings:controller="com.android.car.settings.wifi.WifiTetherPasswordPreferenceController"/>
+        settings:controller="com.android.car.settings.wifi.WifiTetherPasswordPreferenceController"
+        settings:showChevron="false"/>
     <SwitchPreference
         android:key="@string/pk_wifi_tether_auto_off"
         android:title="@string/wifi_hotspot_auto_off_title"
diff --git a/src/com/android/car/settings/FallbackHome.java b/src/com/android/car/settings/FallbackHome.java
index 559bb18..521315e 100644
--- a/src/com/android/car/settings/FallbackHome.java
+++ b/src/com/android/car/settings/FallbackHome.java
@@ -19,7 +19,6 @@
 import static android.car.settings.CarSettings.Global.ENABLE_USER_SWITCH_DEVELOPER_MESSAGE;
 
 import android.app.Activity;
-import android.car.userlib.UserHelper;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -30,7 +29,6 @@
 import android.os.Message;
 import android.os.PowerManager;
 import android.os.SystemClock;
-import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
 import android.view.Gravity;
@@ -41,6 +39,7 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.android.car.internal.common.UserHelperLite;
 import com.android.car.settings.common.Logger;
 
 import java.util.Objects;
@@ -157,18 +156,12 @@
                     .addCategory(Intent.CATEGORY_HOME);
             final ResolveInfo homeInfo = getPackageManager().resolveActivity(homeIntent, 0);
             if (Objects.equals(getPackageName(), homeInfo.activityInfo.packageName)) {
-                if (UserManager.isSplitSystemUser()
-                        && UserHandle.myUserId() == UserHandle.USER_SYSTEM) {
-                    // This avoids the situation where the system user has no home activity after
-                    // SUW and this activity continues to throw out warnings. See b/28870689.
-                    return;
-                }
                 LOG.d("User " + getUserId() + " unlocked but no home; let's hope someone enables "
                         + "one soon?");
                 mHandler.sendEmptyMessageDelayed(0, 500);
             } else {
                 String homePackageName = homeInfo.activityInfo.packageName;
-                if (UserHelper.isHeadlessSystemUser(getUserId())) {
+                if (UserHelperLite.isHeadlessSystemUser(getUserId())) {
                     // This is the transient state in HeadlessSystemMode to boot for user 10+.
                     LOG.d("User 0 unlocked, but will not launch real home: " + homePackageName);
                     return;
diff --git a/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceController.java b/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceController.java
new file mode 100644
index 0000000..6d2775b
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceController.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+/** Base controller for preferences that shows the details of an account. */
+public abstract class AccountDetailsBasePreferenceController
+        extends PreferenceController<CarUiTwoActionIconPreference> {
+    private static final Logger LOG = new Logger(AccountDetailsBasePreferenceController.class);
+
+    private Account mAccount;
+    private UserHandle mUserHandle;
+
+    public AccountDetailsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the account that the details are shown for. */
+    public void setAccount(Account account) {
+        mAccount = account;
+    }
+
+    /** Returns the account the details are shown for. */
+    public Account getAccount() {
+        return mAccount;
+    }
+
+    /** Sets the UserHandle used by the controller. */
+    public void setUserHandle(UserHandle userHandle) {
+        mUserHandle = userHandle;
+    }
+
+    /** Returns the UserHandle used by the controller. */
+    public UserHandle getUserHandle() {
+        return mUserHandle;
+    }
+
+    @Override
+    protected Class<CarUiTwoActionIconPreference> getPreferenceType() {
+        return CarUiTwoActionIconPreference.class;
+    }
+
+    /**
+     * Verifies that the controller was properly initialized with
+     * {@link #setAccount(Account)} and {@link #setUserHandle(UserHandle)}.
+     *
+     * @throws IllegalStateException if the account or user handle are {@code null}
+     */
+    @Override
+    @CallSuper
+    protected void checkInitialized() {
+        LOG.v("checkInitialized");
+        if (mAccount == null) {
+            throw new IllegalStateException(
+                    "AccountDetailsBasePreferenceController must be initialized by calling "
+                            + "setAccount(Account)");
+        }
+        if (mUserHandle == null) {
+            throw new IllegalStateException(
+                    "AccountDetailsBasePreferenceController must be initialized by calling "
+                            + "setUserHandle(UserHandle)");
+        }
+    }
+
+    @Override
+    @CallSuper
+    protected void updateState(CarUiTwoActionIconPreference preference) {
+        preference.setTitle(mAccount.name);
+        // Get the icon corresponding to the account's type and set it.
+        AuthenticatorHelper helper = getAuthenticatorHelper();
+        preference.setIcon(helper.getDrawableForType(getContext(), mAccount.type));
+    }
+
+    @VisibleForTesting
+    AuthenticatorHelper getAuthenticatorHelper() {
+        return new AuthenticatorHelper(getContext(), mUserHandle, null);
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountDetailsFragment.java b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
index 5702810..b117995 100644
--- a/src/com/android/car/settings/accounts/AccountDetailsFragment.java
+++ b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
@@ -17,36 +17,21 @@
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AuthenticatorException;
-import android.accounts.OperationCanceledException;
-import android.app.Activity;
-import android.app.Dialog;
 import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
 import android.content.pm.UserInfo;
 import android.os.Bundle;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.annotation.XmlRes;
-import androidx.fragment.app.Fragment;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.users.UserHelper;
-import com.android.car.ui.AlertDialogBuilder;
-import com.android.car.ui.preference.CarUiDialogFragment;
-import com.android.car.ui.toolbar.MenuItem;
+import com.android.car.ui.toolbar.ToolbarController;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 
-import java.io.IOException;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * Shows account details, and delete account option.
@@ -60,7 +45,6 @@
     private Account mAccount;
     private UserInfo mUserInfo;
     private AuthenticatorHelper mAuthenticatorHelper;
-    private MenuItem mRemoveButton;
 
     /**
      * Creates a new AccountDetailsFragment.
@@ -86,11 +70,6 @@
     }
 
     @Override
-    protected List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mRemoveButton);
-    }
-
-    @Override
     public void onAttach(Context context) {
         super.onAttach(context);
 
@@ -111,25 +90,11 @@
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        boolean canModifyAccount = UserHelper.getInstance(getContext())
-                .canCurrentProcessModifyAccounts();
-
-        mRemoveButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.remove_button)
-                .setOnClickListener(i -> onRemoveAccountClicked())
-                .setVisible(canModifyAccount)
-                .build();
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
 
         // Set the fragment's title
-        getToolbar().setTitle(getArguments().getCharSequence(EXTRA_ACCOUNT_LABEL));
+        toolbar.setTitle(getArguments().getCharSequence(EXTRA_ACCOUNT_LABEL));
     }
 
     @Override
@@ -167,83 +132,4 @@
 
         return Arrays.asList(accounts).contains(mAccount);
     }
-
-    private void onRemoveAccountClicked() {
-        ConfirmRemoveAccountDialogFragment.show(this, mAccount, mUserInfo.getUserHandle());
-    }
-
-    /**
-     * Dialog to confirm with user about account removal
-     */
-    public static class ConfirmRemoveAccountDialogFragment extends CarUiDialogFragment {
-        private static final String KEY_ACCOUNT = "account";
-        private static final String DIALOG_TAG = "confirmRemoveAccount";
-        private static final Logger LOG = new Logger(ConfirmRemoveAccountDialogFragment.class);
-        private final AccountManagerCallback<Bundle> mCallback =
-                future -> {
-                    // If already out of this screen, don't proceed.
-                    if (!getTargetFragment().isResumed()) {
-                        return;
-                    }
-
-                    boolean success = false;
-                    try {
-                        success =
-                                future.getResult().getBoolean(
-                                        AccountManager.KEY_BOOLEAN_RESULT);
-                    } catch (OperationCanceledException | IOException | AuthenticatorException e) {
-                        LOG.v("removeAccount error: " + e);
-                    }
-                    final Activity activity = getTargetFragment().getActivity();
-                    if (!success && activity != null && !activity.isFinishing()) {
-                        ErrorDialog.show(getTargetFragment(),
-                                R.string.remove_account_error_title);
-                    } else {
-                        getTargetFragment().getFragmentManager().popBackStack();
-                    }
-                };
-        private Account mAccount;
-        private UserHandle mUserHandle;
-
-        public static void show(
-                Fragment parent, Account account, UserHandle userHandle) {
-            final ConfirmRemoveAccountDialogFragment dialog =
-                    new ConfirmRemoveAccountDialogFragment();
-            Bundle bundle = new Bundle();
-            bundle.putParcelable(KEY_ACCOUNT, account);
-            bundle.putParcelable(Intent.EXTRA_USER, userHandle);
-            dialog.setArguments(bundle);
-            dialog.setTargetFragment(parent, 0);
-            dialog.show(parent.getFragmentManager(), DIALOG_TAG);
-        }
-
-        @Override
-        public void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            final Bundle arguments = getArguments();
-            mAccount = arguments.getParcelable(KEY_ACCOUNT);
-            mUserHandle = arguments.getParcelable(Intent.EXTRA_USER);
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            return new AlertDialogBuilder(getContext())
-                    .setTitle(R.string.really_remove_account_title)
-                    .setMessage(R.string.really_remove_account_message)
-                    .setNegativeButton(android.R.string.cancel, null)
-                    .setPositiveButton(R.string.remove_account_title, this)
-                    .create();
-        }
-
-        @Override
-        public void onClick(DialogInterface dialog, int which) {
-            Activity activity = getTargetFragment().getActivity();
-            AccountManager.get(activity).removeAccountAsUser(
-                    mAccount, activity, mCallback, null, mUserHandle);
-            dialog.dismiss();
-        }
-
-        @Override
-        public void onDialogClosed(boolean positiveResult) {}
-    }
 }
diff --git a/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java b/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java
index c47efba..22542cf 100644
--- a/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java
+++ b/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java
@@ -16,84 +16,142 @@
 
 package com.android.car.settings.accounts;
 
-import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerCallback;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.os.UserHandle;
+import android.content.Intent;
+import android.os.Bundle;
 
 import androidx.annotation.CallSuper;
-import androidx.preference.Preference;
+import androidx.annotation.VisibleForTesting;
 
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-import com.android.settingslib.accounts.AuthenticatorHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 
-/** Controller for the preference that shows the details of an account. */
-public class AccountDetailsPreferenceController extends PreferenceController<Preference> {
+import java.io.IOException;
+
+/**
+ * Controller for the preference that shows the details of an account. It also handles a secondary
+ * button for account removal.
+ */
+public class AccountDetailsPreferenceController extends AccountDetailsBasePreferenceController
+        implements ActivityResultCallback {
     private static final Logger LOG = new Logger(AccountDetailsPreferenceController.class);
+    private static final int REMOVE_ACCOUNT_REQUEST = 101;
 
-    private Account mAccount;
-    private UserHandle mUserHandle;
+    private AccountManagerCallback<Bundle> mCallback =
+            future -> {
+                // If already out of this screen, don't proceed.
+                if (!isStarted()) {
+                    return;
+                }
+
+                boolean done = true;
+                boolean success = false;
+                try {
+                    Bundle result = future.getResult();
+                    Intent removeIntent = result.getParcelable(AccountManager.KEY_INTENT);
+                    if (removeIntent != null) {
+                        done = false;
+                        getFragmentController().startActivityForResult(removeIntent,
+                                REMOVE_ACCOUNT_REQUEST, this);
+                    } else {
+                        success = future.getResult().getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
+                    }
+                } catch (OperationCanceledException | IOException | AuthenticatorException e) {
+                    LOG.v("removeAccount error: " + e);
+                }
+                if (done) {
+                    if (!success) {
+                        showErrorDialog();
+                    } else {
+                        getFragmentController().goBack();
+                    }
+                }
+            };
+
+    private ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        AccountManager.get(getContext()).removeAccountAsUser(getAccount(), /* activity= */ null,
+                mCallback, null, getUserHandle());
+        ConfirmationDialogFragment dialog =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+        if (dialog != null) {
+            dialog.dismiss();
+        }
+    };
 
     public AccountDetailsPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
     }
 
-    /** Sets the account that the details are shown for. */
-    public void setAccount(Account account) {
-        mAccount = account;
-    }
-
-    /** Returns the account the details are shown for. */
-    public Account getAccount() {
-        return mAccount;
-    }
-
-    /** Sets the UserHandle used by the controller. */
-    public void setUserHandle(UserHandle userHandle) {
-        mUserHandle = userHandle;
-    }
-
-    /** Returns the UserHandle used by the controller. */
-    public UserHandle getUserHandle() {
-        return mUserHandle;
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    /**
-     * Verifies that the controller was properly initialized with
-     * {@link #setAccount(Account)} and {@link #setUserHandle(UserHandle)}.
-     *
-     * @throws IllegalStateException if the account or user handle are {@code null}
-     */
     @Override
     @CallSuper
-    protected void checkInitialized() {
-        LOG.v("checkInitialized");
-        if (mAccount == null) {
-            throw new IllegalStateException(
-                    "AccountDetailsPreferenceController must be initialized by calling "
-                            + "setAccount(Account)");
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        ConfirmationDialogFragment dialog =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+        ConfirmationDialogFragment.resetListeners(
+                dialog,
+                mConfirmListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+
+        getPreference().setSecondaryActionVisible(getProfileHelper()
+                .canCurrentProcessModifyAccounts());
+        getPreference().setOnSecondaryActionClickListener(this::onRemoveAccountClicked);
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, Intent data) {
+        if (!isStarted()) {
+            return;
         }
-        if (mUserHandle == null) {
-            throw new IllegalStateException(
-                    "AccountDetailsPreferenceController must be initialized by calling "
-                            + "setUserHandle(UserHandle)");
+        if (requestCode == REMOVE_ACCOUNT_REQUEST) {
+            // Activity result code may not adequately reflect the account removal status, so
+            // KEY_BOOLEAN_RESULT is used here instead. If the intent does not have this value
+            // included, a no-op will be performed and the account update listener in
+            // {@link AccountDetailsFragment} will still handle the back navigation upon removal.
+            if (data != null && data.hasExtra(AccountManager.KEY_BOOLEAN_RESULT)) {
+                boolean success = data.getBooleanExtra(AccountManager.KEY_BOOLEAN_RESULT, false);
+                if (success) {
+                    getFragmentController().goBack();
+                } else {
+                    showErrorDialog();
+                }
+            }
         }
     }
 
-    @Override
-    @CallSuper
-    protected void updateState(Preference preference) {
-        preference.setTitle(mAccount.name);
-        // Get the icon corresponding to the account's type and set it.
-        AuthenticatorHelper helper = new AuthenticatorHelper(getContext(), mUserHandle, null);
-        preference.setIcon(helper.getDrawableForType(getContext(), mAccount.type));
+    private void onRemoveAccountClicked() {
+        ConfirmationDialogFragment dialog =
+                new ConfirmationDialogFragment.Builder(getContext())
+                        .setTitle(R.string.really_remove_account_title)
+                        .setMessage(R.string.really_remove_account_message)
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .setPositiveButton(R.string.remove_account_title, mConfirmListener)
+                        .build();
+
+        getFragmentController().showDialog(dialog, ConfirmationDialogFragment.TAG);
+    }
+
+    private void showErrorDialog() {
+        getFragmentController().showDialog(
+                ErrorDialog.newInstance(R.string.remove_account_error_title), /* tag= */ null);
+    }
+
+    @VisibleForTesting
+    ProfileHelper getProfileHelper() {
+        return ProfileHelper.getInstance(getContext());
     }
 }
diff --git a/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java b/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java
index 0def505..caeb144 100644
--- a/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java
+++ b/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java
@@ -24,10 +24,11 @@
 import android.content.SyncStatusInfo;
 import android.content.SyncStatusObserver;
 
-import androidx.preference.Preference;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
 import com.android.settingslib.utils.ThreadUtils;
 
 import java.util.List;
@@ -35,17 +36,16 @@
 
 /**
  * Controller for the preference that shows information about an account, including info about
- * failures.
+ * failures. It also handles a secondary button for account syncing.
  */
 public class AccountDetailsWithSyncStatusPreferenceController extends
-        AccountDetailsPreferenceController {
-    private boolean mIsStarted = false;
+        AccountDetailsBasePreferenceController {
     private Object mStatusChangeListenerHandle;
     private SyncStatusObserver mSyncStatusObserver =
             which -> ThreadUtils.postOnMainThread(() -> {
                 // The observer call may occur even if the fragment hasn't been started, so
                 // only force an update if the fragment hasn't been stopped.
-                if (mIsStarted) {
+                if (isStarted()) {
                     refreshUi();
                 }
             });
@@ -55,13 +55,11 @@
         super(context, preferenceKey, fragmentController, uxRestrictions);
     }
 
-
     /**
      * Registers the account update and sync status change callbacks.
      */
     @Override
     protected void onStartInternal() {
-        mIsStarted = true;
         mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
                 ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
                         | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
@@ -73,25 +71,25 @@
      */
     @Override
     protected void onStopInternal() {
-        mIsStarted = false;
         if (mStatusChangeListenerHandle != null) {
             ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
         }
     }
 
     @Override
-    protected void updateState(Preference preference) {
+    protected void updateState(CarUiTwoActionIconPreference preference) {
         super.updateState(preference);
         if (isSyncFailing()) {
             preference.setSummary(R.string.sync_is_failing);
         } else {
             preference.setSummary("");
         }
+        updateSyncButton();
     }
 
     private boolean isSyncFailing() {
         int userId = getUserHandle().getIdentifier();
-        List<SyncInfo> currentSyncs = ContentResolver.getCurrentSyncsAsUser(userId);
+        List<SyncInfo> currentSyncs = getCurrentSyncs(userId);
         boolean syncIsFailing = false;
 
         Set<SyncAdapterType> syncAdapters = AccountSyncHelper.getVisibleSyncAdaptersForAccount(
@@ -118,4 +116,53 @@
 
         return syncIsFailing;
     }
+
+    private void updateSyncButton() {
+        // Set the button to either request or cancel sync, depending on the current state
+        boolean hasActiveSyncs = !getCurrentSyncs(
+                getUserHandle().getIdentifier()).isEmpty();
+
+        // If there are active syncs, clicking the button with cancel them. Otherwise, clicking the
+        // button will start them.
+        getPreference().setSecondaryActionIcon(
+                hasActiveSyncs ? R.drawable.ic_sync_cancel : R.drawable.ic_sync);
+        getPreference().setOnSecondaryActionClickListener(hasActiveSyncs
+                ? this::cancelSyncForEnabledProviders
+                : this::requestSyncForEnabledProviders);
+    }
+
+    private void requestSyncForEnabledProviders() {
+        int userId = getUserHandle().getIdentifier();
+
+        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(
+                getAccount(), getUserHandle());
+        for (SyncAdapterType adapter : adapters) {
+            requestSync(adapter.authority, userId);
+        }
+    }
+
+    private void cancelSyncForEnabledProviders() {
+        int userId = getUserHandle().getIdentifier();
+
+        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(
+                getAccount(), getUserHandle());
+        for (SyncAdapterType adapter : adapters) {
+            cancelSync(adapter.authority, userId);
+        }
+    }
+
+    @VisibleForTesting
+    List<SyncInfo> getCurrentSyncs(int userId) {
+        return ContentResolver.getCurrentSyncsAsUser(userId);
+    }
+
+    @VisibleForTesting
+    void requestSync(String authority, int userId) {
+        AccountSyncHelper.requestSyncIfAllowed(getAccount(), authority, userId);
+    }
+
+    @VisibleForTesting
+    void cancelSync(String authority, int userId) {
+        ContentResolver.cancelSyncAsUser(getAccount(), authority, userId);
+    }
 }
diff --git a/src/com/android/car/settings/accounts/AccountGroupPreferenceController.java b/src/com/android/car/settings/accounts/AccountGroupPreferenceController.java
new file mode 100644
index 0000000..846130e
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountGroupPreferenceController.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2021 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.car.settings.accounts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.profiles.ProfileDetailsBasePreferenceController;
+import com.android.car.settings.profiles.ProfileHelper;
+
+/**
+ * Controller for displaying accounts and associated actions.
+ * Ensures changes can only be made by the appropriate users.
+ */
+public class AccountGroupPreferenceController extends
+        ProfileDetailsBasePreferenceController<PreferenceGroup> {
+
+    public AccountGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        boolean isCurrentUser = getProfileHelper().isCurrentProcessUser(getUserInfo());
+        boolean canModifyAccounts = getProfileHelper().canCurrentProcessModifyAccounts();
+        return (isCurrentUser && canModifyAccounts) ? AVAILABLE : DISABLED_FOR_PROFILE;
+    }
+
+    @VisibleForTesting
+    ProfileHelper getProfileHelper() {
+        return ProfileHelper.getInstance(getContext());
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountListPreferenceController.java b/src/com/android/car/settings/accounts/AccountListPreferenceController.java
index ab66263..bfe2c15 100644
--- a/src/com/android/car/settings/accounts/AccountListPreferenceController.java
+++ b/src/com/android/car/settings/accounts/AccountListPreferenceController.java
@@ -34,7 +34,7 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.car.ui.preference.CarUiPreference;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settingslib.accounts.AuthenticatorHelper;
@@ -73,9 +73,8 @@
     public AccountListPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mUserInfo = UserHelper.getInstance(context).getCurrentProcessUserInfo();
-        mAuthenticatorHelper = new AuthenticatorHelper(context,
-                mUserInfo.getUserHandle(), /* listener= */ this);
+        mUserInfo = ProfileHelper.getInstance(context).getCurrentProcessUserInfo();
+        mAuthenticatorHelper = createAuthenticatorHelper();
     }
 
     /** Sets the account authorities that are available. */
@@ -95,9 +94,9 @@
 
     @Override
     protected int getAvailabilityStatus() {
-        boolean canModifyAccounts = UserHelper.getInstance(getContext())
+        boolean canModifyAccounts = ProfileHelper.getInstance(getContext())
                 .canCurrentProcessModifyAccounts();
-        return canModifyAccounts ? AVAILABLE : DISABLED_FOR_USER;
+        return canModifyAccounts ? AVAILABLE : DISABLED_FOR_PROFILE;
     }
 
     /**
@@ -132,6 +131,11 @@
         forceUpdateAccountsCategory();
     }
 
+    @VisibleForTesting
+    AuthenticatorHelper createAuthenticatorHelper() {
+        return new AuthenticatorHelper(getContext(), mUserInfo.getUserHandle(), this);
+    }
+
     private boolean onAccountPreferenceClicked(AccountPreference preference) {
         // Show the account's details when an account is clicked on.
         getFragmentController().launchFragment(AccountDetailsFragment.newInstance(
@@ -147,8 +151,7 @@
 
         // Recreate the authentication helper to refresh the list of enabled accounts
         mAuthenticatorHelper.stopListeningToAccountUpdates();
-        mAuthenticatorHelper = new AuthenticatorHelper(getContext(), mUserInfo.getUserHandle(),
-                this);
+        mAuthenticatorHelper = createAuthenticatorHelper();
         if (mListenerRegistered) {
             mAuthenticatorHelper.listenToAccountUpdates();
         }
diff --git a/src/com/android/car/settings/accounts/AccountSettingsFragment.java b/src/com/android/car/settings/accounts/AccountSettingsFragment.java
deleted file mode 100644
index 6fed44f..0000000
--- a/src/com/android/car/settings/accounts/AccountSettingsFragment.java
+++ /dev/null
@@ -1,118 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.provider.Settings;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.settings.users.UserHelper;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.search.SearchIndexable;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Lists the user's accounts and any related options.
- */
-@SearchIndexable
-public class AccountSettingsFragment extends SettingsFragment {
-    private MenuItem mAddAccountButton;
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.account_settings_fragment;
-    }
-
-    @Override
-    protected List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mAddAccountButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        boolean canModifyAccounts = UserHelper.getInstance(getContext())
-                .canCurrentProcessModifyAccounts();
-
-        mAddAccountButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.user_add_account_menu)
-                .setOnClickListener(i -> onAddAccountClicked())
-                .setVisible(canModifyAccounts)
-                .build();
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-
-        String[] authorities = getActivity().getIntent().getStringArrayExtra(
-                Settings.EXTRA_AUTHORITIES);
-        if (authorities != null) {
-            use(AccountListPreferenceController.class, R.string.pk_account_list)
-                    .setAuthorities(authorities);
-        }
-    }
-
-    private void onAddAccountClicked() {
-        AccountTypesHelper helper = new AccountTypesHelper(getContext());
-        Intent activityIntent = requireActivity().getIntent();
-
-        String[] authorities = activityIntent.getStringArrayExtra(Settings.EXTRA_AUTHORITIES);
-        if (authorities != null) {
-            helper.setAuthorities(Arrays.asList(authorities));
-        }
-
-        String[] accountTypesForFilter =
-                activityIntent.getStringArrayExtra(Settings.EXTRA_ACCOUNT_TYPES);
-        if (accountTypesForFilter != null) {
-            helper.setAccountTypesFilter(
-                    new HashSet<>(Arrays.asList(accountTypesForFilter)));
-        }
-
-        Set<String> authorizedAccountTypes = helper.getAuthorizedAccountTypes();
-
-        if (authorizedAccountTypes.size() == 1) {
-            String accountType = authorizedAccountTypes.iterator().next();
-            startActivity(
-                    AddAccountActivity.createAddAccountActivityIntent(getContext(), accountType));
-        } else {
-            startActivity(new Intent(getContext(),
-                    CarSettingActivities.ChooseAccountActivity.class));
-        }
-    }
-
-    /**
-     * Data provider for Settings Search.
-     */
-    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new CarBaseSearchIndexProvider(R.xml.account_settings_fragment,
-                    Settings.ACTION_SYNC_SETTINGS);
-}
diff --git a/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java b/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java
index 1acb62a..409073d 100644
--- a/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java
+++ b/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java
@@ -17,10 +17,7 @@
 package com.android.car.settings.accounts;
 
 import android.accounts.Account;
-import android.content.ContentResolver;
 import android.content.Context;
-import android.content.SyncAdapterType;
-import android.content.SyncStatusObserver;
 import android.os.Bundle;
 import android.os.UserHandle;
 
@@ -28,12 +25,6 @@
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.utils.ThreadUtils;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
 
 /**
  * Shows details for syncing an account.
@@ -41,17 +32,6 @@
 public class AccountSyncDetailsFragment extends SettingsFragment {
     private static final String EXTRA_ACCOUNT = "extra_account";
     private static final String EXTRA_USER_HANDLE = "extra_user_handle";
-    private boolean mIsStarted = false;
-    private Object mStatusChangeListenerHandle;
-    private MenuItem mSyncButton;
-    private SyncStatusObserver mSyncStatusObserver =
-            which -> ThreadUtils.postOnMainThread(() -> {
-                // The observer call may occur even if the fragment hasn't been started, so
-                // only force an update if the fragment hasn't been stopped.
-                if (mIsStarted) {
-                    updateSyncButton();
-                }
-            });
 
     /**
      * Creates a new AccountSyncDetailsFragment.
@@ -74,19 +54,6 @@
     }
 
     @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mSyncButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mSyncButton = new MenuItem.Builder(getContext()).build();
-        updateSyncButton();
-    }
-
-    @Override
     public void onAttach(Context context) {
         super.onAttach(context);
 
@@ -105,68 +72,4 @@
         use(AccountSyncDetailsPreferenceController.class, R.string.pk_account_sync_details)
                 .setUserHandle(userHandle);
     }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        updateSyncButton();
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mIsStarted = true;
-        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
-                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
-                        | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
-                        | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mIsStarted = false;
-        if (mStatusChangeListenerHandle != null) {
-            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
-        }
-    }
-
-    private void updateSyncButton() {
-        // Set the button to either request or cancel sync, depending on the current state
-        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
-        boolean hasActiveSyncs = !ContentResolver.getCurrentSyncsAsUser(
-                userHandle.getIdentifier()).isEmpty();
-
-        // If there are active syncs, clicking the button with cancel them. Otherwise, clicking the
-        // button will start them.
-        mSyncButton.setTitle(
-                hasActiveSyncs ? R.string.sync_button_sync_cancel : R.string.sync_button_sync_now);
-        mSyncButton.setOnClickListener(hasActiveSyncs
-                ? i -> cancelSyncForEnabledProviders()
-                : i -> requestSyncForEnabledProviders());
-    }
-
-    private void requestSyncForEnabledProviders() {
-        Account account = getArguments().getParcelable(EXTRA_ACCOUNT);
-        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
-        int userId = userHandle.getIdentifier();
-
-        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(account,
-                userHandle);
-        for (SyncAdapterType adapter : adapters) {
-            AccountSyncHelper.requestSyncIfAllowed(account, adapter.authority, userId);
-        }
-    }
-
-    private void cancelSyncForEnabledProviders() {
-        Account account = getArguments().getParcelable(EXTRA_ACCOUNT);
-        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
-        int userId = userHandle.getIdentifier();
-
-        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(account,
-                userHandle);
-        for (SyncAdapterType adapter : adapters) {
-            ContentResolver.cancelSyncAsUser(account, adapter.authority, userId);
-        }
-    }
 }
diff --git a/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java b/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java
index 57bac20..d3aaba2 100644
--- a/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java
+++ b/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java
@@ -68,7 +68,6 @@
      * sync.
      */
     private final Map<String, SyncPreference> mSyncPreferences = new ArrayMap<>();
-    private boolean mIsStarted = false;
     private Account mAccount;
     private UserHandle mUserHandle;
     private AuthenticatorHelper mAuthenticatorHelper;
@@ -77,7 +76,7 @@
             which -> ThreadUtils.postOnMainThread(() -> {
                 // The observer call may occur even if the fragment hasn't been started, so
                 // only force an update if the fragment hasn't been stopped.
-                if (mIsStarted) {
+                if (isStarted()) {
                     forceUpdateSyncCategory();
                 }
             });
@@ -137,7 +136,6 @@
      */
     @Override
     protected void onStartInternal() {
-        mIsStarted = true;
         mAuthenticatorHelper.listenToAccountUpdates();
 
         mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
@@ -151,7 +149,6 @@
      */
     @Override
     protected void onStopInternal() {
-        mIsStarted = false;
         mAuthenticatorHelper.stopListeningToAccountUpdates();
         if (mStatusChangeListenerHandle != null) {
             ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
diff --git a/src/com/android/car/settings/accounts/AccountSyncHelper.java b/src/com/android/car/settings/accounts/AccountSyncHelper.java
index 109e0d4..cbc7ca5 100644
--- a/src/com/android/car/settings/accounts/AccountSyncHelper.java
+++ b/src/com/android/car/settings/accounts/AccountSyncHelper.java
@@ -28,6 +28,8 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.car.settings.common.Logger;
 
 import java.util.HashSet;
@@ -87,15 +89,18 @@
      *
      * <p>Derived from
      * {@link com.android.settings.accounts.AccountSyncSettings#requestOrCancelSync}.
+     *
+     * @return {@code true} if sync was requested, {@code false} otherwise.
      */
-    static void requestSyncIfAllowed(Account account, String authority, int userId) {
+    static boolean requestSyncIfAllowed(Account account, String authority, int userId) {
         if (!syncIsAllowed(account, authority, userId)) {
-            return;
+            return false;
         }
 
         Bundle extras = new Bundle();
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
         ContentResolver.requestSyncAsUser(account, authority, userId, extras);
+        return true;
     }
 
     /**
@@ -142,7 +147,8 @@
         return SyncState.NONE;
     }
 
-    private static boolean syncIsAllowed(Account account, String authority, int userId) {
+    @VisibleForTesting
+    static boolean syncIsAllowed(Account account, String authority, int userId) {
         boolean oneTimeSyncMode = !ContentResolver.getMasterSyncAutomaticallyAsUser(userId);
         boolean syncEnabled = ContentResolver.getSyncAutomaticallyAsUser(account, authority,
                 userId);
diff --git a/src/com/android/car/settings/accounts/AccountTypesHelper.java b/src/com/android/car/settings/accounts/AccountTypesHelper.java
index 8d60a91..f45e3f6 100644
--- a/src/com/android/car/settings/accounts/AccountTypesHelper.java
+++ b/src/com/android/car/settings/accounts/AccountTypesHelper.java
@@ -96,7 +96,8 @@
      * <p>Derived from
      * {@link com.android.settings.accounts.ChooseAccountActivity#onAuthDescriptionsUpdated}
      */
-    private void updateAuthorizedAccountTypes(boolean isForced) {
+    @VisibleForTesting
+    void updateAuthorizedAccountTypes(boolean isForced) {
         AccountManager accountManager = AccountManager.get(mContext);
         AuthenticatorDescription[] authenticatorDescriptions =
                 accountManager.getAuthenticatorTypesAsUser(mUserHandle.getIdentifier());
@@ -183,4 +184,9 @@
     AuthenticatorHelper getAuthenticatorHelper() {
         return mAuthenticatorHelper;
     }
+
+    @VisibleForTesting
+    void setAuthenticatorHelper(AuthenticatorHelper helper) {
+        mAuthenticatorHelper = helper;
+    }
 }
diff --git a/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java b/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java
deleted file mode 100644
index e27d58b..0000000
--- a/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java
+++ /dev/null
@@ -1,50 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.settings.users.UserHelper;
-
-/**
- * Controller which determines if the top level entry into Account settings should be displayed
- * based on the user status.
- */
-public class AccountsEntryPreferenceController extends PreferenceController<Preference> {
-
-    public AccountsEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        boolean canModifyAccounts = UserHelper.getInstance(getContext())
-                .canCurrentProcessModifyAccounts();
-        return canModifyAccounts ? AVAILABLE : DISABLED_FOR_USER;
-    }
-}
diff --git a/src/com/android/car/settings/accounts/AddAccountActivity.java b/src/com/android/car/settings/accounts/AddAccountActivity.java
index 06897df..f166887 100644
--- a/src/com/android/car/settings/accounts/AddAccountActivity.java
+++ b/src/com/android/car/settings/accounts/AddAccountActivity.java
@@ -184,7 +184,8 @@
         identityIntent.setAction(SHOULD_NOT_RESOLVE);
         identityIntent.addCategory(SHOULD_NOT_RESOLVE);
 
-        mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent, 0);
+        mPendingIntent =
+                PendingIntent.getBroadcast(this, 0, identityIntent, PendingIntent.FLAG_IMMUTABLE);
         addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
 
         AccountManager.get(this).addAccountAsUser(
diff --git a/src/com/android/car/settings/accounts/AddAccountPreferenceController.java b/src/com/android/car/settings/accounts/AddAccountPreferenceController.java
new file mode 100644
index 0000000..5a6d234
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AddAccountPreferenceController.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.profiles.ProfileHelper;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Business Logic for preference starts the add account flow.
+ */
+public class AddAccountPreferenceController extends PreferenceController<Preference> {
+
+    private String[] mAuthorities;
+    private String[] mAccountTypes;
+
+    public AddAccountPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the account authorities that are available. */
+    public AddAccountPreferenceController setAuthorities(String[] authorities) {
+        mAuthorities = authorities;
+        return this;
+    }
+
+    /** Sets the account authorities that are available. */
+    public AddAccountPreferenceController setAccountTypes(String[] accountTypes) {
+        mAccountTypes = accountTypes;
+        return this;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        AccountTypesHelper helper = getAccountTypesHelper();
+
+        if (mAuthorities != null) {
+            helper.setAuthorities(Arrays.asList(mAuthorities));
+        }
+        if (mAccountTypes != null) {
+            helper.setAccountTypesFilter(
+                    new HashSet<>(Arrays.asList(mAccountTypes)));
+        }
+
+        Set<String> authorizedAccountTypes = helper.getAuthorizedAccountTypes();
+
+        if (authorizedAccountTypes.size() == 1) {
+            String accountType = authorizedAccountTypes.iterator().next();
+            getContext().startActivity(
+                    AddAccountActivity.createAddAccountActivityIntent(getContext(), accountType));
+        } else {
+            getFragmentController().launchFragment(new ChooseAccountFragment());
+        }
+        return true;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (getProfileHelper().canCurrentProcessModifyAccounts()) {
+            return AVAILABLE;
+        }
+        return DISABLED_FOR_PROFILE;
+    }
+
+    @VisibleForTesting
+    ProfileHelper getProfileHelper() {
+        return ProfileHelper.getInstance(getContext());
+    }
+
+    @VisibleForTesting
+    AccountTypesHelper getAccountTypesHelper() {
+        return new AccountTypesHelper(getContext());
+    }
+}
diff --git a/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java b/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java
index 58e22fc..25e63bc 100644
--- a/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java
+++ b/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java
@@ -52,7 +52,6 @@
 
     private AccountTypesHelper mAccountTypesHelper;
     private ArrayMap<String, AuthenticatorDescriptionPreference> mPreferences = new ArrayMap<>();
-    private boolean mIsStarted = false;
     private boolean mHasPendingBack = false;
 
     public ChooseAccountPreferenceController(Context context, String preferenceKey,
@@ -92,7 +91,6 @@
      */
     @Override
     protected void onStartInternal() {
-        mIsStarted = true;
         mAccountTypesHelper.listenToAccountUpdates();
 
         if (mHasPendingBack) {
@@ -110,7 +108,6 @@
     @Override
     protected void onStopInternal() {
         mAccountTypesHelper.stopListeningToAccountUpdates();
-        mIsStarted = false;
     }
 
     /** Forces a refresh of the authenticator description preferences. */
@@ -176,14 +173,19 @@
 
     /** Used for testing to trigger an account update. */
     @VisibleForTesting
-    AuthenticatorHelper getAuthenticatorHelper() {
-        return mAccountTypesHelper.getAuthenticatorHelper();
+    AccountTypesHelper getAccountTypesHelper() {
+        return mAccountTypesHelper;
+    }
+
+    @VisibleForTesting
+    void setAuthenticatorHelper(AuthenticatorHelper helper) {
+        mAccountTypesHelper.setAuthenticatorHelper(helper);
     }
 
     @Override
     public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         if (requestCode == ADD_ACCOUNT_REQUEST_CODE) {
-            if (mIsStarted) {
+            if (isStarted()) {
                 getFragmentController().goBack();
             } else {
                 mHasPendingBack = true;
diff --git a/src/com/android/car/settings/applications/AllAppsPreferenceController.java b/src/com/android/car/settings/applications/AllAppsPreferenceController.java
new file mode 100644
index 0000000..27766f2
--- /dev/null
+++ b/src/com/android/car/settings/applications/AllAppsPreferenceController.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Controller that shows when there is no recently used apps.
+ * Sets availability based on if there are recent apps and sets summary depending on number of
+ * non-system apps.
+ */
+public class AllAppsPreferenceController extends PreferenceController<Preference> implements
+        RecentAppsItemManager.RecentAppStatsListener,
+        InstalledAppCountItemManager.InstalledAppCountListener {
+
+    // In most cases, device has recently opened apps. So, assume true by default.
+    private boolean mAreThereRecentlyUsedApps = true;
+
+    public AllAppsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mAreThereRecentlyUsedApps ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
+    }
+
+    @Override
+    public void onRecentAppStatsLoaded(List<UsageStats> recentAppStats) {
+        mAreThereRecentlyUsedApps = !recentAppStats.isEmpty();
+        refreshUi();
+    }
+
+    @Override
+    public void onInstalledAppCountLoaded(int appCount) {
+        getPreference().setSummary(getContext().getResources().getString(
+                R.string.apps_view_all_apps_title, appCount));
+    }
+}
diff --git a/src/com/android/car/settings/applications/AppListFragment.java b/src/com/android/car/settings/applications/AppListFragment.java
index 55b4e60..3bd137a 100644
--- a/src/com/android/car/settings/applications/AppListFragment.java
+++ b/src/com/android/car/settings/applications/AppListFragment.java
@@ -16,52 +16,62 @@
 
 package com.android.car.settings.applications;
 
+import android.content.Context;
+import android.content.SharedPreferences;
 import android.os.Bundle;
 
-import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
-
-import java.util.Collections;
-import java.util.List;
 
 /**
- * Fragment base class for use in cases where a list of applications is displayed with the option to
- * show/hide system apps in the list.
+ * Fragment base class for use in cases where a list of applications is displayed. Includes a
+ * a shared preference instance that can be used to show/hide system apps in the list.
  */
 public abstract class AppListFragment extends SettingsFragment {
 
-    private static final String KEY_SHOW_SYSTEM = "showSystem";
+    protected static final String SHARED_PREFERENCE_PATH =
+            "com.android.car.settings.applications.AppListFragment";
+    protected static final String KEY_HIDE_SYSTEM =
+            "com.android.car.settings.applications.HIDE_SYSTEM";
 
-    private boolean mShowSystem;
-    private MenuItem mSystemButton;
+    private boolean mHideSystem = true;
+
+    private SharedPreferences mSharedPreferences;
+    private SharedPreferences.OnSharedPreferenceChangeListener mSharedPreferenceChangeListener =
+            (sharedPreferences, key) -> {
+                if (KEY_HIDE_SYSTEM.equals(key)) {
+                    mHideSystem = sharedPreferences.getBoolean(KEY_HIDE_SYSTEM,
+                            /* defaultValue= */ true);
+                    onToggleShowSystemApps(!mHideSystem);
+                }
+            };
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        mSharedPreferences =
+                getContext().getSharedPreferences(SHARED_PREFERENCE_PATH, Context.MODE_PRIVATE);
         if (savedInstanceState != null) {
-            mShowSystem = savedInstanceState.getBoolean(KEY_SHOW_SYSTEM, false);
+            mHideSystem = savedInstanceState.getBoolean(KEY_HIDE_SYSTEM,
+                    /* defaultValue= */ true);
+            mSharedPreferences.edit().putBoolean(KEY_HIDE_SYSTEM, mHideSystem).apply();
+        } else {
+            mSharedPreferences.edit().putBoolean(KEY_HIDE_SYSTEM, true).apply();
         }
-
-        mSystemButton = new MenuItem.Builder(getContext())
-                .setOnClickListener(i -> {
-                    mShowSystem = !mShowSystem;
-                    onToggleShowSystemApps(mShowSystem);
-                    i.setTitle(mShowSystem ? R.string.hide_system : R.string.show_system);
-                })
-                .setTitle(mShowSystem ? R.string.hide_system : R.string.show_system)
-                .build();
-    }
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mSystemButton);
     }
 
     @Override
     public void onStart() {
         super.onStart();
-        onToggleShowSystemApps(mShowSystem);
+        onToggleShowSystemApps(!mHideSystem);
+        mSharedPreferences.registerOnSharedPreferenceChangeListener(
+                mSharedPreferenceChangeListener);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mSharedPreferences.unregisterOnSharedPreferenceChangeListener(
+                mSharedPreferenceChangeListener);
     }
 
     /** Called when a user toggles the option to show system applications in the list. */
@@ -69,12 +79,12 @@
 
     /** Returns {@code true} if system applications should be shown in the list. */
     protected final boolean shouldShowSystemApps() {
-        return mShowSystem;
+        return !mHideSystem;
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-        outState.putBoolean(KEY_SHOW_SYSTEM, mShowSystem);
+        outState.putBoolean(KEY_HIDE_SYSTEM, mHideSystem);
     }
 }
diff --git a/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java b/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java
deleted file mode 100644
index 9743875..0000000
--- a/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PermissionGroupInfo;
-import android.content.pm.PermissionInfo;
-import android.icu.text.ListFormatter;
-import android.util.ArraySet;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Updates the summary of the entry preference for app permissions to show up to a fixed number of
- * permission groups currently permitted.
- */
-public class AppPermissionsEntryPreferenceController extends PreferenceController<Preference> {
-
-    private static final Logger LOG = new Logger(AppPermissionsEntryPreferenceController.class);
-
-    private static final String[] PERMISSION_GROUPS = new String[]{
-            "android.permission-group.LOCATION",
-            "android.permission-group.MICROPHONE",
-            "android.permission-group.CAMERA",
-            "android.permission-group.SMS",
-            "android.permission-group.CONTACTS",
-            "android.permission-group.PHONE"};
-
-    private static final int NUM_PERMISSION_TO_USE = 3;
-
-    private PackageManager mPackageManager;
-
-    public AppPermissionsEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mPackageManager = context.getPackageManager();
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    @Override
-    protected void updateState(Preference preference) {
-        Set<String> permissions = getAllPermissionsInGroups();
-        Set<String> grantedPermissionGroups = getGrantedPermissionGroups(permissions);
-        int count = 0;
-        final List<String> summaries = new ArrayList<>();
-
-        // Iterate over array instead of set to show sensitive permissions first.
-        for (String group : PERMISSION_GROUPS) {
-            if (!grantedPermissionGroups.contains(group)) {
-                continue;
-            }
-            summaries.add(getPermissionGroupLabel(group).toString().toLowerCase());
-            if (++count >= NUM_PERMISSION_TO_USE) {
-                break;
-            }
-        }
-        String summary = (count > 0) ? getContext().getString(R.string.app_permissions_summary,
-                ListFormatter.getInstance().format(summaries)) : null;
-
-        preference.setSummary(summary);
-    }
-
-    private Set<String> getAllPermissionsInGroups() {
-        Set<String> result = new ArraySet<>();
-        for (String group : PERMISSION_GROUPS) {
-            try {
-                List<PermissionInfo> permissions = mPackageManager.queryPermissionsByGroup(
-                        group, /* flags= */ 0);
-                for (PermissionInfo permissionInfo : permissions) {
-                    result.add(permissionInfo.name);
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-                LOG.e("Error getting permissions in group " + group, e);
-            }
-        }
-        return result;
-    }
-
-    private Set<String> getGrantedPermissionGroups(Set<String> permissions) {
-        Set<String> grantedPermissionGroups = new ArraySet<>();
-        List<PackageInfo> installedPackages =
-                mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
-        for (PackageInfo installedPackage : installedPackages) {
-            if (installedPackage.permissions == null) {
-                continue;
-            }
-            for (PermissionInfo permissionInfo : installedPackage.permissions) {
-                if (permissions.contains(permissionInfo.name)) {
-                    grantedPermissionGroups.add(permissionInfo.group);
-                }
-            }
-        }
-        return grantedPermissionGroups;
-    }
-
-    private CharSequence getPermissionGroupLabel(String group) {
-        try {
-            PermissionGroupInfo groupInfo = mPackageManager.getPermissionGroupInfo(
-                    group, /* flags= */ 0);
-            return groupInfo.loadLabel(mPackageManager);
-        } catch (PackageManager.NameNotFoundException e) {
-            LOG.e("Error getting permissions label.", e);
-        }
-        return group;
-    }
-}
diff --git a/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceController.java b/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceController.java
index 49c44cb..2622c5e 100644
--- a/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceController.java
+++ b/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceController.java
@@ -21,6 +21,7 @@
 import static com.android.car.settings.applications.ApplicationsUtils.isKeepEnabledPackage;
 import static com.android.car.settings.applications.ApplicationsUtils.isProfileOrDeviceOwner;
 import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+import static com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment.DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG;
 
 import android.app.Activity;
 import android.app.ActivityManager;
@@ -52,11 +53,13 @@
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment;
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.settingslib.Utils;
 import com.android.settingslib.applications.ApplicationsState;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -83,19 +86,25 @@
     private static final Logger LOG = new Logger(
             ApplicationActionButtonsPreferenceController.class);
 
+    private static final List<String> FORCE_STOP_RESTRICTIONS =
+            Arrays.asList(UserManager.DISALLOW_APPS_CONTROL);
+    private static final List<String> UNINSTALL_RESTRICTIONS =
+            Arrays.asList(UserManager.DISALLOW_UNINSTALL_APPS, UserManager.DISALLOW_APPS_CONTROL);
+
     @VisibleForTesting
     static final String DISABLE_CONFIRM_DIALOG_TAG =
             "com.android.car.settings.applications.DisableConfirmDialog";
     @VisibleForTesting
     static final String FORCE_STOP_CONFIRM_DIALOG_TAG =
             "com.android.car.settings.applications.ForceStopConfirmDialog";
+
     @VisibleForTesting
     static final int UNINSTALL_REQUEST_CODE = 10;
 
     private DevicePolicyManager mDpm;
     private PackageManager mPm;
     private UserManager mUserManager;
-    private UserHelper mUserHelper;
+    private ProfileHelper mProfileHelper;
     private ApplicationsState.Session mSession;
 
     private ApplicationsState.AppEntry mAppEntry;
@@ -103,6 +112,8 @@
     private String mPackageName;
     private PackageInfo mPackageInfo;
 
+    private String mRestriction;
+
     @VisibleForTesting
     final ConfirmationDialogFragment.ConfirmListener mForceStopConfirmListener =
             new ConfirmationDialogFragment.ConfirmListener() {
@@ -117,6 +128,7 @@
             };
 
     private final View.OnClickListener mForceStopClickListener = i -> {
+        if (ignoreActionBecauseItsDisabledByAdmin(FORCE_STOP_RESTRICTIONS)) return;
         ConfirmationDialogFragment dialogFragment =
                 new ConfirmationDialogFragment.Builder(getContext())
                         .setTitle(R.string.force_stop_dialog_title)
@@ -167,6 +179,7 @@
     };
 
     private final View.OnClickListener mUninstallClickListener = i -> {
+        if (ignoreActionBecauseItsDisabledByAdmin(UNINSTALL_RESTRICTIONS)) return;
         Uri packageUri = Uri.parse("package:" + mPackageName);
         Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
         uninstallIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
@@ -216,7 +229,7 @@
         mDpm = context.getSystemService(DevicePolicyManager.class);
         mPm = context.getPackageManager();
         mUserManager = UserManager.get(context);
-        mUserHelper = UserHelper.getInstance(context);
+        mProfileHelper = ProfileHelper.getInstance(context);
     }
 
     @Override
@@ -340,8 +353,19 @@
     }
 
     private void updateForceStopButtonInner(boolean enabled) {
-        getPreference().getButton(ActionButtons.BUTTON2).setEnabled(
-                enabled && !mUserManager.hasUserRestriction(UserManager.DISALLOW_APPS_CONTROL));
+        if (enabled) {
+            Boolean shouldDisable = shouldDisableButtonBecauseOfUserRestriction("Force Stop",
+                    UserManager.DISALLOW_APPS_CONTROL);
+            if (shouldDisable != null) {
+                if (shouldDisable) {
+                    enabled = false;
+                } else {
+                    mRestriction = UserManager.DISALLOW_APPS_CONTROL;
+                }
+            }
+        }
+
+        getPreference().getButton(ActionButtons.BUTTON2).setEnabled(enabled);
     }
 
     private void updateUninstallButtonInner(boolean isAppEnabled) {
@@ -387,10 +411,10 @@
             return true;
         }
 
-        // We don't allow uninstalling profile/device owner on any user because if it's a system
+        // We don't allow uninstalling profile/device owner on any profile because if it's a system
         // app, "uninstall" is actually "downgrade to the system version + disable", and
-        // "downgrade" will clear data on all users.
-        if (isProfileOrDeviceOwner(mPackageName, mDpm, mUserHelper)) {
+        // "downgrade" will clear data on all profiles.
+        if (isProfileOrDeviceOwner(mPackageName, mDpm, mProfileHelper)) {
             LOG.d("Uninstall disabled because package is profile or device owner");
             return true;
         }
@@ -400,20 +424,47 @@
             return true;
         }
 
-        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_APPS_CONTROL)) {
-            LOG.d("Uninstall disabled because user has DISALLOW_APPS_CONTROL restriction");
-            return true;
-        }
+        Boolean shouldDisable = shouldDisableButtonBecauseOfUserRestriction("Uninstall",
+                UserManager.DISALLOW_APPS_CONTROL);
+        if (shouldDisable != null) return shouldDisable;
 
-        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_UNINSTALL_APPS)) {
-            LOG.d("Uninstall disabled because user has DISALLOW_UNINSTALL_APPS restriction");
-            return true;
-        }
+        shouldDisable = shouldDisableButtonBecauseOfUserRestriction("Uninstall",
+                UserManager.DISALLOW_UNINSTALL_APPS);
+        if (shouldDisable != null) return shouldDisable;
 
         return false;
     }
 
     /**
+     * Checks whether a button should be disabled because the user has the given restriction
+     * (and whether the restriction was was set by a device admin).
+     *
+     * @param button action name (for logging purposes)
+     * @param restriction user restriction
+     *
+     * @return {@code null} if the user doesn't have the restriction, {@value Boolean#TRUE} if it
+     * should be disabled because of {@link UserManager} restrictions, or {@value Boolean#FALSE} if
+     * should not be disabled because of {@link DevicePolicyManager} restrictions (in which case
+     * {@link #mRestriction} is updated with the restriction).
+     */
+    @Nullable
+    private Boolean shouldDisableButtonBecauseOfUserRestriction(String button, String restriction) {
+        if (!mUserManager.hasUserRestriction(restriction)) return null;
+
+        UserHandle user = UserHandle.getUserHandleForUid(mAppEntry.info.uid);
+
+        if (mUserManager.hasBaseUserRestriction(restriction, user)) {
+            LOG.d(button + " disabled because " + user + " has " + restriction + " restriction");
+            return Boolean.TRUE;
+        }
+
+        LOG.d(button + " NOT disabled because " + user + " has " + restriction + " restriction but "
+                + "it was set by a device admin (it will show a dialog explaining that instead)");
+        mRestriction = restriction;
+        return Boolean.FALSE;
+    }
+
+    /**
      * Returns {@code true} if the package is a Home app that should not be uninstalled. We don't
      * risk downgrading bundled home apps because that can interfere with home-key resolution. We
      * can't allow removal of the only home app, and we don't want to allow removal of an
@@ -493,4 +544,13 @@
             }
         }
     }
+
+    private boolean ignoreActionBecauseItsDisabledByAdmin(List<String> restrictions) {
+        if (mRestriction == null || !restrictions.contains(mRestriction)) return false;
+
+        LOG.d("Ignoring action because of " + mRestriction);
+        getFragmentController().showDialog(ActionDisabledByAdminDialogFragment.newInstance(
+                mRestriction, UserHandle.myUserId()), DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG);
+        return true;
+    }
 }
diff --git a/src/com/android/car/settings/applications/ApplicationDetailsFragment.java b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
index d9ff361..6683a83 100644
--- a/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
+++ b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
@@ -25,6 +25,7 @@
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
+import com.android.car.settings.applications.appinfo.HibernationSwitchPreferenceController;
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.settingslib.applications.ApplicationsState;
@@ -83,6 +84,11 @@
         use(StoragePreferenceController.class,
                 R.string.pk_application_details_storage)
                 .setAppEntry(mAppEntry).setPackageName(mPackageName);
+        use(PeakPerformancePreferenceController.class,
+                R.string.pk_application_details_peak_performance).setPackageInfo(mPackageInfo);
+        use(HibernationSwitchPreferenceController.class,
+                R.string.pk_hibernation_switch)
+                .setPackageName(mPackageName);
         use(VersionPreferenceController.class,
                 R.string.pk_application_details_version).setPackageInfo(mPackageInfo);
     }
diff --git a/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java b/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java
index 3297381..a0aff7b 100644
--- a/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java
+++ b/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java
@@ -18,14 +18,11 @@
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.drawable.Drawable;
-import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 
-import com.android.car.settings.common.CarSettingActivities;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
 import com.android.car.ui.preference.CarUiPreference;
@@ -66,10 +63,8 @@
         preference.setIcon(icon);
         preference.setKey(packageName);
         preference.setOnPreferenceClickListener(p -> {
-            Intent intent = new Intent(getContext(),
-                    CarSettingActivities.ApplicationsDetailsActivity.class);
-            intent.putExtra(Settings.EXTRA_APP_PACKAGE, packageName);
-            getContext().startActivity(intent);
+            getFragmentController().launchFragment(
+                    ApplicationDetailsFragment.getInstance(packageName));
             return true;
         });
         return preference;
diff --git a/src/com/android/car/settings/applications/ApplicationsUtils.java b/src/com/android/car/settings/applications/ApplicationsUtils.java
index 6a2090d..b4c29e8 100644
--- a/src/com/android/car/settings/applications/ApplicationsUtils.java
+++ b/src/com/android/car/settings/applications/ApplicationsUtils.java
@@ -16,15 +16,18 @@
 
 package com.android.car.settings.applications;
 
+import static android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION;
+
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.UserInfo;
+import android.provider.DeviceConfig;
 import android.telecom.DefaultDialerManager;
 import android.text.TextUtils;
 import android.util.ArraySet;
 
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.internal.telephony.SmsApplication;
 
 import java.util.List;
@@ -33,6 +36,9 @@
 /** Utility functions for use in applications settings. */
 public class ApplicationsUtils {
 
+    /** Whether or not app hibernation is enabled on the device **/
+    public static final String PROPERTY_APP_HIBERNATION_ENABLED = "app_hibernation_enabled";
+
     private ApplicationsUtils() {
     }
 
@@ -61,11 +67,11 @@
      * least one user.
      */
     public static boolean isProfileOrDeviceOwner(String packageName, DevicePolicyManager dpm,
-            UserHelper userHelper) {
+            ProfileHelper profileHelper) {
         if (dpm.isDeviceOwnerAppOnAnyUser(packageName)) {
             return true;
         }
-        List<UserInfo> userInfos = userHelper.getAllUsers();
+        List<UserInfo> userInfos = profileHelper.getAllProfiles();
         for (int i = 0; i < userInfos.size(); i++) {
             ComponentName cn = dpm.getProfileOwnerAsUser(userInfos.get(i).id);
             if (cn != null && cn.getPackageName().equals(packageName)) {
@@ -74,4 +80,13 @@
         }
         return false;
     }
+
+    /**
+     * Returns {@code true} if the hibernation feature is enabled, as configured through {@link
+     * DeviceConfig}, which can be overridden remotely with a flag or through adb.
+     */
+    public static boolean isHibernationEnabled() {
+        return DeviceConfig.getBoolean(
+                NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED, true);
+    }
 }
diff --git a/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java b/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java
deleted file mode 100644
index ecaf0cc..0000000
--- a/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.settingslib.search.SearchIndexable;
-
-/** Shows subsettings related to apps and notifications. */
-@SearchIndexable
-public class AppsAndNotificationsFragment extends SettingsFragment {
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.apps_and_notifications_fragment;
-    }
-
-    /**
-     * Data provider for Settings Search.
-     */
-    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new CarBaseSearchIndexProvider(R.xml.apps_and_notifications_fragment,
-                    CarSettingActivities.AppsAndNotificationsActivity.class);
-}
diff --git a/src/com/android/car/settings/applications/AppsFragment.java b/src/com/android/car/settings/applications/AppsFragment.java
new file mode 100644
index 0000000..4be421d
--- /dev/null
+++ b/src/com/android/car/settings/applications/AppsFragment.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.provider.Settings;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/** Shows subsettings related to apps. */
+@SearchIndexable
+public class AppsFragment extends SettingsFragment {
+
+    private RecentAppsItemManager mRecentAppsItemManager;
+    private InstalledAppCountItemManager mInstalledAppCountItemManager;
+    private HibernatedAppsItemManager mHibernatedAppsItemManager;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.apps_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mRecentAppsItemManager = new RecentAppsItemManager(context,
+                context.getResources().getInteger(R.integer.recent_apps_max_count));
+        mRecentAppsItemManager.addListener(use(AllAppsPreferenceController.class,
+                R.string.pk_applications_settings_screen_entry));
+        mRecentAppsItemManager.addListener(use(RecentAppsGroupPreferenceController.class,
+                R.string.pk_recent_apps_group));
+        mRecentAppsItemManager.addListener(use(RecentAppsListPreferenceController.class,
+                R.string.pk_recent_apps_list));
+
+        mInstalledAppCountItemManager = new InstalledAppCountItemManager(context);
+        mInstalledAppCountItemManager.addListener(use(AllAppsPreferenceController.class,
+                R.string.pk_applications_settings_screen_entry));
+        mInstalledAppCountItemManager.addListener(use(RecentAppsViewAllPreferenceController.class,
+                R.string.pk_recent_apps_view_all));
+
+        mHibernatedAppsItemManager = new HibernatedAppsItemManager(context);
+        mHibernatedAppsItemManager.setListener(use(HibernatedAppsPreferenceController.class,
+                R.string.pk_hibernated_apps));
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mRecentAppsItemManager.startLoading();
+        mInstalledAppCountItemManager.startLoading();
+        mHibernatedAppsItemManager.startLoading();
+    }
+
+    /**
+     * Data provider for Settings Search.
+     */
+    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new CarBaseSearchIndexProvider(R.xml.apps_fragment,
+                    Settings.ACTION_APPLICATION_SETTINGS);
+}
diff --git a/src/com/android/car/settings/applications/HibernatedAppsItemManager.java b/src/com/android/car/settings/applications/HibernatedAppsItemManager.java
new file mode 100644
index 0000000..c4ee12d
--- /dev/null
+++ b/src/com/android/car/settings/applications/HibernatedAppsItemManager.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static android.app.usage.UsageStatsManager.INTERVAL_MONTHLY;
+
+import android.app.usage.UsageStats;
+import android.app.usage.UsageStatsManager;
+import android.apphibernation.AppHibernationManager;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.provider.DeviceConfig;
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Class for fetching and returning the number of hibernated apps. Largely derived from
+ * {@link com.android.settings.applications.HibernatedAppsPreferenceController}.
+ */
+public class HibernatedAppsItemManager {
+    private static final String PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS =
+            "auto_revoke_unused_threshold_millis2";
+    private static final long DEFAULT_UNUSED_THRESHOLD_MS = TimeUnit.DAYS.toMillis(90);
+
+    private final Context mContext;
+
+    private HibernatedAppsCountListener mListener;
+
+    public HibernatedAppsItemManager(Context context) {
+        mContext = context;
+    }
+
+    /**
+     * Starts fetching recently used apps
+     */
+    public void startLoading() {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            int count = getNumHibernated();
+            ThreadUtils.postOnMainThread(() -> {
+                HibernatedAppsCountListener localListener = mListener;
+                if (localListener != null) {
+                    localListener.onHibernatedAppsCountLoaded(count);
+                }
+            });
+        });
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void setListener(@NonNull HibernatedAppsCountListener listener) {
+        mListener = listener;
+    }
+
+    private int getNumHibernated() {
+        // TODO(b/187465752): Find a way to export this logic from PermissionController module
+        PackageManager pm = mContext.getPackageManager();
+        AppHibernationManager ahm =
+                mContext.getSystemService(AppHibernationManager.class);
+        List<String> hibernatedPackages = ahm.getHibernatingPackagesForUser();
+        int numHibernated = hibernatedPackages.size();
+
+        // Also need to count packages that are auto revoked but not hibernated.
+        int numAutoRevoked = 0;
+        UsageStatsManager usm = mContext.getSystemService(UsageStatsManager.class);
+        long now = System.currentTimeMillis();
+        long unusedThreshold = DeviceConfig.getLong(DeviceConfig.NAMESPACE_PERMISSIONS,
+                PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS, DEFAULT_UNUSED_THRESHOLD_MS);
+        List<UsageStats> usageStatsList = usm.queryUsageStats(INTERVAL_MONTHLY,
+                now - unusedThreshold, now);
+        Map<String, UsageStats> recentlyUsedPackages = new ArrayMap<>();
+        for (UsageStats us : usageStatsList) {
+            recentlyUsedPackages.put(us.mPackageName, us);
+        }
+        List<PackageInfo> packages = pm.getInstalledPackages(
+                PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.GET_PERMISSIONS);
+        for (PackageInfo pi : packages) {
+            String packageName = pi.packageName;
+            UsageStats usageStats = recentlyUsedPackages.get(packageName);
+            // Only count packages that have not been used recently as auto-revoked permissions may
+            // stay revoked even after use if the user has not regranted them.
+            boolean usedRecently = (usageStats != null
+                    && (now - usageStats.getLastTimeAnyComponentUsed() < unusedThreshold
+                    || now - usageStats.getLastTimeVisible() < unusedThreshold));
+            if (!hibernatedPackages.contains(packageName)
+                    && pi.requestedPermissions != null
+                    && !usedRecently) {
+                for (String perm : pi.requestedPermissions) {
+                    if ((pm.getPermissionFlags(perm, packageName, mContext.getUser())
+                            & PackageManager.FLAG_PERMISSION_AUTO_REVOKED) != 0) {
+                        numAutoRevoked++;
+                        break;
+                    }
+                }
+            }
+        }
+        return numHibernated + numAutoRevoked;
+    }
+
+
+    /**
+     * Callback that is called once the count of hibernated apps has been fetched.
+     */
+    public interface HibernatedAppsCountListener {
+        /**
+         * Called when the count of hibernated apps has loaded.
+         */
+        void onHibernatedAppsCountLoaded(int hibernatedAppsCount);
+    }
+}
diff --git a/src/com/android/car/settings/applications/HibernatedAppsPreferenceController.java b/src/com/android/car/settings/applications/HibernatedAppsPreferenceController.java
new file mode 100644
index 0000000..b568c0a
--- /dev/null
+++ b/src/com/android/car/settings/applications/HibernatedAppsPreferenceController.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.android.car.settings.applications.ApplicationsUtils.isHibernationEnabled;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * A preference controller handling the logic for updating summary of hibernated apps.
+ */
+public final class HibernatedAppsPreferenceController extends PreferenceController<Preference>
+        implements HibernatedAppsItemManager.HibernatedAppsCountListener {
+    private static final String TAG = "HibernatedAppsPrefController";
+
+    public HibernatedAppsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return isHibernationEnabled() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    public void onHibernatedAppsCountLoaded(int hibernatedAppsCount) {
+        getPreference().setSummary(getContext().getResources().getQuantityString(
+                R.plurals.unused_apps_summary, hibernatedAppsCount, hibernatedAppsCount));
+        refreshUi();
+    }
+}
diff --git a/src/com/android/car/settings/applications/HideSystemSwitchPreferenceController.java b/src/com/android/car/settings/applications/HideSystemSwitchPreferenceController.java
new file mode 100644
index 0000000..6e68d57
--- /dev/null
+++ b/src/com/android/car/settings/applications/HideSystemSwitchPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2020 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import com.android.car.settings.common.ColoredSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Hides/shows system apps from Application listings. Intended to be used inside instances of
+ * {@link AppListFragment}.
+ */
+public class HideSystemSwitchPreferenceController
+        extends PreferenceController<ColoredSwitchPreference> {
+
+    private final SharedPreferences mSharedPreferences = getContext().getSharedPreferences(
+            AppListFragment.SHARED_PREFERENCE_PATH, Context.MODE_PRIVATE);
+
+    public HideSystemSwitchPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ColoredSwitchPreference> getPreferenceType() {
+        return ColoredSwitchPreference.class;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ColoredSwitchPreference preference, Object newValue) {
+        boolean checked = (Boolean) newValue;
+        mSharedPreferences.edit().putBoolean(AppListFragment.KEY_HIDE_SYSTEM, checked).apply();
+        return true;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        getPreference().setChecked(getSharedPreferenceHidden());
+    }
+
+    private boolean getSharedPreferenceHidden() {
+        return mSharedPreferences.getBoolean(AppListFragment.KEY_HIDE_SYSTEM,
+                /* defaultValue= */ true);
+    }
+}
diff --git a/src/com/android/car/settings/applications/InstalledAppCountItemManager.java b/src/com/android/car/settings/applications/InstalledAppCountItemManager.java
new file mode 100644
index 0000000..bcde68e
--- /dev/null
+++ b/src/com/android/car/settings/applications/InstalledAppCountItemManager.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class used to count the number of non-system apps. Largely derived from
+ * {@link com.android.settings.applications.InstalledAppCounter}.
+ */
+public class InstalledAppCountItemManager {
+
+    private Context mContext;
+    private final List<InstalledAppCountListener> mInstalledAppCountListeners;
+
+    public InstalledAppCountItemManager(Context context) {
+        mContext = context;
+        mInstalledAppCountListeners = new ArrayList<>();
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void addListener(@NonNull InstalledAppCountListener listener) {
+        mInstalledAppCountListeners.add(listener);
+    }
+
+    /**
+     * Starts fetching installed apps and counting the non-system apps
+     */
+    public void startLoading() {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            List<ApplicationInfo> appList = mContext.getPackageManager()
+                    .getInstalledApplications(PackageManager.MATCH_DISABLED_COMPONENTS
+                            | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS);
+
+            int appCount = 0;
+            for (ApplicationInfo applicationInfo : appList) {
+                if (shouldCountApp(applicationInfo)) {
+                    appCount++;
+                }
+            }
+            int finalAppCount = appCount;
+            for (InstalledAppCountListener listener : mInstalledAppCountListeners) {
+                ThreadUtils.postOnMainThread(() -> listener
+                        .onInstalledAppCountLoaded(finalAppCount));
+            }
+        });
+    }
+
+    @VisibleForTesting
+    boolean shouldCountApp(ApplicationInfo applicationInfo) {
+        if ((applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
+            return true;
+        }
+        if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+            return true;
+        }
+        int userId = UserHandle.getUserId(applicationInfo.uid);
+        Intent launchIntent = new Intent(Intent.ACTION_MAIN, null)
+                .addCategory(Intent.CATEGORY_LAUNCHER)
+                .setPackage(applicationInfo.packageName);
+        List<ResolveInfo> intents = mContext.getPackageManager().queryIntentActivitiesAsUser(
+                launchIntent,
+                PackageManager.MATCH_DISABLED_COMPONENTS
+                        | PackageManager.MATCH_DIRECT_BOOT_AWARE
+                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
+                userId);
+        return intents != null && !intents.isEmpty();
+    }
+
+    /**
+     * Callback that is called once the number of installed applications is counted.
+     */
+    public interface InstalledAppCountListener {
+        /**
+         * Called when the apps are successfully loaded from PackageManager and non-system apps are
+         * counted.
+         */
+        void onInstalledAppCountLoaded(int appCount);
+    }
+}
diff --git a/src/com/android/car/settings/applications/NotificationsPreferenceController.java b/src/com/android/car/settings/applications/NotificationsPreferenceController.java
index 3236f62..6c4c264 100644
--- a/src/com/android/car/settings/applications/NotificationsPreferenceController.java
+++ b/src/com/android/car/settings/applications/NotificationsPreferenceController.java
@@ -16,38 +16,27 @@
 
 package com.android.car.settings.applications;
 
-import static android.app.NotificationManager.IMPORTANCE_NONE;
-import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
-
-import android.app.INotificationManager;
-import android.app.NotificationChannel;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.content.pm.PackageInfo;
-import android.os.ServiceManager;
 
 import androidx.preference.TwoStatePreference;
 
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-import com.android.internal.annotations.VisibleForTesting;
+import com.android.car.settings.notifications.BaseNotificationsPreferenceController;
 
 /**
  * Controller for preference which enables / disables showing notifications for an application.
  */
-public class NotificationsPreferenceController extends PreferenceController<TwoStatePreference> {
+public class NotificationsPreferenceController extends
+        BaseNotificationsPreferenceController<TwoStatePreference> {
 
     private static final Logger LOG = new Logger(NotificationsPreferenceController.class);
 
     private String mPackageName;
     private int mUid;
 
-    @VisibleForTesting
-    INotificationManager mNotificationManager =
-            INotificationManager.Stub.asInterface(
-                    ServiceManager.getService(Context.NOTIFICATION_SERVICE));
-
     public NotificationsPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
@@ -68,40 +57,12 @@
 
     @Override
     protected void updateState(TwoStatePreference preference) {
-        preference.setChecked(isNotificationsEnabled());
+        preference.setChecked(areNotificationsEnabled(mPackageName, mUid));
     }
 
     @Override
     protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
         boolean enabled = (boolean) newValue;
-
-        try {
-            if (mNotificationManager.onlyHasDefaultChannel(mPackageName, mUid)) {
-                NotificationChannel defaultChannel =
-                        mNotificationManager.getNotificationChannelForPackage(
-                                mPackageName,
-                                mUid,
-                                NotificationChannel.DEFAULT_CHANNEL_ID,
-                                /* conversationId= */ null,
-                                /* includeDeleted= */ true);
-                defaultChannel.setImportance(enabled ? IMPORTANCE_UNSPECIFIED : IMPORTANCE_NONE);
-                mNotificationManager
-                        .updateNotificationChannelForPackage(mPackageName, mUid, defaultChannel);
-            }
-            mNotificationManager.setNotificationsEnabledForPackage(mPackageName, mUid, enabled);
-        } catch (Exception e) {
-            LOG.w("Error querying notification setting for package");
-            return false;
-        }
-        return true;
-    }
-
-    private boolean isNotificationsEnabled() {
-        try {
-            return mNotificationManager.areNotificationsEnabledForPackage(mPackageName, mUid);
-        } catch (Exception e) {
-            LOG.w("Error querying notification setting for package");
-            return false;
-        }
+        return toggleNotificationsSetting(mPackageName, mUid, enabled);
     }
 }
diff --git a/src/com/android/car/settings/applications/PeakPerformancePreferenceController.java b/src/com/android/car/settings/applications/PeakPerformancePreferenceController.java
new file mode 100644
index 0000000..c24a0ec
--- /dev/null
+++ b/src/com/android/car/settings/applications/PeakPerformancePreferenceController.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.watchdog.CarWatchdogManager;
+import android.car.watchdog.PackageKillableState;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.os.UserHandle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.Objects;
+
+/**
+ * Controller for preference which enables / disables I/O overuse killing for an application.
+ */
+public class PeakPerformancePreferenceController extends PreferenceController<TwoStatePreference> {
+    private static final Logger LOG = new Logger(PeakPerformancePreferenceController.class);
+
+    @VisibleForTesting
+    static final String TURN_OFF_PEAK_PERFORMANCE_DIALOG_TAG =
+            "com.android.car.settings.applications.TurnOffPeakPerformanceDialog";
+
+    private final Object mLock = new Object();
+    @GuardedBy("mLock")
+    private CarWatchdogManager mCarWatchdogManager;
+
+    private Car mCar;
+    private String mPackageName;
+    private UserHandle mUserHandle;
+    private int mKillableState;
+
+    public PeakPerformancePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        if (mCar != null && mCar.isConnected()) {
+            mCar.disconnect();
+            mCar = null;
+        }
+        mCar = Car.createCar(getContext(), null, Car.CAR_WAIT_TIMEOUT_WAIT_FOREVER,
+                (Car car, boolean ready) -> {
+                    synchronized (mLock) {
+                        if (ready) {
+                            mCarWatchdogManager = (CarWatchdogManager) car.getCarManager(
+                                    Car.CAR_WATCHDOG_SERVICE);
+                        } else {
+                            mCarWatchdogManager = null;
+                        }
+                    }
+                });
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        if (mCar != null) {
+            mCar.disconnect();
+            mCar = null;
+        }
+    }
+
+    /**
+     * Set the package info of the application.
+     */
+    public void setPackageInfo(PackageInfo packageInfo) {
+        mPackageName = packageInfo.packageName;
+        mUserHandle = UserHandle.getUserHandleForUid(packageInfo.applicationInfo.uid);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        mKillableState = getKillableState();
+        preference.setSummary(getContext().getString(R.string.peak_performance_summary));
+        preference.setChecked(mKillableState == PackageKillableState.KILLABLE_STATE_YES);
+        preference.setEnabled(mKillableState != PackageKillableState.KILLABLE_STATE_NEVER);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        if (mKillableState == PackageKillableState.KILLABLE_STATE_NEVER) {
+            return false;
+        }
+
+        boolean shouldKill = (boolean) newValue;
+
+        // If shouldKill is true, switch toggle going from OFF to ON.
+        if (shouldKill) {
+            setKillableState(true);
+            preference.setChecked(true);
+            mKillableState = PackageKillableState.KILLABLE_STATE_YES;
+        } else {
+            ConfirmationDialogFragment dialogFragment =
+                    new ConfirmationDialogFragment.Builder(getContext())
+                            .setTitle(R.string.peak_performance_dialog_title)
+                            .setMessage(R.string.peak_performance_dialog_text)
+                            .setPositiveButton(R.string.peak_performance_dialog_action_off,
+                                    arguments -> {
+                                        setKillableState(false);
+                                        preference.setChecked(false);
+                                        mKillableState = PackageKillableState.KILLABLE_STATE_NO;
+                                    })
+                            .setNegativeButton(
+                                    R.string.peak_performance_dialog_action_on,
+                                    /* rejectListener= */null)
+                            .build();
+            getFragmentController().showDialog(dialogFragment,
+                    TURN_OFF_PEAK_PERFORMANCE_DIALOG_TAG);
+        }
+        return shouldKill;
+    }
+
+    private int getKillableState() {
+        synchronized (mLock) {
+            return Objects.requireNonNull(mCarWatchdogManager).getPackageKillableStatesAsUser(
+                    mUserHandle).stream()
+                    .filter(pks -> pks.getPackageName().equals(mPackageName))
+                    .findFirst().map(PackageKillableState::getKillableState).orElse(-1);
+        }
+    }
+
+    private void setKillableState(boolean isKillable) {
+        synchronized (mLock) {
+            mCarWatchdogManager.setKillablePackageAsUser(mPackageName, mUserHandle, isKillable);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/RecentAppsGroupPreferenceController.java b/src/com/android/car/settings/applications/RecentAppsGroupPreferenceController.java
new file mode 100644
index 0000000..0b6a36c
--- /dev/null
+++ b/src/com/android/car/settings/applications/RecentAppsGroupPreferenceController.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Class that controls visibility based on whether there have been recently used apps.
+ * Hidden if there have are no recently used apps.
+ */
+public class RecentAppsGroupPreferenceController extends PreferenceController<PreferenceGroup>
+        implements RecentAppsItemManager.RecentAppStatsListener {
+
+    // In most cases, device has recently opened apps. So, assume true by default.
+    private boolean mAreThereRecentlyUsedApps = true;
+
+    public RecentAppsGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mAreThereRecentlyUsedApps ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    public void onRecentAppStatsLoaded(List<UsageStats> recentAppStats) {
+        mAreThereRecentlyUsedApps = !recentAppStats.isEmpty();
+        refreshUi();
+    }
+}
diff --git a/src/com/android/car/settings/applications/RecentAppsItemManager.java b/src/com/android/car/settings/applications/RecentAppsItemManager.java
new file mode 100644
index 0000000..37181fb
--- /dev/null
+++ b/src/com/android/car/settings/applications/RecentAppsItemManager.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications;
+
+import android.app.Application;
+import android.app.usage.UsageStats;
+import android.app.usage.UsageStatsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.applications.AppUtils;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Class for fetching and returning recently used apps. Largely derived from
+ * {@link com.android.settings.applications.RecentAppStatsMixin}.
+ */
+public class RecentAppsItemManager implements Comparator<UsageStats> {
+
+    private static final Logger LOG = new Logger(RecentAppsItemManager.class);
+
+    @VisibleForTesting
+    final List<UsageStats> mRecentApps;
+    private final int mUserId;
+    private final int mMaximumApps;
+    private final Context mContext;
+    private final PackageManager mPm;
+    private final UsageStatsManager mUsageStatsManager;
+    private final ApplicationsState mApplicationsState;
+    private final SparseArray<RecentAppStatsListener> mAppStatsListeners;
+    private final int mDaysThreshold;
+    private final List<String> mIgnoredPackages;
+    private Calendar mCalendar;
+
+    public RecentAppsItemManager(Context context, int maximumApps) {
+        this(context, maximumApps, ApplicationsState.getInstance(
+                (Application) context.getApplicationContext()));
+    }
+
+    @VisibleForTesting
+    RecentAppsItemManager(Context context, int maximumApps, ApplicationsState applicationsState) {
+        mContext = context;
+        mMaximumApps = maximumApps;
+        mUserId = UserHandle.myUserId();
+        mPm = mContext.getPackageManager();
+        mUsageStatsManager = mContext.getSystemService(UsageStatsManager.class);
+        mApplicationsState = applicationsState;
+        mRecentApps = new ArrayList<>();
+        mAppStatsListeners = new SparseArray<>();
+        mDaysThreshold = mContext.getResources()
+                .getInteger(R.integer.recent_apps_days_threshold);
+        mIgnoredPackages = Arrays.asList(mContext.getResources()
+                .getStringArray(R.array.recent_apps_ignored_packages));
+    }
+
+    /**
+     * Starts fetching recently used apps
+     */
+    public void startLoading() {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            loadDisplayableRecentApps(mMaximumApps);
+            for (int i = 0; i < mAppStatsListeners.size(); i++) {
+                int finalIndex = i;
+                ThreadUtils.postOnMainThread(() -> mAppStatsListeners.valueAt(finalIndex)
+                        .onRecentAppStatsLoaded(mRecentApps));
+            }
+        });
+    }
+
+    @Override
+    public final int compare(UsageStats a, UsageStats b) {
+        // return by descending order
+        return Long.compare(b.getLastTimeUsed(), a.getLastTimeUsed());
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void addListener(@NonNull RecentAppStatsListener listener) {
+        mAppStatsListeners.append(mAppStatsListeners.size(), listener);
+    }
+
+    @VisibleForTesting
+    void loadDisplayableRecentApps(int number) {
+        mRecentApps.clear();
+        mCalendar = Calendar.getInstance();
+        mCalendar.add(Calendar.DAY_OF_YEAR, -mDaysThreshold);
+        List<UsageStats> mStats = mUsageStatsManager.queryUsageStats(
+                        UsageStatsManager.INTERVAL_BEST, mCalendar.getTimeInMillis(),
+                        System.currentTimeMillis());
+
+        Map<String, UsageStats> map = new ArrayMap<>();
+        for (UsageStats pkgStats : mStats) {
+            if (!shouldIncludePkgInRecents(pkgStats)) {
+                continue;
+            }
+            String pkgName = pkgStats.getPackageName();
+            UsageStats existingStats = map.get(pkgName);
+            if (existingStats == null) {
+                map.put(pkgName, pkgStats);
+            } else {
+                existingStats.add(pkgStats);
+            }
+        }
+        List<UsageStats> packageStats = new ArrayList<>();
+        packageStats.addAll(map.values());
+        Collections.sort(packageStats, /* comparator= */ this);
+        int count = 0;
+        for (UsageStats stat : packageStats) {
+            ApplicationsState.AppEntry appEntry = mApplicationsState.getEntry(
+                    stat.getPackageName(), mUserId);
+            if (appEntry == null) {
+                continue;
+            }
+            mRecentApps.add(stat);
+            count++;
+            if (count >= number) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * Whether or not the app should be included in recent list.
+     */
+    private boolean shouldIncludePkgInRecents(UsageStats stat) {
+        String pkgName = stat.getPackageName();
+        if (stat.getLastTimeUsed() < mCalendar.getTimeInMillis()) {
+            LOG.d("Invalid timestamp (usage time is more than 24 hours ago), skipping "
+                    + pkgName);
+            return false;
+        }
+
+        if (mIgnoredPackages.contains(pkgName)) {
+            LOG.d("System package, skipping " + pkgName);
+            return false;
+        }
+
+        if (AppUtils.isHiddenSystemModule(mContext, pkgName)) {
+            return false;
+        }
+
+        Intent launchIntent = new Intent().addCategory(Intent.CATEGORY_LAUNCHER)
+                .setPackage(pkgName);
+
+        if (mPm.resolveActivity(launchIntent, 0) == null) {
+            // Not visible on launcher -> likely not a user visible app, skip if non-instant.
+            ApplicationsState.AppEntry appEntry =
+                    mApplicationsState.getEntry(pkgName, mUserId);
+            if (appEntry == null || appEntry.info == null || !AppUtils.isInstant(appEntry.info)) {
+                LOG.d("Not a user visible or instant app, skipping " + pkgName);
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Callback that is called once the recently used apps have been fetched.
+     */
+    public interface RecentAppStatsListener {
+        /**
+         * Called when the recently used apps are successfully loaded
+         */
+        void onRecentAppStatsLoaded(List<UsageStats> recentAppStats);
+    }
+}
diff --git a/src/com/android/car/settings/applications/RecentAppsListPreferenceController.java b/src/com/android/car/settings/applications/RecentAppsListPreferenceController.java
new file mode 100644
index 0000000..cce0b56
--- /dev/null
+++ b/src/com/android/car/settings/applications/RecentAppsListPreferenceController.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.app.Application;
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+import android.text.format.DateUtils;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiPreference;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class responsible for displaying recently used apps.
+ */
+public class RecentAppsListPreferenceController extends PreferenceController<PreferenceCategory>
+        implements RecentAppsItemManager.RecentAppStatsListener {
+
+    private ApplicationsState mApplicationsState;
+    private int mUserId;
+    private List<UsageStats> mRecentAppStats;
+    private int mMaxRecentAppsCount;
+
+    public RecentAppsListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions, ApplicationsState
+                .getInstance((Application) context.getApplicationContext()));
+    }
+
+    @VisibleForTesting
+    RecentAppsListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            ApplicationsState applicationsState) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mApplicationsState = applicationsState;
+        mUserId = UserHandle.myUserId();
+        mRecentAppStats = new ArrayList<>();
+        mMaxRecentAppsCount = getContext().getResources().getInteger(
+                R.integer.recent_apps_max_count);
+    }
+
+    @Override
+    public void onRecentAppStatsLoaded(List<UsageStats> recentAppStats) {
+        mRecentAppStats = recentAppStats;
+        refreshUi();
+    }
+
+    @Override
+    protected Class<PreferenceCategory> getPreferenceType() {
+        return PreferenceCategory.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceCategory preferenceCategory) {
+        preferenceCategory.setVisible(!mRecentAppStats.isEmpty());
+        preferenceCategory.removeAll();
+
+        int prefCount = 0;
+        for (UsageStats usageStats : mRecentAppStats) {
+            Preference pref = createPreference(getContext(), usageStats);
+
+            if (pref != null) {
+                getPreference().addPreference(pref);
+                prefCount++;
+                if (prefCount == mMaxRecentAppsCount) {
+                    break;
+                }
+            }
+        }
+    }
+
+    private Preference createPreference(Context context, UsageStats usageStats) {
+        String pkgName = usageStats.getPackageName();
+        ApplicationsState.AppEntry appEntry = mApplicationsState.getEntry(pkgName, mUserId);
+
+        if (appEntry == null) {
+            return null;
+        }
+
+        Preference pref = new CarUiPreference(context);
+        pref.setTitle(appEntry.label);
+        pref.setIcon(appEntry.icon);
+        pref.setSummary(DateUtils.getRelativeTimeSpanString(usageStats.getLastTimeStamp(),
+                System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS));
+        pref.setOnPreferenceClickListener(p -> {
+            getFragmentController().launchFragment(
+                    ApplicationDetailsFragment.getInstance(pkgName));
+            return true;
+        });
+
+        return pref;
+    }
+}
diff --git a/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceController.java b/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceController.java
new file mode 100644
index 0000000..4f2ca8d
--- /dev/null
+++ b/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Class responsible for directing users to view the apps list page.
+ * Sets title based on number of installed non-system apps.
+ */
+public class RecentAppsViewAllPreferenceController extends PreferenceController<Preference>
+        implements InstalledAppCountItemManager.InstalledAppCountListener {
+
+    public RecentAppsViewAllPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public void onInstalledAppCountLoaded(int appCount) {
+        getPreference().setTitle(getContext().getResources().getString(
+                R.string.apps_view_all_apps_title, appCount));
+    }
+}
diff --git a/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceController.java b/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceController.java
new file mode 100644
index 0000000..4dab300
--- /dev/null
+++ b/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.appinfo;
+
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_DEFAULT;
+import static android.app.AppOpsManager.MODE_IGNORED;
+import static android.app.AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED;
+
+import static com.android.car.settings.applications.ApplicationsUtils.isHibernationEnabled;
+
+import android.app.AppOpsManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+import android.util.Slog;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * A PreferenceController handling the logic for exempting hibernation of app
+ */
+public final class HibernationSwitchPreferenceController
+        extends PreferenceController<TwoStatePreference>
+        implements AppOpsManager.OnOpChangedListener {
+    private static final String TAG = "HibernationSwitchPrefController";
+    private String mPackageName;
+    private final AppOpsManager mAppOpsManager;
+    private int mPackageUid;
+    private boolean mIsPackageSet;
+    private boolean mIsPackageExemptByDefault;
+
+    public HibernationSwitchPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAppOpsManager = context.getSystemService(AppOpsManager.class);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return isHibernationEnabled() && mIsPackageSet ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        if (mIsPackageSet) {
+            mAppOpsManager.startWatchingMode(
+                    OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mPackageName, this);
+        }
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mAppOpsManager.stopWatchingMode(this);
+    }
+
+    /**
+     * Set the package. And also retrieve details from package manager. Some packages may be
+     * exempted from hibernation by default. This method should only be called to initialize the
+     * controller.
+     * @param packageName The name of the package whose hibernation state to be managed.
+     */
+    public void setPackageName(String packageName) {
+        mPackageName = packageName;
+        PackageManager packageManager = getContext().getPackageManager();
+
+        // Q- packages exempt by default, except R- on Auto since Auto-Revoke was skipped in R
+        int maxTargetSdkVersionForExemptApps = android.os.Build.VERSION_CODES.R;
+        try {
+            mPackageUid = packageManager.getPackageUid(packageName, /* flags= */ 0);
+            mIsPackageExemptByDefault = packageManager.getTargetSdkVersion(packageName)
+                    <= maxTargetSdkVersionForExemptApps;
+            mIsPackageSet = true;
+        } catch (PackageManager.NameNotFoundException e) {
+            Slog.w(TAG, "Package [" + mPackageName + "] is not found!");
+            mIsPackageSet = false;
+        }
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        super.updateState(preference);
+        preference.setChecked(!isPackageHibernationExemptByUser());
+    }
+
+    private boolean isPackageHibernationExemptByUser() {
+        if (!mIsPackageSet) return true;
+        int mode = mAppOpsManager.unsafeCheckOpNoThrow(
+                OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mPackageUid, mPackageName);
+
+        return mode == MODE_DEFAULT ? mIsPackageExemptByDefault : mode != MODE_ALLOWED;
+    }
+
+    @Override
+    public void onOpChanged(String op, String packageName) {
+        if (OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED.equals(op)
+                && TextUtils.equals(mPackageName, packageName)) {
+            refreshUi();
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        try {
+            mAppOpsManager.setUidMode(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mPackageUid,
+                    (boolean) newValue ? MODE_ALLOWED : MODE_IGNORED);
+        } catch (RuntimeException e) {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/AssistantAndVoiceEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/AssistantAndVoiceEntryPreferenceController.java
new file mode 100644
index 0000000..faa0cca
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/AssistantAndVoiceEntryPreferenceController.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.applications.defaultapps.DefaultAppEntryBasePreferenceController;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+/**
+ * Business logic to show the currently selected default assist.
+ */
+public class AssistantAndVoiceEntryPreferenceController extends
+        DefaultAppEntryBasePreferenceController<Preference> {
+
+    private final AssistUtils mAssistUtils;
+
+    public AssistantAndVoiceEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAssistUtils = new AssistUtils(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Nullable
+    protected DefaultAppInfo getCurrentDefaultAppInfo() {
+        ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
+        if (cn == null) {
+            return null;
+        }
+        return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+                getCurrentProcessUserId(), cn);
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/AssistantAndVoiceFragment.java b/src/com/android/car/settings/applications/assist/AssistantAndVoiceFragment.java
new file mode 100644
index 0000000..a509cf7
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/AssistantAndVoiceFragment.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.assist;
+
+import android.provider.Settings;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/** Assistant management settings screen. */
+@SearchIndexable
+public class AssistantAndVoiceFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.assistant_and_voice_fragment;
+    }
+
+    /**
+     * Data provider for Settings Search.
+     */
+    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new CarBaseSearchIndexProvider(R.xml.assistant_and_voice_fragment,
+                    Settings.ACTION_VOICE_INPUT_SETTINGS);
+}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistActivity.java b/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
deleted file mode 100644
index 3ac4fa5..0000000
--- a/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.assist;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.common.BaseCarSettingsActivity;
-
-/**
- * Starts {@link ManageAssistFragment} in a separate activity to help with the back navigation
- * flow. This setting differs from the other settings in that the user arrives here from the
- * PermissionController rather than from within the Settings app itself.
- */
-public class ManageAssistActivity extends BaseCarSettingsActivity {
-
-    @Nullable
-    @Override
-    protected Fragment getInitialFragment() {
-        return new ManageAssistFragment();
-    }
-}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
deleted file mode 100644
index b817e81..0000000
--- a/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.assist;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.ComponentName;
-import android.content.Context;
-
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-
-import com.android.car.settings.applications.defaultapps.DefaultAppEntryBasePreferenceController;
-import com.android.car.settings.common.FragmentController;
-import com.android.internal.app.AssistUtils;
-import com.android.settingslib.applications.DefaultAppInfo;
-
-/**
- * Business logic to show the currently selected default assist.
- */
-public class ManageAssistEntryPreferenceController extends
-        DefaultAppEntryBasePreferenceController<Preference> {
-
-    private final AssistUtils mAssistUtils;
-
-    public ManageAssistEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mAssistUtils = new AssistUtils(context);
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    @Nullable
-    protected DefaultAppInfo getCurrentDefaultAppInfo() {
-        ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
-        if (cn == null) {
-            return null;
-        }
-        return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
-                getCurrentProcessUserId(), cn);
-    }
-}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistFragment.java b/src/com/android/car/settings/applications/assist/ManageAssistFragment.java
deleted file mode 100644
index 5d48de0..0000000
--- a/src/com/android/car/settings/applications/assist/ManageAssistFragment.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.assist;
-
-import android.provider.Settings;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.settingslib.search.SearchIndexable;
-
-/** Assistant management settings screen. */
-@SearchIndexable
-public class ManageAssistFragment extends SettingsFragment {
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.manage_assist_fragment;
-    }
-
-    /**
-     * Data provider for Settings Search.
-     */
-    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new CarBaseSearchIndexProvider(R.xml.manage_assist_fragment,
-                    Settings.ACTION_VOICE_INPUT_SETTINGS);
-}
diff --git a/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java
index 80b8f4e..a653925 100644
--- a/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java
+++ b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java
@@ -50,7 +50,8 @@
 
     @Override
     protected void updateState(Preference preference) {
-        preference.setEnabled(!isBrowserApp());
+        boolean hasDomains = mDomains != null && mDomains.size() > 0;
+        preference.setEnabled(!isBrowserApp() && hasDomains);
         preference.setSummary(
                 DomainUrlsUtils.getDomainsSummary(getContext(), getPackageName(),
                         getCurrentUserId(), mDomains));
diff --git a/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java
index e5e599b..c8e00d5 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java
@@ -20,6 +20,7 @@
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.R;
@@ -31,9 +32,20 @@
 public class BluetoothAddressPreferenceController extends
         BluetoothPreferenceController<Preference> {
 
+    private final BluetoothAdapter mBluetoothAdapter;
+
     public BluetoothAddressPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                BluetoothAdapter.getDefaultAdapter());
+    }
+
+    @VisibleForTesting
+    BluetoothAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            BluetoothAdapter bluetoothAdapter) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
+        mBluetoothAdapter = bluetoothAdapter;
     }
 
     @Override
@@ -43,9 +55,9 @@
 
     @Override
     protected void updateState(Preference preference) {
-        String address = BluetoothAdapter.getDefaultAdapter().getAddress();
+        String address = mBluetoothAdapter.getAddress();
         String formattedAddress = getContext().getString(R.string.bluetooth_vehicle_mac_address,
                 address);
-        preference.setTitle(formattedAddress);
+        preference.setSummary(formattedAddress);
     }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java
index 8a65420..33bde19 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java
@@ -18,30 +18,56 @@
 
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
+import android.bluetooth.BluetoothProfile;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
+import android.os.UserManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceGroup;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.CarUxRestrictionsHelper;
 import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.MultiActionPreference;
+import com.android.car.settings.common.ToggleButtonActionItem;
 import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+
 
 /**
- * Displays a list of bonded (paired) Bluetooth devices. Clicking on a device will attempt a
- * connection with that device. If a device is already connected, a click will prompt the user to
- * disconnect. Devices are shown with an addition affordance which launches the device details page.
+ * Displays a list of bonded (paired) Bluetooth devices. Clicking on a device launch the device
+ * details page. Additional buttons to will connect/disconnect from the device, toggle phone calls,
+ * and toggle media audio.
  */
 public class BluetoothBondedDevicesPreferenceController extends
-        BluetoothDevicesGroupPreferenceController {
+        BluetoothDevicesGroupPreferenceController implements
+        BluetoothDevicePreference.UpdateToggleButtonListener {
+
+    private static final MultiActionPreference.ActionItem BLUETOOTH_BUTTON =
+            MultiActionPreference.ActionItem.ACTION_ITEM1;
+    private static final MultiActionPreference.ActionItem PHONE_BUTTON =
+            MultiActionPreference.ActionItem.ACTION_ITEM2;
+    private static final MultiActionPreference.ActionItem MEDIA_BUTTON =
+            MultiActionPreference.ActionItem.ACTION_ITEM3;
+
+    private boolean mShowDeviceDetails = true;
 
     public BluetoothBondedDevicesPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
     }
 
+    @VisibleForTesting
+    BluetoothBondedDevicesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            LocalBluetoothManager localBluetoothManager, UserManager userManager) {
+        super(context, preferenceKey, fragmentController, uxRestrictions, localBluetoothManager,
+                userManager);
+    }
+
     @Override
     protected BluetoothDeviceFilter.Filter getDeviceFilter() {
         return BluetoothDeviceFilter.BONDED_DEVICE_FILTER;
@@ -50,20 +76,21 @@
     @Override
     protected BluetoothDevicePreference createDevicePreference(CachedBluetoothDevice cachedDevice) {
         BluetoothDevicePreference pref = super.createDevicePreference(cachedDevice);
-        pref.setSecondaryActionIcon(R.drawable.ic_settings_gear);
-        pref.setOnSecondaryActionClickListener(() -> getFragmentController().launchFragment(
-                BluetoothDeviceDetailsFragment.newInstance(cachedDevice)));
+        pref.getActionItem(BLUETOOTH_BUTTON).setVisible(true);
+        pref.getActionItem(PHONE_BUTTON).setVisible(true);
+        pref.getActionItem(MEDIA_BUTTON).setVisible(true);
+        pref.setToggleButtonUpdateListener(this);
+        updateBluetoothActionItemAvailability(pref);
+        updateActionAvailability(pref, true);
+
         return pref;
     }
 
     @Override
     protected void onDeviceClicked(CachedBluetoothDevice cachedDevice) {
-        if (cachedDevice.isConnected()) {
-            getFragmentController().showDialog(
-                    BluetoothDisconnectConfirmDialogFragment.newInstance(cachedDevice),
-                    /* tag= */ null);
-        } else {
-            cachedDevice.connect(/* connectAllProfiles= */ true);
+        if (mShowDeviceDetails) {
+            getFragmentController().launchFragment(
+                    BluetoothDeviceDetailsFragment.newInstance(cachedDevice));
         }
     }
 
@@ -76,8 +103,9 @@
     protected void updateState(PreferenceGroup preferenceGroup) {
         super.updateState(preferenceGroup);
 
-        boolean hasUserRestriction = getUserManager().hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH);
-        updateActionVisibility(preferenceGroup, !hasUserRestriction);
+        boolean hasUserRestriction = getUserManager()
+                .hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH);
+        updateActionAvailability(preferenceGroup, hasUserRestriction);
     }
 
     @Override
@@ -85,14 +113,155 @@
         super.onApplyUxRestrictions(uxRestrictions);
 
         if (CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) {
-            updateActionVisibility(getPreference(), /* isActionVisible= */ false);
+            updateActionAvailability(getPreference(), /* isRestricted= */ true);
         }
     }
 
-    private void updateActionVisibility(PreferenceGroup group, boolean isActionVisible) {
+    @Override
+    public void updateToggleButtonState(BluetoothDevicePreference preference) {
+        boolean hasUserRestriction = getUserManager()
+                .hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH);
+        updateActionAvailability(preference, hasUserRestriction);
+    }
+
+    private void updateActionAvailability(PreferenceGroup group, boolean isRestricted) {
         for (int i = 0; i < group.getPreferenceCount(); i++) {
-            ((BluetoothDevicePreference) group.getPreference(i)).setSecondaryActionVisible(
-                    isActionVisible);
+            BluetoothDevicePreference preference =
+                    (BluetoothDevicePreference) group.getPreference(i);
+            updateActionAvailability(preference, isRestricted);
         }
     }
+
+    private void updateActionAvailability(BluetoothDevicePreference preference,
+            boolean isRestricted) {
+        if (!isRestricted) {
+            setButtonsCheckedAndListeners(preference);
+            mShowDeviceDetails = true;
+        } else {
+            updatePhoneActionItemAvailability(preference, true);
+            updateMediaActionItemAvailability(preference, true);
+            mShowDeviceDetails = false;
+        }
+    }
+
+    private void toggleBluetoothConnectivity(boolean connect, CachedBluetoothDevice cachedDevice) {
+        if (connect) {
+            cachedDevice.connect();
+        } else if (cachedDevice.isConnected()) {
+            cachedDevice.disconnect();
+        }
+    }
+
+    private void setButtonsCheckedAndListeners(BluetoothDevicePreference preference) {
+        CachedBluetoothDevice cachedDevice = preference.getCachedDevice();
+
+        // If device is currently attempting to connect/disconnect, disable further actions
+        if (cachedDevice.isBusy()) {
+            disableAllActionItems(preference);
+            // There is a case where on creation the cached device will try to automatically connect
+            // but does not report itself as busy yet. This ensures that the bluetooth button state
+            // is correct (should be checked in either connecting or disconnecting states).
+            preference.getActionItem(BLUETOOTH_BUTTON).setChecked(true);
+            return;
+        }
+
+        LocalBluetoothProfile phoneProfile = null;
+        LocalBluetoothProfile mediaProfile = null;
+        for (LocalBluetoothProfile profile : cachedDevice.getProfiles()) {
+            if (profile.getProfileId() == BluetoothProfile.HEADSET_CLIENT) {
+                phoneProfile = profile;
+            } else if (profile.getProfileId() == BluetoothProfile.A2DP_SINK) {
+                mediaProfile = profile;
+            }
+        }
+        LocalBluetoothProfile finalPhoneProfile = phoneProfile;
+        LocalBluetoothProfile finalMediaProfile = mediaProfile;
+        boolean isConnected = cachedDevice.isConnected();
+
+        // Setup up bluetooth button
+        updateBluetoothActionItemAvailability(preference);
+        ToggleButtonActionItem bluetoothItem = preference.getActionItem(BLUETOOTH_BUTTON);
+        bluetoothItem.setChecked(isConnected);
+        bluetoothItem.setOnClickListener(
+                isChecked -> {
+                    if (cachedDevice.isBusy()) {
+                        return;
+                    }
+                    // If trying to connect and both phone and media are disabled, connecting will
+                    // always fail. In this case force both profiles on.
+                    if (isChecked && finalPhoneProfile != null && finalMediaProfile != null
+                            && !finalPhoneProfile.isEnabled(cachedDevice.getDevice())
+                            && !finalMediaProfile.isEnabled(cachedDevice.getDevice())) {
+                        finalPhoneProfile.setEnabled(cachedDevice.getDevice(), true);
+                        finalMediaProfile.setEnabled(cachedDevice.getDevice(), true);
+                    }
+                    toggleBluetoothConnectivity(isChecked, cachedDevice);
+                });
+
+        if (phoneProfile == null || !isConnected) {
+            // Disable phone button
+            updatePhoneActionItemAvailability(preference, true);
+        } else {
+            // Enable phone button
+            updatePhoneActionItemAvailability(preference, false);
+            ToggleButtonActionItem phoneItem = preference.getActionItem(PHONE_BUTTON);
+            boolean phoneEnabled = phoneProfile.isEnabled(cachedDevice.getDevice());
+            phoneItem.setChecked(phoneEnabled);
+            phoneItem.setOnClickListener(isChecked ->
+                    finalPhoneProfile.setEnabled(cachedDevice.getDevice(), isChecked));
+        }
+
+        if (mediaProfile == null || !isConnected) {
+            // Disable media button
+            updateMediaActionItemAvailability(preference, true);
+        } else {
+            // Enable media button
+            updateMediaActionItemAvailability(preference, false);
+            ToggleButtonActionItem mediaItem = preference.getActionItem(MEDIA_BUTTON);
+            boolean mediaEnabled = mediaProfile.isEnabled(cachedDevice.getDevice());
+            mediaItem.setChecked(mediaEnabled);
+            mediaItem.setOnClickListener(isChecked ->
+                    finalMediaProfile.setEnabled(cachedDevice.getDevice(), isChecked));
+        }
+    }
+
+    private void updateBluetoothActionItemAvailability(BluetoothDevicePreference preference) {
+        // Run on main thread because recyclerview may still be computing layout
+        getContext().getMainExecutor().execute(() -> {
+            ToggleButtonActionItem bluetoothItem = preference.getActionItem(BLUETOOTH_BUTTON);
+            bluetoothItem.setEnabled(true);
+            bluetoothItem.setDrawable(getContext(), R.drawable.ic_bluetooth_button);
+        });
+    }
+
+    private void updatePhoneActionItemAvailability(BluetoothDevicePreference preference,
+            boolean isRestricted) {
+        // Run on main thread because recyclerview may still be computing layout
+        getContext().getMainExecutor().execute(() -> {
+            ToggleButtonActionItem phoneItem = preference.getActionItem(PHONE_BUTTON);
+            phoneItem.setEnabled(!isRestricted);
+            phoneItem.setDrawable(getContext(), isRestricted
+                    ? R.drawable.ic_bluetooth_phone_unavailable : R.drawable.ic_bluetooth_phone);
+        });
+    }
+
+    private void updateMediaActionItemAvailability(BluetoothDevicePreference preference,
+            boolean isRestricted) {
+        // Run on main thread because recyclerview may still be computing layout
+        getContext().getMainExecutor().execute(() -> {
+            ToggleButtonActionItem mediaItem = preference.getActionItem(MEDIA_BUTTON);
+            mediaItem.setEnabled(!isRestricted);
+            mediaItem.setDrawable(getContext(), isRestricted
+                    ? R.drawable.ic_bluetooth_media_unavailable : R.drawable.ic_bluetooth_media);
+        });
+    }
+
+    private void disableAllActionItems(BluetoothDevicePreference preference) {
+        // Run on main thread because recyclerview may still be computing layout
+        getContext().getMainExecutor().execute(() -> {
+            preference.getActionItem(BLUETOOTH_BUTTON).setEnabled(false);
+            preference.getActionItem(PHONE_BUTTON).setEnabled(false);
+            preference.getActionItem(MEDIA_BUTTON).setEnabled(false);
+        });
+    }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceController.java
new file mode 100644
index 0000000..7345ba4
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceController.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2020 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.car.settings.bluetooth;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActionButtonInfo;
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Displays the action buttons (connect/disconnect and forget) a remote Bluetooth device.
+ */
+public class BluetoothDeviceActionButtonsPreferenceController extends
+        BluetoothDevicePreferenceController<ActionButtonsPreference> {
+
+    public BluetoothDeviceActionButtonsPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ActionButtonsPreference> getPreferenceType() {
+        return ActionButtonsPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        updateConnectionButton(getPreference().getButton(ActionButtons.BUTTON1));
+        updateForgetButton(getPreference().getButton(ActionButtons.BUTTON2));
+    }
+
+    @Override
+    protected void updateState(ActionButtonsPreference preference) {
+        updateConnectionButton(preference.getButton(ActionButtons.BUTTON1));
+    }
+
+    private void updateConnectionButton(ActionButtonInfo button) {
+        button.setEnabled(!getCachedDevice().isBusy());
+        if (getCachedDevice().isConnected()) {
+            button.setText(R.string.disconnect).setIcon(R.drawable.ic_close).setOnClickListener(
+                    v -> getCachedDevice().disconnect());
+        } else {
+            button.setText(R.string.connect).setIcon(R.drawable.ic_add).setOnClickListener(
+                    v -> getCachedDevice().connect());
+        }
+    }
+
+    private void updateForgetButton(ActionButtonInfo button) {
+        button.setText(R.string.forget).setIcon(R.drawable.ic_delete).setOnClickListener(v -> {
+            getCachedDevice().unpair();
+            getFragmentController().goBack();
+        });
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index 83c5659..98cd861 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -25,28 +25,18 @@
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * Page which displays information for a remote Bluetooth device including the name, icon,
- * connection status, supported profiles, and MAC. Buttons are shown to enable
- * connecting/disconnecting and forgetting the device.
+ * connection status, supported profiles, and MAC.
  */
 public class BluetoothDeviceDetailsFragment extends SettingsFragment {
 
     private static final String KEY_DEVICE_ADDRESS = "device_address";
 
-    private final CachedBluetoothDevice.Callback mDeviceCallback =
-            this::updateConnectionButtonState;
-
     private CachedBluetoothDevice mCachedDevice;
-    private MenuItem mConnectionButton;
-    private MenuItem mForgetButton;
 
     /**
      * Returns a new {@link BluetoothDeviceDetailsFragment} for the given {@code device}.
@@ -60,26 +50,6 @@
     }
 
     @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mConnectionButton, mForgetButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mConnectionButton = new MenuItem.Builder(getContext()).build();
-        updateConnectionButtonState();
-        mForgetButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.forget)
-                .setOnClickListener(i -> {
-                    mCachedDevice.unpair();
-                    goBack();
-                })
-                .build();
-    }
-
-    @Override
     @XmlRes
     protected int getPreferenceScreenResId() {
         return R.xml.bluetooth_device_details_fragment;
@@ -104,34 +74,11 @@
 
         use(BluetoothDeviceNamePreferenceController.class,
                 R.string.pk_bluetooth_device_name).setCachedDevice(mCachedDevice);
+        use(BluetoothDeviceActionButtonsPreferenceController.class,
+                R.string.pk_bluetooth_device_action_buttons).setCachedDevice(mCachedDevice);
         use(BluetoothDeviceProfilesPreferenceController.class,
                 R.string.pk_bluetooth_device_profiles).setCachedDevice(mCachedDevice);
         use(BluetoothDeviceAddressPreferenceController.class,
                 R.string.pk_bluetooth_device_address).setCachedDevice(mCachedDevice);
     }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mCachedDevice.registerCallback(mDeviceCallback);
-        updateConnectionButtonState();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mCachedDevice.unregisterCallback(mDeviceCallback);
-    }
-
-    private void updateConnectionButtonState() {
-        mConnectionButton.setEnabled(!mCachedDevice.isBusy());
-        if (mCachedDevice.isConnected()) {
-            mConnectionButton.setTitle(R.string.disconnect);
-            mConnectionButton.setOnClickListener(view -> mCachedDevice.disconnect());
-        } else {
-            mConnectionButton.setTitle(R.string.connect);
-            mConnectionButton.setOnClickListener(
-                    view -> mCachedDevice.connect(/* connectAllProfiles= */ true));
-        }
-    }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
index 3d09b37..654bec8 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
@@ -16,18 +16,22 @@
 
 package com.android.car.settings.bluetooth;
 
+import android.bluetooth.BluetoothProfile;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.util.Pair;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 
 import java.util.StringJoiner;
 
@@ -59,13 +63,20 @@
         StringJoiner summaryJoiner = new StringJoiner(System.lineSeparator());
         summaryJoiner.setEmptyValue("");
 
-        String summaryText = cachedDevice.getCarConnectionSummary();
-        if (!TextUtils.isEmpty(summaryText)) {
-            summaryJoiner.add(summaryText);
+        // Manually set "Disconnected" summary since CachedBluetoothDevice.getCarConnectionSummary()
+        // does not return a string when disconnected.
+        // TODO: Move branching logic into getCarConnectionSummary()
+        if (!cachedDevice.isConnected()) {
+            summaryJoiner.add(getContext().getString(BluetoothUtils
+                    .getConnectionStateSummary(BluetoothProfile.STATE_DISCONNECTED)));
+        } else {
+            String summaryText = cachedDevice.getCarConnectionSummary();
+            if (!TextUtils.isEmpty(summaryText)) {
+                summaryJoiner.add(summaryText);
+            }
         }
         // If hearing aids are connected, two battery statuses should be shown.
-        String pairDeviceSummary =
-                getBluetoothManager().getCachedDeviceManager().getSubDeviceSummary(cachedDevice);
+        String pairDeviceSummary = getCachedDeviceManager().getSubDeviceSummary(cachedDevice);
         if (!TextUtils.isEmpty(pairDeviceSummary)) {
             summaryJoiner.add(pairDeviceSummary);
         }
@@ -83,4 +94,9 @@
                 RemoteRenameDialogFragment.TAG);
         return true;
     }
+
+    @VisibleForTesting
+    CachedBluetoothDeviceManager getCachedDeviceManager() {
+        return getBluetoothManager().getCachedDeviceManager();
+    }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java
index 2e63e71..2c08f28 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java
@@ -17,7 +17,6 @@
 package com.android.car.settings.bluetooth;
 
 import android.content.Context;
-import android.os.Bundle;
 
 import androidx.annotation.XmlRes;
 
@@ -54,11 +53,6 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
     public void onStart() {
         super.onStart();
         mManager.setForegroundActivity(requireActivity());
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
index 4b17e27..a200d7c 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
@@ -16,17 +16,22 @@
 
 package com.android.car.settings.bluetooth;
 
+import android.bluetooth.BluetoothProfile;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.SystemProperties;
+import android.util.AttributeSet;
 import android.util.Pair;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.preference.Preference;
 
 import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
-import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.car.settings.common.MultiActionPreference;
+import com.android.car.settings.common.ToggleButtonActionItem;
+import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 
 /**
@@ -37,7 +42,7 @@
  * CachedBluetoothDevice#compareTo(CachedBluetoothDevice)}. If two devices are considered equal, the
  * default preference sort ordering is used (see {@link #compareTo(Preference)}.
  */
-public class BluetoothDevicePreference extends CarUiTwoActionIconPreference {
+public class BluetoothDevicePreference extends MultiActionPreference {
     private static final String BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY =
             "persist.bluetooth.showdeviceswithoutnames";
 
@@ -45,13 +50,26 @@
     private final boolean mShowDevicesWithoutNames;
     private final CachedBluetoothDevice.Callback mDeviceCallback = this::refreshUi;
 
+    private UpdateToggleButtonListener mUpdateToggleButtonListener;
+
     public BluetoothDevicePreference(Context context, CachedBluetoothDevice cachedDevice) {
         super(context);
         mCachedDevice = cachedDevice;
         mShowDevicesWithoutNames = SystemProperties.getBoolean(
                 BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY, false);
-        // Hide action by default.
-        setSecondaryActionVisible(false);
+    }
+
+    @Override
+    protected void init(@Nullable AttributeSet attrs) {
+        mActionItemArray[0] = new ToggleButtonActionItem(this);
+        mActionItemArray[1] = new ToggleButtonActionItem(this);
+        mActionItemArray[2] = new ToggleButtonActionItem(this);
+        super.init(attrs);
+
+        // Hide actions by default.
+        mActionItemArray[0].setVisible(false);
+        mActionItemArray[1].setVisible(false);
+        mActionItemArray[2].setVisible(false);
     }
 
     /**
@@ -61,6 +79,14 @@
         return mCachedDevice;
     }
 
+    /**
+     * Sets the {@link UpdateToggleButtonListener} that will be called when the toggle buttons
+     * may need to change state.
+     */
+    public void setToggleButtonUpdateListener(UpdateToggleButtonListener listener) {
+        mUpdateToggleButtonListener = listener;
+    }
+
     @Override
     public void onAttached() {
         super.onAttached();
@@ -76,9 +102,18 @@
 
     private void refreshUi() {
         setTitle(mCachedDevice.getName());
-        setSummary(mCachedDevice.getCarConnectionSummary());
 
-        final Pair<Drawable, String> pair = com.android.settingslib.bluetooth.BluetoothUtils
+        // If connected, we only want the "Connected" text without details (ex. "no media")
+        // TODO: Move branching logic into getCarConnectionSummary()
+        if (mCachedDevice.isConnected()) {
+            setSummary(getContext().getString(BluetoothUtils
+                    .getConnectionStateSummary(BluetoothProfile.STATE_CONNECTED),
+                    /* appended text= */ ""));
+        } else {
+            setSummary(mCachedDevice.getCarConnectionSummary());
+        }
+
+        Pair<Drawable, String> pair = com.android.settingslib.bluetooth.BluetoothUtils
                 .getBtClassDrawableWithDescription(getContext(), mCachedDevice);
         if (pair.first != null) {
             setIcon(pair.first);
@@ -88,6 +123,9 @@
         setEnabled(!mCachedDevice.isBusy());
         setVisible(mShowDevicesWithoutNames || mCachedDevice.hasHumanReadableName());
 
+        if (mUpdateToggleButtonListener != null) {
+            mUpdateToggleButtonListener.updateToggleButtonState(this);
+        }
         // Notify since the ordering may have changed.
         notifyHierarchyChanged();
     }
@@ -115,4 +153,30 @@
         return mCachedDevice
                 .compareTo(((BluetoothDevicePreference) another).mCachedDevice);
     }
+
+    @Override
+    public ToggleButtonActionItem getActionItem(ActionItem actionItem) {
+        switch(actionItem) {
+            case ACTION_ITEM1:
+                return (ToggleButtonActionItem) mActionItemArray[0];
+            case ACTION_ITEM2:
+                return (ToggleButtonActionItem) mActionItemArray[1];
+            case ACTION_ITEM3:
+                return (ToggleButtonActionItem) mActionItemArray[2];
+            default:
+                throw new IllegalArgumentException("Invalid button requested");
+        }
+    }
+
+    /**
+     * Callback for when toggle buttons may need to be updated
+     */
+    public interface UpdateToggleButtonListener {
+        /**
+         * Preference state has changed and toggle button changes should be handled.
+         *
+         * @param preference the preference that has been changed
+         */
+        void updateToggleButtonState(BluetoothDevicePreference preference);
+    }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java
index 5bd9e83..955e9c8 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java
@@ -76,7 +76,7 @@
         int availabilityStatus = super.getAvailabilityStatus();
         if (availabilityStatus == AVAILABLE) {
             return getUserManager().hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
-                    ? DISABLED_FOR_USER : AVAILABLE;
+                    ? DISABLED_FOR_PROFILE : AVAILABLE;
         }
         return availabilityStatus;
     }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java
index 8548821..77a40ad 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java
@@ -20,7 +20,9 @@
 import android.bluetooth.BluetoothAdapter;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
+import android.os.UserManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 
@@ -28,6 +30,7 @@
 import com.android.settingslib.bluetooth.BluetoothCallback;
 import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -62,6 +65,14 @@
         super(context, preferenceKey, fragmentController, uxRestrictions);
     }
 
+    @VisibleForTesting
+    BluetoothDevicesGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            LocalBluetoothManager localBluetoothManager, UserManager userManager) {
+        super(context, preferenceKey, fragmentController, uxRestrictions, localBluetoothManager,
+                userManager);
+    }
+
     @Override
     protected Class<PreferenceGroup> getPreferenceType() {
         return PreferenceGroup.class;
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java
deleted file mode 100644
index 3c0fbad..0000000
--- a/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import android.app.Dialog;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.os.Bundle;
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.car.settings.R;
-import com.android.car.ui.AlertDialogBuilder;
-import com.android.car.ui.preference.CarUiDialogFragment;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-/**
- * Displays a dialog which prompts the user to confirm disconnecting from a remote Bluetooth device.
- */
-public class BluetoothDisconnectConfirmDialogFragment extends CarUiDialogFragment {
-
-    private static final String KEY_DEVICE_ADDRESS = "device_address";
-
-    private final CachedBluetoothDevice.Callback mDeviceCallback = this::dismissIfNotConnected;
-    private CachedBluetoothDevice mCachedDevice;
-
-    /**
-     * Returns a new {@link BluetoothDisconnectConfirmDialogFragment} for the given {@code device}.
-     */
-    public static BluetoothDisconnectConfirmDialogFragment newInstance(
-            CachedBluetoothDevice device) {
-        Bundle args = new Bundle();
-        args.putString(KEY_DEVICE_ADDRESS, device.getAddress());
-        BluetoothDisconnectConfirmDialogFragment fragment =
-                new BluetoothDisconnectConfirmDialogFragment();
-        fragment.setArguments(args);
-        return fragment;
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        String deviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS);
-        LocalBluetoothManager manager = BluetoothUtils.getLocalBtManager(context);
-        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
-                deviceAddress);
-        mCachedDevice = manager.getCachedDeviceManager().findDevice(device);
-    }
-
-    @NonNull
-    @Override
-    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
-        Context context = requireContext();
-        String name = mCachedDevice.getName();
-        if (TextUtils.isEmpty(name)) {
-            name = context.getString(R.string.bluetooth_device);
-        }
-        String title = context.getString(R.string.bluetooth_disconnect_title);
-        String message = context.getString(R.string.bluetooth_disconnect_all_profiles, name);
-
-        return new AlertDialogBuilder(context)
-                .setTitle(title)
-                .setMessage(message)
-                .setPositiveButton(android.R.string.ok,
-                        (dialog, which) -> mCachedDevice.disconnect())
-                .setNegativeButton(android.R.string.cancel, /* listener= */ null)
-                .create();
-    }
-
-    @Override
-    protected void onDialogClosed(boolean positiveResult) {
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mCachedDevice.registerCallback(mDeviceCallback);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mCachedDevice.unregisterCallback(mDeviceCallback);
-    }
-
-    private void dismissIfNotConnected() {
-        // This handles the case where the dialog is showing and the connection is broken via UI
-        // on the remote device. It does not cover the case of the device disconnecting while the
-        // fragment is starting because we cannot begin another transaction for dismiss while in
-        // a transaction to show. That case, however, should be extremely rare, and the action
-        // taken on the dialog will have no effect.
-        if (!mCachedDevice.isConnected() && getDialog().isShowing()) {
-            dismiss();
-        }
-    }
-}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java
index 240dc76..2dc7211 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java
@@ -53,6 +53,6 @@
             return UNSUPPORTED_ON_DEVICE;
         }
         return mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH)
-                ? DISABLED_FOR_USER : AVAILABLE;
+                ? DISABLED_FOR_PROFILE : AVAILABLE;
     }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
index 6af8bd7..c2dd87b 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
@@ -16,8 +16,6 @@
 
 package com.android.car.settings.bluetooth;
 
-import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
 import android.annotation.Nullable;
 import android.bluetooth.BluetoothDevice;
 import android.content.BroadcastReceiver;
@@ -29,6 +27,8 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.FragmentActivity;
 
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
+
 /**
  * BluetoothPairingDialog asks the user to enter a PIN / Passkey / simple confirmation
  * for pairing with a remote Bluetooth device. It is an activity that appears as a dialog.
@@ -67,7 +67,7 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
         Intent intent = getIntent();
         mBluetoothPairingController = new BluetoothPairingController(intent, this);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/car/settings/bluetooth/BluetoothPairingDialogFragment.java
index f0e134a..5dd32f1 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -32,6 +32,7 @@
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.EditText;
+import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.android.car.settings.R;
@@ -114,14 +115,6 @@
     }
 
     /**
-     * Used in testing to get a reference to the dialog.
-     * @return - The fragments current dialog
-     */
-    protected AlertDialog getmDialog() {
-        return mDialog;
-    }
-
-    /**
      * Sets the controller that the fragment should use. this method MUST be called
      * before you try to show the dialog or an error will be thrown. An implementation
      * of a pairing controller can be found at {@link BluetoothPairingController}. A
@@ -318,7 +311,12 @@
      * not require user input.
      */
     private View createView() {
-        View view = getActivity().getLayoutInflater().inflate(R.layout.bluetooth_pin_confirm, null);
+        ScrollView view = (ScrollView) getActivity().getLayoutInflater().inflate(
+                R.layout.bluetooth_pin_confirm, /* root= */ null);
+        // ScrollView sets itself to be focusable on construction, so focusability needs to be
+        // disabled explicitly after inflation for focus highlights to be properly shown on this
+        // dialog.
+        view.setFocusable(false);
         TextView pairingViewCaption = (TextView) view.findViewById(R.id.pairing_caption);
         TextView pairingViewContent = (TextView) view.findViewById(R.id.pairing_subhead);
         TextView messagePairing = (TextView) view.findViewById(R.id.pairing_code_message);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
index 710ed71..7dbd755 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
@@ -19,6 +19,8 @@
 import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.settingslib.bluetooth.BluetoothCallback;
@@ -31,7 +33,8 @@
  */
 public class BluetoothPairingSelectionFragment extends SettingsFragment {
 
-    private final BluetoothCallback mCallback = new BluetoothCallback() {
+    @VisibleForTesting
+    final BluetoothCallback mCallback = new BluetoothCallback() {
         @Override
         public void onScanningStateChanged(boolean started) {
         }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingService.java b/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
index b4340d9..991e252 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
@@ -124,10 +124,12 @@
                 .setLocalOnly(true);
 
         PendingIntent pairIntent = PendingIntent.getActivity(this, 0,
-                getPairingDialogIntent(this, intent), PendingIntent.FLAG_ONE_SHOT);
+                getPairingDialogIntent(this, intent),
+                PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT);
 
         PendingIntent dismissIntent = PendingIntent.getBroadcast(this, 0,
-                new Intent(ACTION_DISMISS_PAIRING), PendingIntent.FLAG_ONE_SHOT);
+                new Intent(ACTION_DISMISS_PAIRING),
+                PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT);
 
         mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
 
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java
index 6f345ec..67d6e00 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java
@@ -25,6 +25,7 @@
 import android.os.UserManager;
 
 import androidx.annotation.CallSuper;
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.common.FragmentController;
@@ -56,6 +57,15 @@
         mUserManager = UserManager.get(context);
     }
 
+    @VisibleForTesting
+    BluetoothPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            LocalBluetoothManager localBluetoothManager, UserManager userManager) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mBluetoothManager = localBluetoothManager;
+        mUserManager = userManager;
+    }
+
     /** Returns a {@link UserManager} retrieved with the controller context. **/
     protected final UserManager getUserManager() {
         return mUserManager;
@@ -76,7 +86,7 @@
             return UNSUPPORTED_ON_DEVICE;
         }
         if (mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH)) {
-            return DISABLED_FOR_USER;
+            return DISABLED_FOR_PROFILE;
         }
         return BluetoothAdapter.getDefaultAdapter().isEnabled() ? AVAILABLE
                 : CONDITIONALLY_UNAVAILABLE;
diff --git a/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java b/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java
index 51a3646..021acb1 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java
@@ -16,8 +16,6 @@
 
 package com.android.car.settings.bluetooth;
 
-import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.Activity;
@@ -37,6 +35,7 @@
 import android.os.UserManager;
 import android.text.TextUtils;
 
+import androidx.activity.ComponentActivity;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
@@ -45,6 +44,7 @@
 import com.android.settingslib.bluetooth.BluetoothDiscoverableTimeoutReceiver;
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
 
 import java.util.List;
 
@@ -53,7 +53,7 @@
  * consent and waiting until the state change is completed. It can also be used to make the device
  * explicitly discoverable for a given amount of time.
  */
-public class BluetoothRequestPermissionActivity extends Activity {
+public class BluetoothRequestPermissionActivity extends ComponentActivity {
     private static final Logger LOG = new Logger(BluetoothRequestPermissionActivity.class);
 
     @VisibleForTesting
@@ -91,7 +91,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
         mRequest = parseIntent();
         if (mRequest == REQUEST_UNKNOWN) {
diff --git a/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java
index 92646cd..8c96619 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java
@@ -47,7 +47,7 @@
 
     private final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
     private final AlwaysDiscoverable mAlwaysDiscoverable;
-    private boolean mIsScanningEnabled;
+    private boolean mIsScanningEnabled = true;
 
     public BluetoothScanningDevicesGroupPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
@@ -81,7 +81,7 @@
     @Override
     protected void updateState(PreferenceGroup preferenceGroup) {
         super.updateState(preferenceGroup);
-        if (shouldEnableScanning()) {
+        if (shouldEnableScanning() && mIsScanningEnabled) {
             enableScanning();
         } else {
             disableScanning();
diff --git a/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java b/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
index 0710654..3abf1e3 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
@@ -16,15 +16,6 @@
 
 package com.android.car.settings.bluetooth;
 
-import static android.os.UserManager.DISALLOW_BLUETOOTH;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.UserManager;
 import android.provider.Settings;
 
 import androidx.annotation.XmlRes;
@@ -32,118 +23,21 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.search.SearchIndexable;
 
-import java.util.Collections;
-import java.util.List;
-
 /**
- * Main page for Bluetooth settings. It manages the power switch for the Bluetooth adapter. It also
- * displays paired devices and the entry point for device pairing.
+ * Main page for Bluetooth settings. It displays paired devices and the entry point for
+ * device pairing.
  */
 @SearchIndexable
 public class BluetoothSettingsFragment extends SettingsFragment {
 
-    private final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-    private final IntentFilter mIntentFilter = new IntentFilter(
-            BluetoothAdapter.ACTION_STATE_CHANGED);
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
-            handleStateChanged(state);
-        }
-    };
-    private final MenuItem.OnClickListener mBluetoothSwitchListener = item -> {
-        item.setEnabled(false);
-        if (item.isChecked()) {
-            mBluetoothAdapter.enable();
-        } else {
-            mBluetoothAdapter.disable();
-        }
-    };
-
-    private UserManager mUserManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private MenuItem mBluetoothSwitch;
-
     @Override
     @XmlRes
     protected int getPreferenceScreenResId() {
         return R.xml.bluetooth_settings_fragment;
     }
 
-    @Override
-    protected List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mBluetoothSwitch);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mBluetoothSwitch = new MenuItem.Builder(getContext())
-                .setCheckable()
-                .setOnClickListener(mBluetoothSwitchListener)
-                .build();
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        mUserManager = UserManager.get(context);
-        mLocalBluetoothManager = BluetoothUtils.getLocalBtManager(context);
-        if (mLocalBluetoothManager == null) {
-            goBack();
-        }
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        requireContext().registerReceiver(mReceiver, mIntentFilter);
-        mLocalBluetoothManager.setForegroundActivity(requireActivity());
-        handleStateChanged(mBluetoothAdapter.getState());
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        requireContext().unregisterReceiver(mReceiver);
-        mLocalBluetoothManager.setForegroundActivity(null);
-    }
-
-    private boolean isUserRestricted() {
-        return mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH);
-    }
-
-    private void handleStateChanged(int state) {
-        // Momentarily clear the listener so that we don't update the adapter while trying to
-        // reflect the adapter state.
-        mBluetoothSwitch.setOnClickListener(null);
-        switch (state) {
-            case BluetoothAdapter.STATE_TURNING_ON:
-                mBluetoothSwitch.setEnabled(false);
-                mBluetoothSwitch.setChecked(true);
-                break;
-            case BluetoothAdapter.STATE_ON:
-                mBluetoothSwitch.setEnabled(!isUserRestricted());
-                mBluetoothSwitch.setChecked(true);
-                break;
-            case BluetoothAdapter.STATE_TURNING_OFF:
-                mBluetoothSwitch.setEnabled(false);
-                mBluetoothSwitch.setChecked(false);
-                break;
-            case BluetoothAdapter.STATE_OFF:
-            default:
-                mBluetoothSwitch.setEnabled(!isUserRestricted());
-                mBluetoothSwitch.setChecked(false);
-        }
-        mBluetoothSwitch.setOnClickListener(mBluetoothSwitchListener);
-    }
-
     public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new CarBaseSearchIndexProvider(R.xml.bluetooth_settings_fragment,
                     Settings.ACTION_BLUETOOTH_SETTINGS);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceController.java
new file mode 100644
index 0000000..bb5c1d4
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceController.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2020 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.car.settings.bluetooth;
+
+import static android.car.hardware.power.PowerComponent.BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.UserManager;
+import android.widget.Toast;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PowerPolicyListener;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import java.util.function.Consumer;
+
+/**
+ * Enables/disables bluetooth state via SwitchPreference.
+ */
+public class BluetoothStateSwitchPreferenceController extends
+        PreferenceController<ClickableWhileDisabledSwitchPreference> {
+
+    private final Context mContext;
+    private final IntentFilter mIntentFilter = new IntentFilter(
+            BluetoothAdapter.ACTION_STATE_CHANGED);
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
+            handleStateChanged(state);
+        }
+    };
+    private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private UserManager mUserManager;
+    private boolean mUpdating = false;
+
+    @VisibleForTesting
+    final PowerPolicyListener mPowerPolicyListener;
+
+    public BluetoothStateSwitchPreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mContext = context;
+        mPowerPolicyListener = new PowerPolicyListener(context, BLUETOOTH,
+                isOn -> {
+                    enableSwitchPreference(getPreference(), isOn, /* forPowerPolicy= */ true);
+                });
+    }
+
+    @Override
+    protected Class<ClickableWhileDisabledSwitchPreference> getPreferenceType() {
+        return ClickableWhileDisabledSwitchPreference.class;
+    }
+
+    @Override
+    protected void updateState(ClickableWhileDisabledSwitchPreference preference) {
+        updateSwitchPreference(mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON
+                || mBluetoothAdapter.getState() == BluetoothAdapter.STATE_TURNING_ON);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ClickableWhileDisabledSwitchPreference preference,
+            Object newValue) {
+        if (mUpdating) {
+            return false;
+        }
+        enableSwitchPreference(preference, /* enabled= */ false, /* forPowerPolicy= */ false);
+        boolean bluetoothEnabled = (Boolean) newValue;
+        if (bluetoothEnabled) {
+            mBluetoothAdapter.enable();
+        } else {
+            mBluetoothAdapter.disable();
+        }
+        return true;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mUserManager = UserManager.get(mContext);
+        mLocalBluetoothManager = BluetoothUtils.getLocalBtManager(mContext);
+        if (mLocalBluetoothManager == null) {
+            getFragmentController().goBack();
+        }
+        getPreference().setContentDescription(
+                mContext.getString(R.string.bluetooth_state_switch_content_description));
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mContext.registerReceiver(mReceiver, mIntentFilter);
+        mLocalBluetoothManager.setForegroundActivity(mContext);
+        handleStateChanged(mBluetoothAdapter.getState());
+    }
+
+    @Override
+    protected void onResumeInternal() {
+        mPowerPolicyListener.handleCurrentPolicy();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mContext.unregisterReceiver(mReceiver);
+        mLocalBluetoothManager.setForegroundActivity(null);
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mPowerPolicyListener.release();
+    }
+
+    private boolean isUserRestricted() {
+        return mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH);
+    }
+
+    @VisibleForTesting
+    void handleStateChanged(int state) {
+        // Set updating state to prevent additional updates while trying to reflect the new
+        // adapter state.
+        mUpdating = true;
+        switch (state) {
+            case BluetoothAdapter.STATE_TURNING_ON:
+                enableSwitchPreference(getPreference(), /* enabled= */ false,
+                        /* forPowerPolicy= */ false);
+                updateSwitchPreference(true);
+                break;
+            case BluetoothAdapter.STATE_ON:
+                enableSwitchPreference(getPreference(), !isUserRestricted(),
+                        /* forPowerPolicy= */ false);
+                updateSwitchPreference(true);
+                break;
+            case BluetoothAdapter.STATE_TURNING_OFF:
+                enableSwitchPreference(getPreference(), /* enabled= */ false,
+                        /* forPowerPolicy= */ false);
+                updateSwitchPreference(false);
+                break;
+            case BluetoothAdapter.STATE_OFF:
+            default:
+                enableSwitchPreference(getPreference(), !isUserRestricted(),
+                        /* forPowerPolicy= */ false);
+                updateSwitchPreference(false);
+        }
+        mUpdating = false;
+    }
+
+    @VisibleForTesting
+    void setUserManager(UserManager userManager) {
+        mUserManager = userManager;
+    }
+
+    private void updateSwitchPreference(boolean enabled) {
+        String bluetoothName = BluetoothAdapter.getDefaultAdapter().getName();
+        getPreference().setSummary(enabled ? getContext()
+                .getString(R.string.bluetooth_state_switch_summary, bluetoothName) : null);
+        getPreference().setChecked(enabled);
+    }
+
+    private void enableSwitchPreference(ClickableWhileDisabledSwitchPreference preference,
+            boolean enabled, boolean forPowerPolicy) {
+        Consumer<Preference> listener = !forPowerPolicy ? null : p ->
+                Toast.makeText(getContext(),
+                        getContext().getString(R.string.power_component_disabled),
+                        Toast.LENGTH_LONG).show();
+        preference.setDisabledClickListener(listener);
+        preference.setEnabled(enabled);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
index 403dd5d..add98ba 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
@@ -75,7 +75,7 @@
         int availabilityStatus = super.getAvailabilityStatus();
         if (availabilityStatus == AVAILABLE
                 && getUserManager().hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) {
-            return DISABLED_FOR_USER;
+            return DISABLED_FOR_PROFILE;
         }
         return availabilityStatus;
     }
@@ -85,7 +85,7 @@
         public boolean matches(BluetoothDevice device) {
             int[] unbondedMajorClassFilter = getContext()
                     .getResources()
-                    .getIntArray(R.array.config_unbonded_device_filter_whitelist);
+                    .getIntArray(R.array.config_unbonded_device_filter_allowlist);
             boolean matches = device.getBondState() != BluetoothDevice.BOND_BONDED;
             if (matches && unbondedMajorClassFilter.length > 0) {
                 matches = device.getBluetoothClass() != null
diff --git a/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java b/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java
index c93b19b..c18f9f2 100644
--- a/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java
@@ -78,7 +78,7 @@
         if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
             return UNSUPPORTED_ON_DEVICE;
         }
-        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+        return isUserRestricted() ? DISABLED_FOR_PROFILE : AVAILABLE;
     }
 
     private boolean isUserRestricted() {
diff --git a/src/com/android/car/settings/bluetooth/TEST_MAPPING b/src/com/android/car/settings/bluetooth/TEST_MAPPING
deleted file mode 100644
index 8e5b2cb..0000000
--- a/src/com/android/car/settings/bluetooth/TEST_MAPPING
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "auto-end-to-end-postsubmit": [
-    {
-      "name": "AndroidAutoUiTests",
-      "options" : [
-        {
-          "include-filter": "android.test.functional.auto.apps.SettingHelperTest#testBluetoothSettings"
-        }
-      ]
-    }
-  ]
-}
diff --git a/src/com/android/car/settings/common/BaseActionItem.java b/src/com/android/car/settings/common/BaseActionItem.java
new file mode 100644
index 0000000..01bdd0e
--- /dev/null
+++ b/src/com/android/car/settings/common/BaseActionItem.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.widget.FrameLayout;
+
+import androidx.preference.Preference;
+
+import java.util.function.Consumer;
+
+/**
+ * Class representing an action item for an {@link MultiActionPreference}
+ */
+public abstract class BaseActionItem {
+    protected Preference mPreference;
+    protected boolean mIsPreferenceRestricted = false;
+    protected Consumer<Preference> mRestrictedOnClickListener;
+
+    private boolean mIsEnabled = true;
+    private boolean mIsVisible = true;
+    private ActionItemInfoChangeListener mActionItemInfoChangeListener;
+
+    public BaseActionItem(ActionItemInfoChangeListener actionItemInfoChangeListener) {
+        mActionItemInfoChangeListener = actionItemInfoChangeListener;
+    }
+
+    /**
+     * Get the enabled state.
+     */
+    public boolean isEnabled() {
+        return mIsEnabled;
+    }
+
+    /**
+     * Set the enabled state.
+     */
+    public void setEnabled(boolean enabled) {
+        if (enabled != mIsEnabled) {
+            mIsEnabled = enabled;
+            update();
+        }
+    }
+
+    /**
+     * Get the visibility state.
+     */
+    public boolean isVisible() {
+        return mIsVisible;
+    }
+
+    /**
+     * Set the visibility state.
+     */
+    public void setVisible(boolean visible) {
+        if (visible != mIsVisible) {
+            mIsVisible = visible;
+            update();
+        }
+    }
+
+    BaseActionItem setPreference(Preference preference) {
+        mPreference = preference;
+        return this;
+    }
+
+    BaseActionItem setPreferenceRestricted(boolean isPreferenceRestricted) {
+        mIsPreferenceRestricted = isPreferenceRestricted;
+        return this;
+    }
+
+    BaseActionItem setRestrictedOnClickListener(Consumer<Preference> restrictedOnClickListener) {
+        mRestrictedOnClickListener = restrictedOnClickListener;
+        return this;
+    }
+
+    /**
+     * Notify listener that action item has been changed.
+     */
+    protected void update() {
+        ActionItemInfoChangeListener listener = mActionItemInfoChangeListener;
+        if (listener != null) {
+            listener.onActionItemChange(this);
+        }
+    }
+
+    abstract void bindViewHolder(FrameLayout frameLayout);
+    abstract int getLayoutResource();
+
+    /**
+     * Listener that is notified when an action item has been changed.
+     */
+    interface ActionItemInfoChangeListener {
+        void onActionItemChange(BaseActionItem baseActionItem);
+    }
+}
diff --git a/src/com/android/car/settings/common/BaseCarSettingsActivity.java b/src/com/android/car/settings/common/BaseCarSettingsActivity.java
index ff5b525..de6d7e0 100644
--- a/src/com/android/car/settings/common/BaseCarSettingsActivity.java
+++ b/src/com/android/car/settings/common/BaseCarSettingsActivity.java
@@ -18,16 +18,24 @@
 
 import static android.view.ViewGroup.FOCUS_BEFORE_DESCENDANTS;
 import static android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS;
+import static android.view.accessibility.AccessibilityNodeInfo.ACTION_FOCUS;
 
 import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
 import android.car.drivingstate.CarUxRestrictionsManager.OnUxRestrictionsChangedListener;
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
@@ -38,6 +46,17 @@
 
 import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
+import com.android.car.settings.common.rotary.SettingsFocusParkingView;
+import com.android.car.ui.baselayout.Insets;
+import com.android.car.ui.baselayout.InsetsChangedListener;
+import com.android.car.ui.core.CarUi;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.car.ui.toolbar.NavButtonMode;
+import com.android.car.ui.toolbar.ToolbarController;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
+
+import java.util.Collections;
+import java.util.List;
 
 /**
  * Base activity class for car settings, provides a action bar with a back button that goes to
@@ -45,8 +64,36 @@
  */
 public abstract class BaseCarSettingsActivity extends FragmentActivity implements
         FragmentHost, OnUxRestrictionsChangedListener, UxRestrictionsProvider,
-        OnBackStackChangedListener, PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
+        OnBackStackChangedListener, PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
+        InsetsChangedListener {
+
+    /**
+     * Meta data key for specifying the preference key of the top level menu preference that the
+     * initial activity's fragment falls under. If this is not specified in the activity's
+     * metadata, the top level menu preference will not be highlighted upon activity launch.
+     */
+    public static final String META_DATA_KEY_HEADER_KEY =
+            "com.android.car.settings.TOP_LEVEL_HEADER_KEY";
+
+    /**
+     * Meta data key for specifying activities that should always be shown in the single pane
+     * configuration. If not specified for the activity, the activity will default to the value
+     * {@link R.bool.config_global_force_single_pane}.
+     */
+    public static final String META_DATA_KEY_SINGLE_PANE = "com.android.car.settings.SINGLE_PANE";
+
     private static final Logger LOG = new Logger(BaseCarSettingsActivity.class);
+    private static final int SEARCH_REQUEST_CODE = 501;
+    private static final String KEY_HAS_NEW_INTENT = "key_has_new_intent";
+
+    private boolean mHasNewIntent = true;
+    private boolean mHasInitialFocus = false;
+
+    private String mTopLevelHeaderKey;
+    private boolean mIsSinglePane;
+
+    private ToolbarController mGlobalToolbar;
+    private ToolbarController mMiniToolbar;
 
     private CarUxRestrictionsHelper mUxRestrictionsHelper;
     private ViewGroup mFragmentContainer;
@@ -58,27 +105,78 @@
             /* timestamp= */ 0
     ).build();
 
+    private ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener;
+    private final ViewTreeObserver.OnGlobalFocusChangeListener mFocusChangeListener =
+            (oldFocus, newFocus) -> {
+                if (oldFocus instanceof SettingsFocusParkingView) {
+                    // Focus is manually shifted away from the SettingsFocusParkingView.
+                    // Therefore, the focus should no longer shift upon global layout.
+                    removeGlobalLayoutListener();
+                }
+                if (newFocus instanceof SettingsFocusParkingView && mGlobalLayoutListener == null) {
+                    // Attempting to shift focus to the SettingsFocusParkingView without a layout
+                    // listener is not allowed, since it can cause undermined focus behavior
+                    // in these rare edge cases.
+                    newFocus.clearFocus();
+                }
+
+                // This will maintain focus in the content pane if a view goes from
+                // focusable -> unfocusable.
+                if (oldFocus == null && mHasInitialFocus) {
+                    requestContentPaneFocus();
+                } else {
+                    mHasInitialFocus = true;
+                }
+            };
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
+        if (savedInstanceState != null) {
+            mHasNewIntent = savedInstanceState.getBoolean(KEY_HAS_NEW_INTENT, mHasNewIntent);
+        }
+        populateMetaData();
         setContentView(R.layout.car_setting_activity);
         mFragmentContainer = findViewById(R.id.fragment_container);
-        if (mUxRestrictionsHelper == null) {
-            mUxRestrictionsHelper = new CarUxRestrictionsHelper(/* context= */ this, /* listener= */
-                    this);
-        }
-        mUxRestrictionsHelper.start();
+
+        // We do this so that the insets are not automatically sent to the fragments.
+        // The fragments have their own insets handled by the installBaseLayoutAround() method.
+        CarUi.replaceInsetsChangedListenerWith(this, this);
+
+        setUpToolbars();
         getSupportFragmentManager().addOnBackStackChangedListener(this);
         mRestrictedMessage = findViewById(R.id.restricted_message);
 
-        launchIfDifferent(getInitialFragment());
+        if (mHasNewIntent) {
+            launchIfDifferent(getInitialFragment());
+            mHasNewIntent = false;
+        } else if (!mIsSinglePane) {
+            updateMiniToolbarState();
+        }
+        mUxRestrictionsHelper = new CarUxRestrictionsHelper(/* context= */ this, /* listener= */
+                this);
+
+        if (shouldFocusContentOnLaunch()) {
+            requestContentPaneFocus();
+            mHasInitialFocus = true;
+        }
+        setUpFocusChangeListener(true);
+    }
+
+    @Override
+    protected void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_HAS_NEW_INTENT, mHasNewIntent);
     }
 
     @Override
     public void onDestroy() {
-        super.onDestroy();
-        mUxRestrictionsHelper.stop();
+        setUpFocusChangeListener(false);
+        removeGlobalLayoutListener();
+        mUxRestrictionsHelper.destroy();
         mUxRestrictionsHelper = null;
+        super.onDestroy();
     }
 
     @Override
@@ -92,12 +190,31 @@
     }
 
     @Override
+    public Intent getIntent() {
+        Intent superIntent = super.getIntent();
+        if (mTopLevelHeaderKey != null) {
+            superIntent.putExtra(META_DATA_KEY_HEADER_KEY, mTopLevelHeaderKey);
+        }
+        superIntent.putExtra(META_DATA_KEY_SINGLE_PANE, mIsSinglePane);
+        return superIntent;
+    }
+
+    @Override
     public void launchFragment(Fragment fragment) {
         if (fragment instanceof DialogFragment) {
             throw new IllegalArgumentException(
                     "cannot launch dialogs with launchFragment() - use showDialog() instead");
         }
 
+        if (mIsSinglePane) {
+            Intent intent = SubSettingsActivity.newInstance(/* context= */ this, fragment);
+            startActivity(intent);
+        } else {
+            launchFragmentInternal(fragment);
+        }
+    }
+
+    private void launchFragmentInternal(Fragment fragment) {
         getSupportFragmentManager()
                 .beginTransaction()
                 .setCustomAnimations(
@@ -126,14 +243,34 @@
     }
 
     @Override
+    public ToolbarController getToolbar() {
+        if (mIsSinglePane) {
+            return mGlobalToolbar;
+        }
+        return mMiniToolbar;
+    }
+
+    @Override
     public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
         mCarUxRestrictions = restrictionInfo;
+
+        // Update restrictions for current fragment.
         Fragment currentFragment = getCurrentFragment();
         if (currentFragment instanceof OnUxRestrictionsChangedListener) {
             ((OnUxRestrictionsChangedListener) currentFragment)
                     .onUxRestrictionsChanged(restrictionInfo);
         }
         updateBlockingView(currentFragment);
+
+        if (!mIsSinglePane) {
+            // Update restrictions for top level menu (if present).
+            Fragment topLevelMenu =
+                    getSupportFragmentManager().findFragmentById(R.id.top_level_menu);
+            if (topLevelMenu instanceof CarUxRestrictionsManager.OnUxRestrictionsChangedListener) {
+                ((CarUxRestrictionsManager.OnUxRestrictionsChangedListener) topLevelMenu)
+                        .onUxRestrictionsChanged(restrictionInfo);
+            }
+        }
     }
 
     @Override
@@ -144,6 +281,17 @@
     @Override
     public void onBackStackChanged() {
         onUxRestrictionsChanged(getCarUxRestrictions());
+        if (!mIsSinglePane) {
+            if (mHasInitialFocus) {
+                requestContentPaneFocus();
+            }
+            updateMiniToolbarState();
+        }
+    }
+
+    @Override
+    public void onCarUiInsetsChanged(Insets insets) {
+        // intentional no-op - insets are handled by the listeners created during toolbar setup
     }
 
     @Override
@@ -164,18 +312,25 @@
     @Nullable
     protected abstract Fragment getInitialFragment();
 
-    protected void launchIfDifferent(Fragment newFragment) {
+    protected Fragment getCurrentFragment() {
+        return getSupportFragmentManager().findFragmentById(R.id.fragment_container);
+    }
+
+    /**
+     * Returns whether the content pane should get focus initially when in dual-pane configuration.
+     */
+    protected boolean shouldFocusContentOnLaunch() {
+        return true;
+    }
+
+    private void launchIfDifferent(Fragment newFragment) {
         Fragment currentFragment = getCurrentFragment();
         if ((newFragment != null) && differentFragment(newFragment, currentFragment)) {
             LOG.d("launchIfDifferent: " + newFragment + " replacing " + currentFragment);
-            launchFragment(newFragment);
+            launchFragmentInternal(newFragment);
         }
     }
 
-    protected Fragment getCurrentFragment() {
-        return getSupportFragmentManager().findFragmentById(R.id.fragment_container);
-    }
-
     /**
      * Returns {code true} if newFragment is different from current fragment.
      */
@@ -191,6 +346,9 @@
     }
 
     private void updateBlockingView(@Nullable Fragment currentFragment) {
+        if (mRestrictedMessage == null) {
+            return;
+        }
         if (currentFragment instanceof BaseFragment
                 && !((BaseFragment) currentFragment).canBeShown(mCarUxRestrictions)) {
             mRestrictedMessage.setVisibility(View.VISIBLE);
@@ -202,4 +360,150 @@
             mFragmentContainer.setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS);
         }
     }
+
+    private void populateMetaData() {
+        try {
+            ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(),
+                    PackageManager.GET_META_DATA);
+            if (ai == null || ai.metaData == null) {
+                mIsSinglePane = getResources().getBoolean(R.bool.config_global_force_single_pane);
+                return;
+            }
+            mTopLevelHeaderKey = ai.metaData.getString(META_DATA_KEY_HEADER_KEY);
+            mIsSinglePane = ai.metaData.getBoolean(META_DATA_KEY_SINGLE_PANE,
+                    getResources().getBoolean(R.bool.config_global_force_single_pane));
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.w("Unable to find package", e);
+        }
+    }
+
+    private void setUpToolbars() {
+        View globalToolbarWrappedView = mIsSinglePane ? findViewById(
+                R.id.fragment_container_wrapper) : findViewById(R.id.top_level_menu);
+        mGlobalToolbar = CarUi.installBaseLayoutAround(
+                globalToolbarWrappedView,
+                insets -> globalToolbarWrappedView.setPadding(
+                        insets.getLeft(), insets.getTop(), insets.getRight(),
+                        insets.getBottom()), /* hasToolbar= */ true);
+        if (mIsSinglePane) {
+            mGlobalToolbar.setNavButtonMode(NavButtonMode.BACK);
+            findViewById(R.id.top_level_menu_container).setVisibility(View.GONE);
+            findViewById(R.id.top_level_divider).setVisibility(View.GONE);
+            return;
+        }
+        mMiniToolbar = CarUi.installBaseLayoutAround(
+                findViewById(R.id.fragment_container_wrapper),
+                insets -> findViewById(R.id.fragment_container_wrapper).setPadding(
+                        insets.getLeft(), insets.getTop(), insets.getRight(),
+                        insets.getBottom()), /* hasToolbar= */ true);
+
+        MenuItem searchButton = new MenuItem.Builder(this)
+                .setToSearch()
+                .setOnClickListener(i -> onSearchButtonClicked())
+                .setUxRestrictions(CarUxRestrictions.UX_RESTRICTIONS_NO_KEYBOARD)
+                .setId(R.id.toolbar_menu_item_0)
+                .build();
+        List<MenuItem> items = Collections.singletonList(searchButton);
+
+        mGlobalToolbar.setTitle(R.string.settings_label);
+        mGlobalToolbar.setNavButtonMode(NavButtonMode.DISABLED);
+        mGlobalToolbar.setLogo(R.drawable.ic_launcher_settings);
+        mGlobalToolbar.setMenuItems(items);
+    }
+
+    private void updateMiniToolbarState() {
+        if (mMiniToolbar == null) {
+            return;
+        }
+        if (getSupportFragmentManager().getBackStackEntryCount() > 1 || !isTaskRoot()) {
+            mMiniToolbar.setNavButtonMode(NavButtonMode.BACK);
+        } else {
+            mMiniToolbar.setNavButtonMode(NavButtonMode.DISABLED);
+        }
+    }
+
+    private void setUpFocusChangeListener(boolean enable) {
+        if (mIsSinglePane) {
+            // The focus change listener is only needed with two panes.
+            return;
+        }
+        ViewTreeObserver observer = findViewById(
+                R.id.car_settings_activity_wrapper).getViewTreeObserver();
+        if (enable) {
+            observer.addOnGlobalFocusChangeListener(mFocusChangeListener);
+        } else {
+            observer.removeOnGlobalFocusChangeListener(mFocusChangeListener);
+        }
+    }
+
+    private void requestContentPaneFocus() {
+        if (mIsSinglePane) {
+            return;
+        }
+        if (getCurrentFragment() == null) {
+            return;
+        }
+        View fragmentView = getCurrentFragment().getView();
+        if (fragmentView == null) {
+            return;
+        }
+        removeGlobalLayoutListener();
+        if (fragmentView.isInTouchMode()) {
+            mHasInitialFocus = false;
+            return;
+        }
+        View focusArea = fragmentView.findViewById(R.id.settings_car_ui_focus_area);
+
+        if (focusArea == null) {
+            focusArea = fragmentView.findViewById(R.id.settings_content_focus_area);
+            if (focusArea == null) {
+                return;
+            }
+        }
+        View finalFocusArea = focusArea; // required to be effectively final for inner class access
+        mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                boolean success = finalFocusArea.performAccessibilityAction(
+                        ACTION_FOCUS, /* arguments= */ null);
+                if (success) {
+                    removeGlobalLayoutListener();
+                } else {
+                    findViewById(
+                            R.id.settings_focus_parking_view).performAccessibilityAction(
+                            ACTION_FOCUS, /* arguments= */ null);
+                }
+            }
+        };
+        fragmentView.getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);
+    }
+
+    private void removeGlobalLayoutListener() {
+        if (mGlobalLayoutListener == null) {
+            return;
+        }
+        if (getCurrentFragment() == null) {
+            return;
+        }
+        View fragmentView = getCurrentFragment().getView();
+        if (fragmentView == null) {
+            return;
+        }
+        fragmentView.getViewTreeObserver()
+                .removeOnGlobalLayoutListener(mGlobalLayoutListener);
+        mGlobalLayoutListener = null;
+    }
+
+    private void onSearchButtonClicked() {
+        Intent intent = new Intent(Settings.ACTION_APP_SEARCH_SETTINGS)
+                .setPackage(getSettingsIntelligencePkgName());
+        if (intent.resolveActivity(getPackageManager()) == null) {
+            return;
+        }
+        startActivityForResult(intent, SEARCH_REQUEST_CODE);
+    }
+
+    private String getSettingsIntelligencePkgName() {
+        return getString(R.string.config_settingsintelligence_package_name);
+    }
 }
diff --git a/src/com/android/car/settings/common/BaseFragment.java b/src/com/android/car/settings/common/BaseFragment.java
index 047371d..24e5225 100644
--- a/src/com/android/car/settings/common/BaseFragment.java
+++ b/src/com/android/car/settings/common/BaseFragment.java
@@ -16,8 +16,7 @@
 
 package com.android.car.settings.common;
 
-import static com.android.car.ui.core.CarUi.requireInsets;
-import static com.android.car.ui.core.CarUi.requireToolbar;
+import static com.android.car.settings.common.BaseCarSettingsActivity.META_DATA_KEY_SINGLE_PANE;
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.drivingstate.CarUxRestrictionsManager;
@@ -33,10 +32,8 @@
 import androidx.fragment.app.Fragment;
 
 import com.android.car.settings.R;
-import com.android.car.ui.baselayout.Insets;
-import com.android.car.ui.baselayout.InsetsChangedListener;
 import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.NavButtonMode;
 import com.android.car.ui.toolbar.ToolbarController;
 
 import java.util.List;
@@ -45,7 +42,7 @@
  * Base fragment for setting activity.
  */
 public abstract class BaseFragment extends Fragment implements
-        CarUxRestrictionsManager.OnUxRestrictionsChangedListener, InsetsChangedListener {
+        CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
 
     /**
      * Return the {@link FragmentHost}.
@@ -98,16 +95,12 @@
         return null;
     }
 
-    protected Toolbar.State getToolbarState() {
-        return Toolbar.State.SUBPAGE;
-    }
-
-    protected Toolbar.NavButtonMode getToolbarNavButtonStyle() {
-        return Toolbar.NavButtonMode.BACK;
+    protected NavButtonMode getToolbarNavButtonStyle() {
+        return NavButtonMode.BACK;
     }
 
     protected final ToolbarController getToolbar() {
-        return requireToolbar(requireActivity());
+        return getFragmentHost().getToolbar();
     }
 
     @Override
@@ -144,21 +137,9 @@
             }
             toolbar.setTitle(getTitleId());
             toolbar.setMenuItems(items);
-            toolbar.setState(getToolbarState());
-            toolbar.setNavButtonMode(getToolbarNavButtonStyle());
-        }
-    }
-
-    @Override
-    public void onCarUiInsetsChanged(Insets insets) {
-        View view = requireView();
-        View recyclerView = view.findViewById(R.id.recycler_view);
-        if (recyclerView != null) {
-            recyclerView.setPadding(0, insets.getTop(), 0, insets.getBottom());
-            view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
-        } else {
-            view.setPadding(insets.getLeft(), insets.getTop(),
-                    insets.getRight(), insets.getBottom());
+            if (getActivity().getIntent().getBooleanExtra(META_DATA_KEY_SINGLE_PANE, false)) {
+                toolbar.setNavButtonMode(getToolbarNavButtonStyle());
+            }
         }
     }
 
@@ -166,7 +147,6 @@
     public void onStart() {
         super.onStart();
         onUxRestrictionsChanged(getCurrentRestrictions());
-        onCarUiInsetsChanged(requireInsets(requireActivity()));
     }
 
     /**
diff --git a/src/com/android/car/settings/common/CarSettingActivities.java b/src/com/android/car/settings/common/CarSettingActivities.java
index 2ea1ca1..d4f6680 100644
--- a/src/com/android/car/settings/common/CarSettingActivities.java
+++ b/src/com/android/car/settings/common/CarSettingActivities.java
@@ -21,17 +21,17 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.UserHandle;
-import android.os.UserManager;
 import android.provider.Settings;
 import android.text.TextUtils;
 
 import androidx.fragment.app.Fragment;
 
-import com.android.car.settings.accounts.AccountSettingsFragment;
+import com.android.car.settings.R;
 import com.android.car.settings.accounts.ChooseAccountFragment;
 import com.android.car.settings.applications.ApplicationDetailsFragment;
 import com.android.car.settings.applications.ApplicationsSettingsFragment;
-import com.android.car.settings.applications.AppsAndNotificationsFragment;
+import com.android.car.settings.applications.AppsFragment;
+import com.android.car.settings.applications.assist.AssistantAndVoiceFragment;
 import com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment;
 import com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment;
 import com.android.car.settings.applications.specialaccess.NotificationAccessFragment;
@@ -43,7 +43,6 @@
 import com.android.car.settings.datausage.DataUsageFragment;
 import com.android.car.settings.datetime.DatetimeSettingsFragment;
 import com.android.car.settings.display.DisplaySettingsFragment;
-import com.android.car.settings.home.HomepageFragment;
 import com.android.car.settings.inputmethod.KeyboardFragment;
 import com.android.car.settings.language.LanguagePickerFragment;
 import com.android.car.settings.language.LanguagesAndInputFragment;
@@ -51,7 +50,10 @@
 import com.android.car.settings.network.MobileNetworkFragment;
 import com.android.car.settings.network.MobileNetworkListFragment;
 import com.android.car.settings.network.NetworkAndInternetFragment;
+import com.android.car.settings.notifications.NotificationsFragment;
 import com.android.car.settings.privacy.PrivacySettingsFragment;
+import com.android.car.settings.privacy.VehicleDataFragment;
+import com.android.car.settings.profiles.ProfileDetailsFragment;
 import com.android.car.settings.quicksettings.QuickSettingFragment;
 import com.android.car.settings.security.SecuritySettingsFragment;
 import com.android.car.settings.sound.RingtonePickerFragment;
@@ -63,8 +65,6 @@
 import com.android.car.settings.system.SystemSettingsFragment;
 import com.android.car.settings.tts.TextToSpeechOutputFragment;
 import com.android.car.settings.units.UnitsSettingsFragment;
-import com.android.car.settings.users.UserDetailsFragment;
-import com.android.car.settings.users.UsersListFragment;
 import com.android.car.settings.wifi.AddWifiFragment;
 import com.android.car.settings.wifi.WifiSettingsFragment;
 import com.android.car.settings.wifi.WifiTetherFragment;
@@ -95,7 +95,19 @@
         @Nullable
         @Override
         protected Fragment getInitialFragment() {
-            return new HomepageFragment();
+            try {
+                return getSupportFragmentManager().getFragmentFactory().instantiate(
+                        getClassLoader(), getString(R.string.config_homepage_fragment_class));
+            } catch (Fragment.InstantiationException e) {
+                LOG.e("Unable to instantiate homepage fragment", e);
+                return null;
+            }
+        }
+
+        @Override
+        protected boolean shouldFocusContentOnLaunch() {
+            // Focus should stay with the top-level menu for the HomepageActivity.
+            return false;
         }
     }
 
@@ -182,13 +194,24 @@
     }
 
     /**
-     * Apps and Notifications Activity.
+     * Apps Activity.
      */
-    public static class AppsAndNotificationsActivity extends BaseCarSettingsActivity {
+    public static class AppsActivity extends BaseCarSettingsActivity {
         @Nullable
         @Override
         protected Fragment getInitialFragment() {
-            return new AppsAndNotificationsFragment();
+            return new AppsFragment();
+        }
+    }
+
+    /**
+     * Notifications Activity.
+     */
+    public static class NotificationsActivity extends BaseCarSettingsActivity {
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new NotificationsFragment();
         }
     }
 
@@ -204,34 +227,13 @@
     }
 
     /**
-     * User Details Activity.
-     * The initial fragment shown is based on whether the current user is an admin.
+     * Profile Details Activity.
      */
-    public static class UserDetailsActivity extends BaseCarSettingsActivity {
+    public static class ProfileDetailsActivity extends BaseCarSettingsActivity {
         @Nullable
         @Override
         protected Fragment getInitialFragment() {
-            UserManager userManager = UserManager.get(this);
-            if (userManager.isAdminUser()) {
-                // Admins can see a full list of users in Settings.
-                LOG.v("Creating UsersListFragment for admin user.");
-                return new UsersListFragment();
-            } else {
-                // Non-admins can only manage themselves in Settings.
-                LOG.v("Creating UserDetailsFragment for non-admin.");
-                return UserDetailsFragment.newInstance(UserHandle.myUserId());
-            }
-        }
-    }
-
-    /**
-     * Account Settings Activity.
-     */
-    public static class AccountSettingsActivity extends BaseCarSettingsActivity {
-        @Nullable
-        @Override
-        protected Fragment getInitialFragment() {
-            return new AccountSettingsFragment();
+            return ProfileDetailsFragment.newInstance(UserHandle.myUserId());
         }
     }
 
@@ -247,6 +249,17 @@
     }
 
     /**
+     * Vehicle Data Activity.
+     */
+    public static class VehicleDataActivity extends BaseCarSettingsActivity {
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new VehicleDataFragment();
+        }
+    }
+
+    /**
      * Storage Settings Activity.
      */
     public static class StorageSettingsActivity extends BaseCarSettingsActivity {
@@ -269,6 +282,17 @@
     }
 
     /**
+     * Assistant & voice Settings Activity.
+     */
+    public static class AssistantAndVoiceSettingsActivity extends BaseCarSettingsActivity {
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new AssistantAndVoiceFragment();
+        }
+    }
+
+    /**
      * System Settings Activity.
      */
     public static class SystemSettingsActivity extends BaseCarSettingsActivity {
diff --git a/src/com/android/car/settings/common/CarUxRestrictionsHelper.java b/src/com/android/car/settings/common/CarUxRestrictionsHelper.java
index e683661..4c31025 100644
--- a/src/com/android/car/settings/common/CarUxRestrictionsHelper.java
+++ b/src/com/android/car/settings/common/CarUxRestrictionsHelper.java
@@ -17,13 +17,9 @@
 
 import android.app.Activity;
 import android.car.Car;
-import android.car.CarNotConnectedException;
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.drivingstate.CarUxRestrictionsManager;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.ServiceConnection;
-import android.os.IBinder;
 
 import androidx.annotation.Nullable;
 
@@ -47,42 +43,34 @@
             throw new IllegalArgumentException("Listener cannot be null.");
         }
         mListener = listener;
-        mCar = Car.createCar(context, mServiceConnection);
-    };
-
-    /**
-     * Starts monitoring any changes in {@link CarUxRestrictions}.
-     *
-     * <p>This method can be called from {@code Activity}'s {@link Activity#onStart()}, or at the
-     * time of construction.
-     *
-     * <p>This method must be accompanied with a matching {@link #stop()} to avoid leak.
-     */
-    public void start() {
-        try {
-            if (mCar != null && !mCar.isConnected()) {
-                mCar.connect();
-            }
-        } catch (IllegalStateException e) {
-            // Do nothing.
-            LOG.w("start(); cannot connect to Car");
+        mCar = Car.createCar(context);
+        mCarUxRestrictionsManager = (CarUxRestrictionsManager)
+                mCar.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);
+        if (mCarUxRestrictionsManager != null) {
+            mCarUxRestrictionsManager.registerListener(mListener);
+            mListener.onUxRestrictionsChanged(
+                    mCarUxRestrictionsManager.getCurrentCarUxRestrictions());
         }
     }
 
     /**
      * Stops monitoring any changes in {@link CarUxRestrictions}.
      *
-     * <p>This method should be called from {@code Activity}'s {@link Activity#onStop()}, or at the
-     * time of this adapter being discarded.
+     * <p>This method should be called from {@code Activity}'s {@link Activity#onDestroy()}, or at
+     * the time of this adapter being discarded.
      */
-    public void stop() {
+    public void destroy() {
         try {
             if (mCar != null && mCar.isConnected()) {
                 mCar.disconnect();
             }
         } catch (IllegalStateException e) {
             // Do nothing.
-            LOG.w("stop(); cannot disconnect from Car");
+            LOG.w("destroy(); cannot disconnect from Car");
+        }
+        if (mCarUxRestrictionsManager != null) {
+            mCarUxRestrictionsManager.unregisterListener();
+            mCarUxRestrictionsManager = null;
         }
     }
 
@@ -94,30 +82,4 @@
                 & CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP)
                 == CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP;
     }
-
-    private final ServiceConnection mServiceConnection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            try {
-                mCarUxRestrictionsManager = (CarUxRestrictionsManager)
-                        mCar.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);
-                mCarUxRestrictionsManager.registerListener(mListener);
-
-                mListener.onUxRestrictionsChanged(
-                        mCarUxRestrictionsManager.getCurrentCarUxRestrictions());
-            } catch (CarNotConnectedException e) {
-                e.printStackTrace();
-            }
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            try {
-                mCarUxRestrictionsManager.unregisterListener();
-                mCarUxRestrictionsManager = null;
-            } catch (CarNotConnectedException e) {
-                e.printStackTrace();
-            }
-        }
-    };
 }
diff --git a/src/com/android/car/settings/common/ClickableWhileDisabledPreference.java b/src/com/android/car/settings/common/ClickableWhileDisabledPreference.java
new file mode 100644
index 0000000..893923c
--- /dev/null
+++ b/src/com/android/car/settings/common/ClickableWhileDisabledPreference.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.ui.preference.CarUiPreference;
+
+import java.util.function.Consumer;
+
+/**
+ * Preference that can be given a disabled look but still be clickable. This enables behavior such
+ * as showing a Toast message when clicking on a disabled preference to explain why it's disabled.
+ */
+public class ClickableWhileDisabledPreference extends CarUiPreference {
+
+    private Consumer<Preference> mClickListener;
+
+    public ClickableWhileDisabledPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public ClickableWhileDisabledPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public ClickableWhileDisabledPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ClickableWhileDisabledPreference(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        holder.itemView.setAllowClickWhenDisabled(true);
+    }
+
+    @Override
+    @SuppressWarnings("RestrictTo")
+    public void performClick() {
+        if (!isEnabled()) {
+            if (mClickListener != null) {
+                mClickListener.accept(this);
+            }
+        } else {
+            super.performClick();
+        }
+    }
+
+    /**
+     * Sets the click listener for when the preference is disabled.
+     * @param listener Listener to call when the preference is disabled and clicked.
+     */
+    public void setDisabledClickListener(@Nullable Consumer<Preference> listener) {
+        mClickListener = listener;
+    }
+}
diff --git a/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreference.java b/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreference.java
new file mode 100644
index 0000000..4a24da6
--- /dev/null
+++ b/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreference.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import java.util.function.Consumer;
+
+/**
+ * Extends {@link ColoredSwitchPreference} to give a disabled look while it is clickable.
+ */
+public class ClickableWhileDisabledSwitchPreference extends ColoredSwitchPreference {
+
+    private Consumer<Preference> mClickListener;
+
+    public ClickableWhileDisabledSwitchPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public ClickableWhileDisabledSwitchPreference(Context context, AttributeSet attrs,
+            int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public ClickableWhileDisabledSwitchPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ClickableWhileDisabledSwitchPreference(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        holder.itemView.setAllowClickWhenDisabled(true);
+    }
+
+    @Override
+    @SuppressWarnings("RestrictTo")
+    public void performClick() {
+        if (!isEnabled()) {
+            if (mClickListener != null) {
+                mClickListener.accept(this);
+            }
+        } else {
+            super.performClick();
+        }
+    }
+
+    /**
+     * Sets the click listener for when the preference is disabled.
+     * @param listener Listener to call when the preference is disabled and clicked.
+     */
+    public void setDisabledClickListener(@Nullable Consumer<Preference> listener) {
+        mClickListener = listener;
+    }
+}
diff --git a/src/com/android/car/settings/common/ColoredPreference.java b/src/com/android/car/settings/common/ColoredPreference.java
new file mode 100644
index 0000000..8da5850
--- /dev/null
+++ b/src/com/android/car/settings/common/ColoredPreference.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2020 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiPreference;
+import com.android.settingslib.Utils;
+
+/**
+ * Extends {@link CarUiPreference} to customize title and icon colors.
+ */
+public class ColoredPreference extends CarUiPreference {
+    private ColorStateList mTitleColor;
+    private int mIconColor;
+
+    public ColoredPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(context, attrs);
+    }
+
+    public ColoredPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context, attrs);
+    }
+
+    public ColoredPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context, attrs);
+    }
+
+    public ColoredPreference(Context context) {
+        super(context);
+        init(context, /* attrs= */ null);
+    }
+
+    private void init(Context context, AttributeSet attrs) {
+        TypedArray a = context.obtainStyledAttributes(attrs,
+                R.styleable.ColoredPreference);
+        mTitleColor = a.getColorStateList(R.styleable.ColoredPreference_titleColor);
+        if (mTitleColor == null) {
+            mTitleColor = Utils.getColorAttr(context, android.R.attr.textColorPrimary);
+        }
+        mIconColor = a.getColor(R.styleable.ColoredPreference_iconColor, /* defValue= */ 0);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        TextView title = holder.itemView.findViewById(android.R.id.title);
+        if (title != null) {
+            title.setTextColor(mTitleColor);
+        }
+        if (mIconColor != 0) {
+            getIcon().setTint(mIconColor);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/ColoredSwitchPreference.java b/src/com/android/car/settings/common/ColoredSwitchPreference.java
new file mode 100644
index 0000000..105a6f5
--- /dev/null
+++ b/src/com/android/car/settings/common/ColoredSwitchPreference.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2020 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiSwitchPreference;
+import com.android.settingslib.Utils;
+
+/**
+ * Extends {@link CarUiSwitchPreference} to customize colors for each state.
+ */
+public class ColoredSwitchPreference extends CarUiSwitchPreference {
+    private ColorStateList mEnabledColor;
+    private ColorStateList mDisabledColor;
+    private String mContentDescription;
+
+    public ColoredSwitchPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(context, attrs);
+    }
+
+    public ColoredSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context, attrs);
+    }
+
+    public ColoredSwitchPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context, attrs);
+    }
+
+    public ColoredSwitchPreference(Context context) {
+        super(context);
+        init(context, /* attrs= */ null);
+    }
+
+    private void init(Context context, AttributeSet attrs) {
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ColoredSwitchPreference);
+        mDisabledColor = a.getColorStateList(
+                R.styleable.ColoredSwitchPreference_disabledTitleColor);
+        if (mDisabledColor == null) {
+            mDisabledColor = Utils.getColorAttr(context, android.R.attr.textColorPrimary);
+        }
+        mEnabledColor = a.getColorStateList(R.styleable.ColoredSwitchPreference_enabledTitleColor);
+        if (mEnabledColor == null) {
+            mEnabledColor = Utils.getColorAttr(context, android.R.attr.textColorPrimary);
+        }
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        if (!TextUtils.isEmpty(mContentDescription)) {
+            holder.itemView.setContentDescription(mContentDescription);
+        }
+        TextView title = holder.itemView.findViewById(android.R.id.title);
+        if (title != null) {
+            if (isChecked()) {
+                title.setTextColor(mEnabledColor);
+            } else {
+                title.setTextColor(mDisabledColor);
+            }
+        }
+    }
+
+    /**
+     * Set a content description for the preference. This is mainly for accessibility or
+     * UI Automation purposes.
+     */
+    public void setContentDescription(String contentDescription) {
+        mContentDescription = contentDescription;
+        notifyChanged();
+    }
+}
diff --git a/src/com/android/car/settings/common/DividerPreference.java b/src/com/android/car/settings/common/DividerPreference.java
new file mode 100644
index 0000000..f09a70c
--- /dev/null
+++ b/src/com/android/car/settings/common/DividerPreference.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2020 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+
+/**
+ * Non-interactive preference that displays a horizontal divider.
+ */
+public class DividerPreference extends Preference {
+    public DividerPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public DividerPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public DividerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public DividerPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    private void init() {
+        setLayoutResource(R.layout.divider_preference);
+        setSelectable(false);
+    }
+}
diff --git a/src/com/android/car/settings/common/EntityHeaderPreference.java b/src/com/android/car/settings/common/EntityHeaderPreference.java
index 55cf48f..69a5edf 100644
--- a/src/com/android/car/settings/common/EntityHeaderPreference.java
+++ b/src/com/android/car/settings/common/EntityHeaderPreference.java
@@ -17,6 +17,7 @@
 package com.android.car.settings.common;
 
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -39,27 +40,28 @@
     public EntityHeaderPreference(Context context, AttributeSet attrs,
             int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
-        init();
+        init(context, attrs);
     }
 
     public EntityHeaderPreference(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
-        init();
+        init(context, attrs);
     }
 
     public EntityHeaderPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
-        init();
+        init(context, attrs);
     }
 
     public EntityHeaderPreference(Context context) {
         super(context);
-        init();
+        init(context, /* attrs= */ null);
     }
 
-    private void init() {
+    private void init(Context context, AttributeSet attrs) {
         setLayoutResource(R.layout.entity_header_preference);
-        setSelectable(false);
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Preference);
+        setSelectable(a.getBoolean(R.styleable.Preference_selectable, /* defValue= */ false));
     }
 
     @Override
diff --git a/src/com/android/car/settings/common/ExtraSettingsLoader.java b/src/com/android/car/settings/common/ExtraSettingsLoader.java
index fd41521..e9943e4 100644
--- a/src/com/android/car/settings/common/ExtraSettingsLoader.java
+++ b/src/com/android/car/settings/common/ExtraSettingsLoader.java
@@ -17,14 +17,15 @@
 package com.android.car.settings.common;
 
 import static com.android.settingslib.drawer.CategoryKey.CATEGORY_DEVICE;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE_URI;
 
+import static java.lang.String.CASE_INSENSITIVE_ORDER;
+
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.Intent;
@@ -39,29 +40,38 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
-import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
 import com.android.car.ui.preference.CarUiPreference;
+import com.android.settingslib.drawer.TileUtils;
 
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * Loads Activity with TileUtils.EXTRA_SETTINGS_ACTION.
  */
 // TODO: investigate using SettingsLib Tiles.
 public class ExtraSettingsLoader {
+    static final String META_DATA_PREFERENCE_IS_TOP_LEVEL = "injectedTopLevelPreference";
     private static final Logger LOG = new Logger(ExtraSettingsLoader.class);
     private static final String META_DATA_PREFERENCE_CATEGORY = "com.android.settings.category";
     private final Context mContext;
+    private final Set<String> mTopLevelCategories;
+    private final boolean mIsTopLevelSummariesEnabled;
     private Map<Preference, Bundle> mPreferenceBundleMap;
     private PackageManager mPm;
 
     public ExtraSettingsLoader(Context context) {
         mContext = context;
         mPm = context.getPackageManager();
-        mPreferenceBundleMap = new HashMap<>();
+        mPreferenceBundleMap = new LinkedHashMap<>();
+        mTopLevelCategories = Set.of(mContext.getResources().getStringArray(
+                R.array.config_top_level_injection_categories));
+        mIsTopLevelSummariesEnabled = mContext.getResources().getBoolean(
+                R.bool.config_top_level_injection_enable_summaries);
     }
 
     @VisibleForTesting
@@ -75,18 +85,49 @@
      * resolving activities and a category with the key "com.android.settings.category" and one of
      * the values in {@link com.android.settingslib.drawer.CategoryKey}.
      *
+     * {@link com.android.settingslib.drawer.TileUtils#EXTRA_SETTINGS_ACTION} is automatically added
+     * for backwards compatibility. Please make sure to use
+     * {@link com.android.settingslib.drawer.TileUtils#IA_SETTINGS_ACTION} instead.
+     *
      * @param intent intent specifying the extra settings category to load
      */
     public Map<Preference, Bundle> loadPreferences(Intent intent) {
+        intent.setAction(TileUtils.IA_SETTINGS_ACTION);
         List<ResolveInfo> results = mPm.queryIntentActivitiesAsUser(intent,
                 PackageManager.GET_META_DATA, ActivityManager.getCurrentUser());
 
-        String extraCategory = intent.getStringExtra(META_DATA_PREFERENCE_CATEGORY);
-        for (ResolveInfo resolved : results) {
-            if (!resolved.system) {
-                // Do not allow any app to be added to settings, only system ones.
-                continue;
+        intent.setAction(TileUtils.EXTRA_SETTINGS_ACTION);
+        List<ResolveInfo> extra_settings_results = mPm.queryIntentActivitiesAsUser(intent,
+                PackageManager.GET_META_DATA, ActivityManager.getCurrentUser());
+        for (ResolveInfo extra_settings_resolveInfo : extra_settings_results) {
+            if (!results.contains(extra_settings_resolveInfo)) {
+                results.add(extra_settings_resolveInfo);
             }
+        }
+
+        String extraCategory = intent.getStringExtra(META_DATA_PREFERENCE_CATEGORY);
+
+        // Filter to only include valid results and then sort the results
+        // Filter criteria: must be a system application and must have metaData
+        // Sort criteria: sort results based on [order, package within order]
+        results = results.stream()
+                .filter(r -> r.system && r.activityInfo != null && r.activityInfo.metaData != null)
+                .sorted((r1, r2) -> {
+                    // First sort by order
+                    int orderCompare = r2.activityInfo.metaData.getInt(META_DATA_KEY_ORDER)
+                            - r1.activityInfo.metaData.getInt(META_DATA_KEY_ORDER);
+                    if (orderCompare != 0) {
+                        return orderCompare;
+                    }
+
+                    // Then sort by package name
+                    String package1 = r1.activityInfo.packageName;
+                    String package2 = r2.activityInfo.packageName;
+                    return CASE_INSENSITIVE_ORDER.compare(package1, package2);
+                })
+                .collect(Collectors.toList());
+
+        for (ResolveInfo resolved : results) {
             String key = null;
             String title = null;
             String summary = null;
@@ -118,26 +159,31 @@
             } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) {
                 LOG.d("Couldn't find info", e);
             }
-            Drawable icon = null;
-            if (metaData.containsKey(META_DATA_PREFERENCE_ICON)) {
-                int iconRes = metaData.getInt(META_DATA_PREFERENCE_ICON);
-                icon = ExtraSettingsUtil.loadDrawableFromPackage(mContext,
-                        activityInfo.packageName, iconRes);
-            } else if (!metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) {
-                icon = mContext.getDrawable(R.drawable.ic_settings_gear);
-                LOG.d("use default icon.");
-            }
             Intent extraSettingIntent =
                     new Intent().setClassName(activityInfo.packageName, activityInfo.name);
             if (category == null) {
                 // If category is not specified or not supported, default to device.
                 category = CATEGORY_DEVICE;
             }
+            boolean isTopLevel = mTopLevelCategories.contains(category);
+            metaData.putBoolean(META_DATA_PREFERENCE_IS_TOP_LEVEL, isTopLevel);
+            Drawable icon = ExtraSettingsUtil.createIcon(mContext, metaData,
+                    activityInfo.packageName);
 
             if (!TextUtils.equals(extraCategory, category)) {
                 continue;
             }
-            CarUiPreference preference = new CarUiPreference(mContext);
+            CarUiPreference preference;
+            if (isTopLevel) {
+                preference = new TopLevelPreference(mContext);
+                if (!mIsTopLevelSummariesEnabled) {
+                    // remove summary data
+                    summary = null;
+                    metaData.remove(META_DATA_PREFERENCE_SUMMARY_URI);
+                }
+            } else {
+                preference = new CarUiPreference(mContext);
+            }
             preference.setTitle(title);
             preference.setSummary(summary);
             if (key != null) {
@@ -145,10 +191,6 @@
             }
             if (icon != null) {
                 preference.setIcon(icon);
-                if (ExtraSettingsUtil.isIconTintable(metaData)) {
-                    preference.getIcon().setTintList(
-                            Themes.getAttrColorStateList(mContext, R.attr.iconColor));
-                }
             }
             preference.setIntent(extraSettingIntent);
             mPreferenceBundleMap.put(preference, metaData);
diff --git a/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
index 2992bc0..7373cd7 100644
--- a/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
+++ b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
@@ -19,7 +19,6 @@
 import static com.android.settingslib.drawer.SwitchesProvider.METHOD_GET_DYNAMIC_SUMMARY;
 import static com.android.settingslib.drawer.SwitchesProvider.METHOD_GET_DYNAMIC_TITLE;
 import static com.android.settingslib.drawer.SwitchesProvider.METHOD_GET_PROVIDER_ICON;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
@@ -45,7 +44,6 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 
-import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
 import com.android.settingslib.drawer.TileUtils;
 import com.android.settingslib.utils.ThreadUtils;
@@ -60,13 +58,17 @@
  * name of this class. The preference should contain an intent which will be passed to
  * {@link ExtraSettingsLoader#loadPreferences(Intent)}.
  *
+ * {@link com.android.settingslib.drawer.TileUtils#EXTRA_SETTINGS_ACTION} is automatically added
+ * for backwards compatibility. Please make sure to use
+ * {@link com.android.settingslib.drawer.TileUtils#IA_SETTINGS_ACTION} instead.
+ *
  * <p>For example:
  * <pre>{@code
  * <PreferenceCategory
  *     android:key="@string/pk_system_extra_settings"
  *     android:title="@string/system_extra_settings_title"
  *     settings:controller="com.android.settings.common.ExtraSettingsPreferenceController">
- *     <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+ *     <intent android:action="com.android.settings.action.IA_SETTINGS">
  *         <extra android:name="com.android.settings.category"
  *                android:value="com.android.settings.category.system"/>
  *     </intent>
@@ -168,8 +170,6 @@
                         metaData.getBoolean(META_DATA_DISTRACTION_OPTIMIZED);
             }
             setting.getExtras().putBoolean(META_DATA_DISTRACTION_OPTIMIZED, distractionOptimized);
-            setting.getExtras().putBoolean(META_DATA_PREFERENCE_ICON_TINTABLE,
-                    ExtraSettingsUtil.isIconTintable(metaData));
             getDynamicData(setting, metaData);
             getPreference().addPreference(setting);
         }
@@ -186,7 +186,8 @@
             Uri uri = ExtraSettingsUtil.getCompleteUri(metaData, META_DATA_PREFERENCE_TITLE_URI,
                     METHOD_GET_DYNAMIC_TITLE);
             refreshTitle(uri, preference);
-            mObservers.add(new DynamicDataObserver(METHOD_GET_DYNAMIC_TITLE, uri, preference));
+            mObservers.add(
+                    new DynamicDataObserver(METHOD_GET_DYNAMIC_TITLE, uri, metaData, preference));
         }
         if (metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
             // Set a placeholder summary before starting to fetch real summary to prevent vertical
@@ -195,7 +196,8 @@
             Uri uri = ExtraSettingsUtil.getCompleteUri(metaData, META_DATA_PREFERENCE_SUMMARY_URI,
                     METHOD_GET_DYNAMIC_SUMMARY);
             refreshSummary(uri, preference);
-            mObservers.add(new DynamicDataObserver(METHOD_GET_DYNAMIC_SUMMARY, uri, preference));
+            mObservers.add(
+                    new DynamicDataObserver(METHOD_GET_DYNAMIC_SUMMARY, uri, metaData, preference));
         }
         if (metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) {
             // Set a placeholder icon before starting to fetch real icon to prevent horizontal
@@ -203,8 +205,9 @@
             preference.setIcon(R.drawable.ic_placeholder);
             Uri uri = ExtraSettingsUtil.getCompleteUri(metaData, META_DATA_PREFERENCE_ICON_URI,
                     METHOD_GET_PROVIDER_ICON);
-            refreshIcon(uri, preference);
-            mObservers.add(new DynamicDataObserver(METHOD_GET_PROVIDER_ICON, uri, preference));
+            refreshIcon(uri, metaData, preference);
+            mObservers.add(
+                    new DynamicDataObserver(METHOD_GET_PROVIDER_ICON, uri, metaData, preference));
         }
     }
 
@@ -240,7 +243,7 @@
         });
     }
 
-    private void refreshIcon(Uri uri, Preference preference) {
+    private void refreshIcon(Uri uri, Bundle metaData, Preference preference) {
         executeBackgroundTask(() -> {
             Intent intent = preference.getIntent();
             String packageName = null;
@@ -254,20 +257,15 @@
                     mContext, packageName, uri, providerMap);
             Drawable icon;
             if (iconInfo != null) {
-                icon = ExtraSettingsUtil.loadDrawableFromPackage(mContext,
-                        iconInfo.first, iconInfo.second);
+                icon = ExtraSettingsUtil.createIcon(mContext, metaData, iconInfo.first,
+                        iconInfo.second);
             } else {
                 LOG.w("Failed to get icon from uri " + uri);
-                icon = mContext.getDrawable(R.drawable.ic_settings_gear);
-                LOG.d("use default icon.");
+                icon = ExtraSettingsUtil.createIcon(mContext, metaData, packageName, 0);
             }
             if (icon != null) {
                 executeUiTask(() -> {
                     preference.setIcon(icon);
-                    if (preference.getExtras().getBoolean(META_DATA_PREFERENCE_ICON_TINTABLE)) {
-                        preference.getIcon().setTintList(
-                                Themes.getAttrColorStateList(mContext, R.attr.iconColor));
-                    }
                 });
             }
         });
@@ -279,12 +277,14 @@
     private class DynamicDataObserver extends ContentObserver {
         private final String mMethod;
         private final Uri mUri;
+        private final Bundle mMetaData;
         private final Preference mPreference;
 
-        DynamicDataObserver(String method, Uri uri, Preference preference) {
+        DynamicDataObserver(String method, Uri uri, Bundle metaData, Preference preference) {
             super(new Handler(Looper.getMainLooper()));
             mMethod = method;
             mUri = uri;
+            mMetaData = metaData;
             mPreference = preference;
         }
 
@@ -308,7 +308,7 @@
                     refreshSummary(mUri, mPreference);
                     break;
                 case METHOD_GET_PROVIDER_ICON:
-                    refreshIcon(mUri, mPreference);
+                    refreshIcon(mUri, mMetaData, mPreference);
                     break;
             }
         }
diff --git a/src/com/android/car/settings/common/ExtraSettingsUtil.java b/src/com/android/car/settings/common/ExtraSettingsUtil.java
index f994847..1a9ed8e 100644
--- a/src/com/android/car/settings/common/ExtraSettingsUtil.java
+++ b/src/com/android/car/settings/common/ExtraSettingsUtil.java
@@ -16,7 +16,10 @@
 
 package com.android.car.settings.common;
 
+import static com.android.car.settings.common.ExtraSettingsLoader.META_DATA_PREFERENCE_IS_TOP_LEVEL;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
 
 import android.content.ContentResolver;
@@ -28,6 +31,12 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+
 import java.util.List;
 
 /** Contains utility functions for injected settings. */
@@ -35,6 +44,53 @@
     private static final Logger LOG = new Logger(ExtraSettingsUtil.class);
 
     /**
+     * See {@link #createIcon(Context, Bundle, String, int)
+     * <p>
+     * Will return null if the provided metadata does not specify
+     * {@link com.android.settingslib.drawer.TileUtils#META_DATA_PREFERENCE_ICON} but contains
+     * {@link com.android.settingslib.drawer.TileUtils#META_DATA_PREFERENCE_ICON_URI}.
+     */
+    @Nullable
+    public static Drawable createIcon(Context context, Bundle metaData, String packageName) {
+        if (metaData.containsKey(META_DATA_PREFERENCE_ICON)) {
+            int iconRes = metaData.getInt(META_DATA_PREFERENCE_ICON);
+            return createIcon(context, metaData, packageName, iconRes);
+        } else if (metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) {
+            return null;
+        }
+        return createIcon(context, metaData, packageName, /* resId= */ 0);
+    }
+
+    /**
+     * Returns an icon for an injected preference with the necessary styling, or null if the
+     * provided {@code resId} could not be loaded.
+     */
+    @Nullable
+    public static Drawable createIcon(Context context, Bundle metaData, String packageName,
+            @DrawableRes int resId) {
+        Drawable icon;
+        if (resId != 0) {
+            icon = loadDrawableFromPackage(context, packageName, resId);
+        } else {
+            icon = context.getDrawable(R.drawable.ic_settings_gear);
+            LOG.d("Icon not provided for " + packageName + "; using default icon");
+        }
+        if (icon == null) {
+            return null;
+        }
+        if (metaData.getBoolean(META_DATA_PREFERENCE_IS_TOP_LEVEL, /* defaultValue= */ false)) {
+            icon.mutate().setTintList(
+                    context.getColorStateList(R.color.top_level_injected_icon_default));
+            icon = new TopLevelIcon(context, icon, R.dimen.top_level_foreground_icon_inset);
+            ((TopLevelIcon) icon).setBackgroundColor(context, metaData, packageName);
+        } else if (isIconTintable(metaData)) {
+            // If the icon is tintable, tint it with the default icon color attribute
+            icon.mutate().setTintList(Themes.getAttrColorStateList(context, R.attr.iconColor));
+        }
+        return icon;
+    }
+
+    /**
      * Returns whether or not an icon is tintable given the injected setting metadata.
      */
     public static boolean isIconTintable(Bundle metaData) {
diff --git a/src/com/android/car/settings/common/FragmentController.java b/src/com/android/car/settings/common/FragmentController.java
index 419fbbd..2107334 100644
--- a/src/com/android/car/settings/common/FragmentController.java
+++ b/src/com/android/car/settings/common/FragmentController.java
@@ -20,9 +20,11 @@
 import android.content.IntentSender;
 import android.os.Bundle;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
 
 /**
  * Encapsulates a subset of the operations possible from a {@link Fragment}.
@@ -47,6 +49,11 @@
     void showDialog(DialogFragment dialogFragment, @Nullable String tag);
 
     /**
+     * Shows/hides the Fragment's progress bar.
+     */
+    void showProgressBar(boolean visible);
+
+    /**
      * Finds dialog by tag. This is primarily used to reattach listeners to dialogs after
      * configuration change. This method will return null if the tag references a fragment that
      * isn't a dialog fragment or no dialog with the given tag exists.
@@ -55,6 +62,12 @@
     DialogFragment findDialogByTag(String tag);
 
     /**
+     * Returns the current Lifecycle instance for the fragment.
+     */
+    @NonNull
+    Lifecycle getSettingsLifecycle();
+
+    /**
      * Starts an activity for a result. When the result is received, the {@link
      * ActivityResultCallback} is passed the result. Note that the implementer of this interface
      * must ensure that the callback is valid throughout the lifecycle of the new activity that is
diff --git a/src/com/android/car/settings/common/FragmentHost.java b/src/com/android/car/settings/common/FragmentHost.java
index 4a8925d..3d24bc1 100644
--- a/src/com/android/car/settings/common/FragmentHost.java
+++ b/src/com/android/car/settings/common/FragmentHost.java
@@ -18,6 +18,8 @@
 
 import androidx.fragment.app.Fragment;
 
+import com.android.car.ui.toolbar.ToolbarController;
+
 /**
  * Implemented by Settings {@link android.app.Activity} instances to host Settings {@link Fragment}
  * instances.
@@ -37,4 +39,9 @@
      * Shows a message to inform the user that the current feature is not available when driving.
      */
     void showBlockingMessage();
+
+    /**
+     * Returns the currently modifiable toolbar for the activity.
+     */
+    ToolbarController getToolbar();
 }
diff --git a/src/com/android/car/settings/common/HighlightablePreferenceGroupAdapter.java b/src/com/android/car/settings/common/HighlightablePreferenceGroupAdapter.java
new file mode 100644
index 0000000..1a9610d
--- /dev/null
+++ b/src/com/android/car/settings/common/HighlightablePreferenceGroupAdapter.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.util.TypedValue;
+import android.view.View;
+
+import androidx.annotation.DrawableRes;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceGroupAdapter;
+import androidx.preference.PreferenceViewHolder;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.car.settings.R;
+
+/** RecyclerView adapter that supports single-preference highlighting. */
+public class HighlightablePreferenceGroupAdapter extends PreferenceGroupAdapter {
+
+    @DrawableRes
+    private final int mNormalBackgroundRes;
+    @DrawableRes
+    private final int mHighlightBackgroundRes;
+    private int mHighlightPosition = RecyclerView.NO_POSITION;
+
+    public HighlightablePreferenceGroupAdapter(PreferenceGroup preferenceGroup) {
+        super(preferenceGroup);
+        Context context = preferenceGroup.getContext();
+        TypedValue outValue = new TypedValue();
+        context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
+                outValue, /* resolveRefs= */ true);
+        mNormalBackgroundRes = outValue.resourceId;
+        mHighlightBackgroundRes = R.drawable.preference_highlight_default;
+    }
+
+    public HighlightablePreferenceGroupAdapter(PreferenceGroup preferenceGroup,
+            @DrawableRes int normalBackgroundRes, @DrawableRes int highlightBackgroundRes) {
+        super(preferenceGroup);
+        mNormalBackgroundRes = normalBackgroundRes;
+        mHighlightBackgroundRes = highlightBackgroundRes;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder, int position) {
+        super.onBindViewHolder(holder, position);
+        updateBackground(holder, position);
+    }
+
+    private void updateBackground(PreferenceViewHolder holder, int position) {
+        View v = holder.itemView;
+        if (position == mHighlightPosition) {
+            addHighlightBackground(v);
+        } else if (hasHighlightBackground(v)) {
+            removeHighlightBackground(v);
+        }
+    }
+
+    /**
+     * Requests that a particular preference be highlighted. This will remove the highlight from
+     * the previously highlighted preference.
+     */
+    public void requestHighlight(View root, RecyclerView recyclerView, String key) {
+        if (root == null || recyclerView == null) {
+            return;
+        }
+        int position = getPreferenceAdapterPosition(key);
+        if (position < 0) {
+            // Item is not in the list - clearing the previous highlight without setting a new one.
+            clearHighlight(root);
+            return;
+        }
+        root.post(() -> {
+            recyclerView.scrollToPosition(position);
+            int oldPosition = mHighlightPosition;
+            mHighlightPosition = position;
+            notifyItemChanged(oldPosition);
+            notifyItemChanged(position);
+        });
+    }
+
+    /**
+     * Removes the highlight from the currently highlighted preference.
+     */
+    public void clearHighlight(View root) {
+        if (root == null) {
+            return;
+        }
+        root.post(() -> {
+            if (mHighlightPosition < 0) {
+                return;
+            }
+            int oldPosition = mHighlightPosition;
+            mHighlightPosition = RecyclerView.NO_POSITION;
+            notifyItemChanged(oldPosition);
+        });
+    }
+
+    private void addHighlightBackground(View v) {
+        v.setTag(R.id.preference_highlighted, true);
+        v.setBackgroundResource(mHighlightBackgroundRes);
+    }
+
+    private void removeHighlightBackground(View v) {
+        v.setTag(R.id.preference_highlighted, false);
+        v.setBackgroundResource(mNormalBackgroundRes);
+    }
+
+    private boolean hasHighlightBackground(View v) {
+        return Boolean.TRUE.equals(v.getTag(R.id.preference_highlighted));
+    }
+}
diff --git a/src/com/android/car/settings/common/LogicalPreferenceGroup.java b/src/com/android/car/settings/common/LogicalPreferenceGroup.java
index 6c5e63c..0570647 100644
--- a/src/com/android/car/settings/common/LogicalPreferenceGroup.java
+++ b/src/com/android/car/settings/common/LogicalPreferenceGroup.java
@@ -17,11 +17,15 @@
 package com.android.car.settings.common;
 
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 
+import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 
-import com.android.car.settings.R;
+import com.android.car.ui.R;
+import com.android.car.ui.preference.CarUiEditTextPreference;
+import com.android.car.ui.preference.CarUiPreference;
 
 /**
  * {@link PreferenceGroup} which does not display a title, icon, or summary. This allows for
@@ -29,10 +33,20 @@
  */
 public class LogicalPreferenceGroup extends PreferenceGroup {
 
+    private final boolean mShouldShowChevron;
+
     public LogicalPreferenceGroup(Context context, AttributeSet attrs, int defStyleAttr,
             int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
         setLayoutResource(R.layout.logical_preference_group);
+        TypedArray a = context.obtainStyledAttributes(
+                attrs,
+                R.styleable.PreferenceGroup,
+                defStyleAttr,
+                defStyleRes);
+
+        mShouldShowChevron = a.getBoolean(R.styleable.PreferenceGroup_showChevron, true);
+        a.recycle();
     }
 
     public LogicalPreferenceGroup(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -46,4 +60,13 @@
     public LogicalPreferenceGroup(Context context) {
         this(context, null);
     }
+
+    @Override
+    public boolean addPreference(Preference preference) {
+        if (!mShouldShowChevron && (preference instanceof CarUiPreference
+                || preference instanceof CarUiEditTextPreference)) {
+            ((CarUiPreference) preference).setShowChevron(false);
+        }
+        return super.addPreference(preference);
+    }
 }
diff --git a/src/com/android/car/settings/common/MultiActionPreference.java b/src/com/android/car/settings/common/MultiActionPreference.java
new file mode 100644
index 0000000..e42936d
--- /dev/null
+++ b/src/com/android/car/settings/common/MultiActionPreference.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.android.car.ui.utils.CarUiUtils.requireViewByRefId;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiPreference;
+
+/**
+ * A class for preferences that have a main click action along with up to three other actions.
+ */
+public class MultiActionPreference extends CarUiPreference
+        implements BaseActionItem.ActionItemInfoChangeListener {
+
+    /**
+     * Identifier enum for the three different action items.
+     */
+    public enum ActionItem {
+        ACTION_ITEM1,
+        ACTION_ITEM2,
+        ACTION_ITEM3,
+    }
+
+    protected BaseActionItem[] mActionItemArray = new BaseActionItem[3];
+
+    public MultiActionPreference(Context context,
+            AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(attrs);
+    }
+
+    public MultiActionPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(attrs);
+    }
+
+    public MultiActionPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(attrs);
+    }
+
+    public MultiActionPreference(Context context) {
+        super(context);
+        init(null);
+    }
+
+    /**
+     * Initialize styles and attributes, as well as what types of action items should be created.
+     *
+     * @param attrs Attribute set from which to read values
+     */
+    @CallSuper
+    protected void init(@Nullable AttributeSet attrs) {
+        TypedArray a = getContext().obtainStyledAttributes(attrs,
+                R.styleable.MultiActionPreference);
+
+        try {
+            // Single case switch statement for now with the assumption more ActionItems will be
+            // added in the future
+            switch(a.getInt(
+                    R.styleable.MultiActionPreference_action_item_one, -1)) {
+                case 0:
+                    mActionItemArray[0] = new ToggleButtonActionItem(this);
+                    break;
+                default:
+                    break;
+            }
+
+            switch(a.getInt(
+                    R.styleable.MultiActionPreference_action_item_two, -1)) {
+                case 0:
+                    mActionItemArray[1] = new ToggleButtonActionItem(this);
+                    break;
+                default:
+                    break;
+            }
+
+            switch(a.getInt(
+                    R.styleable.MultiActionPreference_action_item_three, -1)) {
+                case 0:
+                    mActionItemArray[2] = new ToggleButtonActionItem(this);
+                    break;
+                default:
+                    break;
+            }
+
+            int[] actionItemVisibility = {
+                    R.styleable.MultiActionPreference_action_item_one_shown,
+                    R.styleable.MultiActionPreference_action_item_two_shown,
+                    R.styleable.MultiActionPreference_action_item_three_shown};
+            int[] actionItemEnabled = {
+                    R.styleable.MultiActionPreference_action_item_one_enabled,
+                    R.styleable.MultiActionPreference_action_item_two_enabled,
+                    R.styleable.MultiActionPreference_action_item_three_enabled};
+
+            for (int i = 0; i < mActionItemArray.length; i++) {
+                if (mActionItemArray[i] != null) {
+                    mActionItemArray[i].setVisible(a.getBoolean(
+                            actionItemVisibility[i], true));
+                    mActionItemArray[i].setEnabled(a.getBoolean(
+                            actionItemEnabled[i], true));
+                }
+            }
+        } finally {
+            a.recycle();
+        }
+
+        setLayoutResource(R.layout.multi_action_preference);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+
+        View actionContainer = requireViewByRefId(holder.itemView,
+                R.id.multi_action_preference_second_action_container);
+        FrameLayout container1 = requireViewByRefId(holder.itemView,
+                R.id.multi_action_preference_item_container1);
+        FrameLayout container2 = requireViewByRefId(holder.itemView,
+                R.id.multi_action_preference_item_container2);
+        FrameLayout container3 = requireViewByRefId(holder.itemView,
+                R.id.multi_action_preference_item_container3);
+
+        boolean isActionContainerVisible = false;
+        for (BaseActionItem baseActionItem: mActionItemArray) {
+            if (baseActionItem != null) {
+                baseActionItem.setPreference(this)
+                        .setPreferenceRestricted(isUxRestricted())
+                        .setRestrictedOnClickListener(getOnClickWhileRestrictedListener());
+
+                if (baseActionItem.isVisible()) {
+                    isActionContainerVisible = true;
+                }
+            }
+        }
+
+        actionContainer.setVisibility(isActionContainerVisible ? View.VISIBLE : View.GONE);
+
+        if (mActionItemArray[0] != null) {
+            mActionItemArray[0].bindViewHolder(container1);
+        }
+
+        if (mActionItemArray[1] != null) {
+            mActionItemArray[1].bindViewHolder(container2);
+        }
+
+        if (mActionItemArray[2] != null) {
+            mActionItemArray[2].bindViewHolder(container3);
+        }
+    }
+
+    @Override
+    public void onActionItemChange(BaseActionItem baseActionItem) {
+        notifyChanged();
+    }
+
+    /**
+     * Retrieve the specified BaseActionItem based on the index.
+     */
+    public BaseActionItem getActionItem(ActionItem actionItem) {
+        switch (actionItem) {
+            case ACTION_ITEM1:
+                return mActionItemArray[0];
+            case ACTION_ITEM2:
+                return mActionItemArray[1];
+            case ACTION_ITEM3:
+                return mActionItemArray[2];
+            default:
+                throw new IllegalArgumentException("Invalid button requested");
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/PowerPolicyListener.java b/src/com/android/car/settings/common/PowerPolicyListener.java
new file mode 100644
index 0000000..ce21c21
--- /dev/null
+++ b/src/com/android/car/settings/common/PowerPolicyListener.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.car.Car;
+import android.car.hardware.power.CarPowerManager;
+import android.car.hardware.power.CarPowerPolicy;
+import android.car.hardware.power.CarPowerPolicyFilter;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Listens to power policy change and executes the registered handler.
+ *
+ * <p>{@link android.car.Car} instance and {@link android.car.hardware.power.CarPowerManager}
+ * instances are managed internally, so the callers doesn't have to care about creating/destroying
+ * them.
+ */
+public final class PowerPolicyListener {
+
+    private static final Logger LOG = new Logger(PowerPolicyListener.class);
+
+    private final Executor mExecutor;
+    private final PolicyChangeHandler mPolicyChangeHandler;
+    private final CarPowerManager.CarPowerPolicyListener mPolicyListener =
+            new CarPowerManager.CarPowerPolicyListener() {
+        @Override
+        public void onPolicyChanged(@NonNull CarPowerPolicy policy) {
+            mPolicyChangeHandler.handlePolicyChange(policy.isComponentEnabled(mComponent));
+        }
+    };
+    @Nullable private Car mCar;
+    @Nullable private CarPowerManager mCarPowerManager;
+    private int mComponent;
+
+    /**
+     * Handlers which is called when the given component's power state is changed by power policy.
+     */
+    public interface PolicyChangeHandler {
+        /** Called when a power policy changes around the given component */
+        void handlePolicyChange(boolean isOn);
+    }
+
+    public PowerPolicyListener(Context context, int component, PolicyChangeHandler handler) {
+        mComponent = component;
+        mPolicyChangeHandler = handler;
+        mExecutor = context.getMainExecutor();
+        Car.createCar(context, null, Car.CAR_WAIT_TIMEOUT_WAIT_FOREVER,
+                (car, ready) -> {
+                    if (ready) {
+                        LOG.d("Connected to the Car Service");
+                        mCar = car;
+                        CarPowerPolicyFilter filter = new CarPowerPolicyFilter.Builder()
+                                .setComponents(component).build();
+                        mCarPowerManager = (CarPowerManager) mCar.getCarManager(Car.POWER_SERVICE);
+                        if (mCarPowerManager != null) {
+                            mCarPowerManager.addPowerPolicyListener(mExecutor, filter,
+                                    mPolicyListener);
+                        }
+                    } else {
+                        LOG.d("Disconnected from the Car Service");
+                        mCar = null;
+                        mCarPowerManager = null;
+                    }
+                });
+    }
+
+    /**
+     * Unregisters a power policy listener from {@link android.car.hardware.power.CarPowerManager}
+     * and disconnects from {@link android.car.Car}.
+     */
+    public void release() {
+        if (mCarPowerManager != null) {
+            mCarPowerManager.removePowerPolicyListener(mPolicyListener);
+        }
+        try {
+            if (mCar != null) {
+                mCar.disconnect();
+            }
+        } catch (IllegalStateException e) {
+            // Do nothing.
+            LOG.w("release(): cannot disconnect from Car");
+        }
+    }
+
+    /**
+     * Executes the registered handler with the current power policy.
+     */
+    public void handleCurrentPolicy() {
+        if (mCarPowerManager == null) {
+            LOG.w("CarPowerManager is not available");
+            return;
+        }
+        CarPowerPolicy policy = mCarPowerManager.getCurrentPowerPolicy();
+        if (policy != null) {
+            mPolicyChangeHandler.handlePolicyChange(policy.isComponentEnabled(mComponent));
+        }
+    }
+
+    /**
+     * Gets the registered {@link PolicyChangeHandler}.
+     */
+    public PolicyChangeHandler getPolicyChangeHandler() {
+        return mPolicyChangeHandler;
+    }
+}
diff --git a/src/com/android/car/settings/common/PreferenceController.java b/src/com/android/car/settings/common/PreferenceController.java
index 21452af..8af1117 100644
--- a/src/com/android/car/settings/common/PreferenceController.java
+++ b/src/com/android/car/settings/common/PreferenceController.java
@@ -97,7 +97,7 @@
      * @see #getAvailabilityStatus()
      */
     @Retention(RetentionPolicy.SOURCE)
-    @IntDef({AVAILABLE, CONDITIONALLY_UNAVAILABLE, UNSUPPORTED_ON_DEVICE, DISABLED_FOR_USER,
+    @IntDef({AVAILABLE, CONDITIONALLY_UNAVAILABLE, UNSUPPORTED_ON_DEVICE, DISABLED_FOR_PROFILE,
             AVAILABLE_FOR_VIEWING})
     public @interface AvailabilityStatus {
     }
@@ -109,7 +109,7 @@
 
     /**
      * The setting is currently unavailable but may become available in the future. Use
-     * {@link #DISABLED_FOR_USER} if it describes the condition more accurately.
+     * {@link #DISABLED_FOR_PROFILE} if it describes the condition more accurately.
      */
     public static final int CONDITIONALLY_UNAVAILABLE = 1;
 
@@ -119,9 +119,9 @@
     public static final int UNSUPPORTED_ON_DEVICE = 2;
 
     /**
-     * The setting cannot be changed by the current user.
+     * The setting cannot be changed by the current profile.
      */
-    public static final int DISABLED_FOR_USER = 3;
+    public static final int DISABLED_FOR_PROFILE = 3;
 
     /**
      * The setting cannot be changed.
@@ -148,6 +148,7 @@
     private CarUxRestrictions mUxRestrictions;
     private V mPreference;
     private boolean mIsCreated;
+    private boolean mIsStarted;
 
     /**
      * Controllers should be instantiated from XML. To pass additional arguments see
@@ -293,6 +294,7 @@
             return;
         }
         onStartInternal();
+        mIsStarted = true;
         refreshUi();
     }
 
@@ -329,6 +331,7 @@
         if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
             return;
         }
+        mIsStarted = false;
         onStopInternal();
     }
 
@@ -513,4 +516,8 @@
     protected boolean isUxRestrictionsIgnored(boolean allIgnores, Set prefsThatIgnore) {
         return allIgnores || prefsThatIgnore.contains(mPreferenceKey);
     }
+
+    protected final boolean isStarted() {
+        return mIsStarted;
+    }
 }
diff --git a/src/com/android/car/settings/common/PreferenceXmlParser.java b/src/com/android/car/settings/common/PreferenceXmlParser.java
index 0deeeea..9312508 100644
--- a/src/com/android/car/settings/common/PreferenceXmlParser.java
+++ b/src/com/android/car/settings/common/PreferenceXmlParser.java
@@ -49,6 +49,7 @@
 
     private static final String PREF_TAG_ENDS_WITH = "Preference";
     private static final String PREF_GROUP_TAG_ENDS_WITH = "PreferenceGroup";
+    private static final String PREF_CATEGORY_TAG_ENDS_WITH = "PreferenceCategory";
     private static final List<String> SUPPORTED_PREF_TYPES = Arrays.asList("Preference",
             "PreferenceCategory", "PreferenceScreen");
 
@@ -102,7 +103,8 @@
             }
             final String nodeName = parser.getName();
             if (!SUPPORTED_PREF_TYPES.contains(nodeName) && !nodeName.endsWith(PREF_TAG_ENDS_WITH)
-                    && !nodeName.endsWith(PREF_GROUP_TAG_ENDS_WITH)) {
+                    && !nodeName.endsWith(PREF_GROUP_TAG_ENDS_WITH)
+                    && !nodeName.endsWith(PREF_CATEGORY_TAG_ENDS_WITH)) {
                 continue;
             }
             final Bundle preferenceMetadata = new Bundle();
diff --git a/src/com/android/car/settings/common/SettingsFragment.java b/src/com/android/car/settings/common/SettingsFragment.java
index a945e95..b9bed02 100644
--- a/src/com/android/car/settings/common/SettingsFragment.java
+++ b/src/com/android/car/settings/common/SettingsFragment.java
@@ -16,8 +16,7 @@
 
 package com.android.car.settings.common;
 
-import static com.android.car.ui.core.CarUi.requireInsets;
-import static com.android.car.ui.core.CarUi.requireToolbar;
+import static com.android.car.settings.common.BaseCarSettingsActivity.META_DATA_KEY_SINGLE_PANE;
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.drivingstate.CarUxRestrictionsManager;
@@ -29,7 +28,10 @@
 import android.util.SparseArray;
 import android.util.TypedValue;
 import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
@@ -39,14 +41,16 @@
 import androidx.lifecycle.Lifecycle;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.car.settings.R;
+import com.android.car.ui.baselayout.Insets;
 import com.android.car.ui.preference.PreferenceFragment;
 import com.android.car.ui.recyclerview.CarUiRecyclerView;
 import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.NavButtonMode;
 import com.android.car.ui.toolbar.ToolbarController;
-import com.android.car.ui.utils.CarUiUtils;
+import com.android.car.ui.utils.ViewUtils;
 import com.android.settingslib.search.Indexable;
 
 import java.util.ArrayList;
@@ -82,6 +86,7 @@
             new SparseArray<>();
 
     private CarUxRestrictions mUxRestrictions;
+    private HighlightablePreferenceGroupAdapter mAdapter;
     private int mCurrentRequestIndex = 0;
 
     /**
@@ -91,7 +96,7 @@
     protected abstract int getPreferenceScreenResId();
 
     protected ToolbarController getToolbar() {
-        return requireToolbar(requireActivity());
+        return getFragmentHost().getToolbar();
     }
     /**
      * Returns the MenuItems to display in the toolbar. Subclasses should override this to
@@ -140,9 +145,9 @@
      * content.
      */
     protected void enableRotaryScroll() {
-        CarUiRecyclerView recyclerView = getView().findViewById(R.id.recycler_view);
+        CarUiRecyclerView recyclerView = getView().findViewById(R.id.settings_recycler_view);
         if (recyclerView != null) {
-            CarUiUtils.setRotaryScrollEnabled(recyclerView, /* isVertical= */ true);
+            ViewUtils.setRotaryScrollEnabled(recyclerView, /* isVertical= */ true);
         }
     }
 
@@ -181,12 +186,6 @@
         });
     }
 
-    @Override
-    public void onStart() {
-        super.onStart();
-        onCarUiInsetsChanged(requireInsets(requireActivity()));
-    }
-
     /**
      * Inflates the preferences from {@link #getPreferenceScreenResId()} and associates the
      * preference with their corresponding {@link PreferenceController} instances.
@@ -208,22 +207,28 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        ToolbarController toolbar = getToolbar();
-        if (toolbar != null) {
-            List<MenuItem> items = getToolbarMenuItems();
-            if (items != null) {
-                if (items.size() == 1) {
-                    items.get(0).setId(R.id.toolbar_menu_item_0);
-                } else if (items.size() == 2) {
-                    items.get(0).setId(R.id.toolbar_menu_item_0);
-                    items.get(1).setId(R.id.toolbar_menu_item_1);
-                }
+    public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+            Bundle savedInstanceState) {
+        inflater.inflate(R.layout.settings_recyclerview_default, parent, /* attachToRoot= */ true);
+        return parent.requireViewById(R.id.settings_recycler_view);
+    }
+
+    @Override
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        List<MenuItem> items = getToolbarMenuItems();
+        if (items != null) {
+            if (items.size() == 1) {
+                items.get(0).setId(R.id.toolbar_menu_item_0);
+            } else if (items.size() == 2) {
+                items.get(0).setId(R.id.toolbar_menu_item_0);
+                items.get(1).setId(R.id.toolbar_menu_item_1);
             }
-            toolbar.setTitle(getPreferenceScreen().getTitle());
-            toolbar.setMenuItems(items);
-            toolbar.setNavButtonMode(Toolbar.NavButtonMode.BACK);
+        }
+        toolbar.setTitle(getPreferenceScreen().getTitle());
+        toolbar.setMenuItems(items);
+        toolbar.setLogo(null);
+        if (getActivity().getIntent().getBooleanExtra(META_DATA_KEY_SINGLE_PANE, false)) {
+            toolbar.setNavButtonMode(NavButtonMode.BACK);
         }
     }
 
@@ -235,6 +240,34 @@
         mActivityResultCallbackMap.clear();
     }
 
+    @Override
+    protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
+        mAdapter = createHighlightableAdapter(preferenceScreen);
+        return mAdapter;
+    }
+
+    /**
+     * Returns a HighlightablePreferenceGroupAdapter to be used as the RecyclerView.Adapter for
+     * this fragment. Subclasses can override this method to return their own
+     * HighlightablePreferenceGroupAdapter instance.
+     */
+    protected HighlightablePreferenceGroupAdapter createHighlightableAdapter(
+            PreferenceScreen preferenceScreen) {
+        return new HighlightablePreferenceGroupAdapter(preferenceScreen);
+    }
+
+    protected void requestPreferenceHighlight(String key) {
+        if (mAdapter != null) {
+            mAdapter.requestHighlight(getView(), getListView(), key);
+        }
+    }
+
+    protected void clearPreferenceHighlight() {
+        if (mAdapter != null) {
+            mAdapter.clearHighlight(getView());
+        }
+    }
+
     /**
      * Notifies {@link PreferenceController} instances of changes to {@link CarUxRestrictions}.
      */
@@ -289,6 +322,11 @@
         dialogFragment.show(getFragmentManager(), tag);
     }
 
+    @Override
+    public void showProgressBar(boolean visible) {
+        getToolbar().getProgressBar().setVisible(visible);
+    }
+
     @Nullable
     @Override
     public DialogFragment findDialogByTag(String tag) {
@@ -299,6 +337,12 @@
         return null;
     }
 
+    @NonNull
+    @Override
+    public Lifecycle getSettingsLifecycle() {
+        return getLifecycle();
+    }
+
     @Override
     public void startActivityForResult(Intent intent, int requestCode,
             ActivityResultCallback callback) {
@@ -332,9 +376,19 @@
         }
     }
 
+    @Override
+    protected ToolbarController getPreferenceToolbar(@NonNull Fragment fragment) {
+        return getToolbar();
+    }
+
+    @Override
+    protected Insets getPreferenceInsets(@NonNull Fragment fragment) {
+        return null;
+    }
+
     // Allocates the next available startActivityForResult request index.
     private int allocateRequestIndex(ActivityResultCallback callback) {
-        // Sanity check that we haven't exhausted the request index space.
+        // Check that we haven't exhausted the request index space.
         if (mActivityResultCallbackMap.size() >= MAX_NUM_PENDING_ACTIVITY_RESULT_CALLBACKS) {
             throw new IllegalStateException(
                     "Too many pending activity result callbacks.");
diff --git a/src/com/android/car/settings/common/SettingsPreferenceCategory.java b/src/com/android/car/settings/common/SettingsPreferenceCategory.java
new file mode 100644
index 0000000..99dd02c
--- /dev/null
+++ b/src/com/android/car/settings/common/SettingsPreferenceCategory.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.ui.R;
+import com.android.car.ui.preference.CarUiEditTextPreference;
+import com.android.car.ui.preference.CarUiPreference;
+
+/**
+ * {@link PreferenceCategory} which allows for CarUiPreference chevrons to be hidden for the entire
+ * category with {@link R.styleable.PreferenceGroup_showChevron}
+ */
+public class SettingsPreferenceCategory extends PreferenceCategory {
+
+    private final boolean mShouldShowChevron;
+
+    public SettingsPreferenceCategory(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+
+        TypedArray a = context.obtainStyledAttributes(
+                attrs,
+                R.styleable.PreferenceGroup,
+                defStyleAttr,
+                defStyleRes);
+
+        mShouldShowChevron = a.getBoolean(R.styleable.PreferenceGroup_showChevron, true);
+        a.recycle();
+    }
+
+    public SettingsPreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public SettingsPreferenceCategory(Context context, AttributeSet attrs) {
+        this(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceCategoryStyle,
+                android.R.attr.preferenceCategoryStyle));
+    }
+
+    public SettingsPreferenceCategory(Context context) {
+        this(context, null);
+    }
+
+    @Override
+    public boolean addPreference(Preference preference) {
+        if (!mShouldShowChevron && (preference instanceof CarUiPreference
+                || preference instanceof CarUiEditTextPreference)) {
+            ((CarUiPreference) preference).setShowChevron(false);
+        }
+        return super.addPreference(preference);
+    }
+}
diff --git a/src/com/android/car/settings/common/SubSettingsActivity.java b/src/com/android/car/settings/common/SubSettingsActivity.java
new file mode 100644
index 0000000..b2e1d38
--- /dev/null
+++ b/src/com/android/car/settings/common/SubSettingsActivity.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+/**
+ * Activity class for launching a SubSetting as a separate activity.
+ */
+public class SubSettingsActivity extends BaseCarSettingsActivity {
+
+    private static final String KEY_SUB_SETTINGS_FRAGMENT = "key_sub_settings_fragment";
+    private static final String KEY_SUB_SETTINGS_FRAGMENT_ARGS = "key_sub_settings_fragment_args";
+    private static final Logger LOG = new Logger(SubSettingsActivity.class);
+
+    /**
+     * Create a new SubSettingsActivity instance for the given fragment.
+     */
+    public static Intent newInstance(@NonNull Context context, @NonNull Fragment fragment) {
+        String fragmentClass = fragment.getClass().getName();
+        Intent intent = new Intent(context, SubSettingsActivity.class);
+        intent.putExtra(KEY_SUB_SETTINGS_FRAGMENT, fragmentClass);
+        intent.putExtra(KEY_SUB_SETTINGS_FRAGMENT_ARGS, fragment.getArguments());
+        return intent;
+    }
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        try {
+            String fragmentClass = getIntent().getStringExtra(KEY_SUB_SETTINGS_FRAGMENT);
+            Bundle fragmentArgs = getIntent().getBundleExtra(KEY_SUB_SETTINGS_FRAGMENT_ARGS);
+            Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate(
+                    getClassLoader(), fragmentClass);
+            fragment.setArguments(fragmentArgs);
+            return fragment;
+        } catch (Fragment.InstantiationException e) {
+            LOG.e("Unable to instantiate fragment", e);
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/ToggleButtonActionItem.java b/src/com/android/car/settings/common/ToggleButtonActionItem.java
new file mode 100644
index 0000000..a1f412d
--- /dev/null
+++ b/src/com/android/car/settings/common/ToggleButtonActionItem.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.ui.uxr.DrawableStateToggleButton;
+
+import java.util.function.Consumer;
+
+/**
+ * Handles ToggleButton action item logic
+ */
+public final class ToggleButtonActionItem extends BaseActionItem {
+    private boolean mIsChecked = true;
+    @Nullable
+    private Consumer<Boolean> mOnClickListener;
+    @Nullable
+    private Drawable mDrawable;
+
+    public ToggleButtonActionItem(ActionItemInfoChangeListener actionItemInfoChangeListener) {
+        super(actionItemInfoChangeListener);
+    }
+
+    /**
+     * Create and setup views.
+     *
+     * @param frameLayout ViewGroup to attach views to
+     */
+    @Override
+    public void bindViewHolder(FrameLayout frameLayout) {
+        DrawableStateToggleButton toggleButton =
+                frameLayout.findViewById(R.id.multi_action_preference_toggle_button);
+
+
+        if (toggleButton == null) {
+            toggleButton = createView(frameLayout.getContext(), frameLayout);
+            // Ensure the default "On" and "Off" text don't show
+            toggleButton.setText(null);
+            toggleButton.setTextOn(null);
+            toggleButton.setTextOff(null);
+            frameLayout.addView(toggleButton);
+        }
+
+        toggleButton.setOnCheckedChangeListener(null);
+        toggleButton.setButtonDrawable(mDrawable);
+        toggleButton.setChecked(mIsChecked);
+        toggleButton.setEnabled(isEnabled());
+        toggleButton.setOnCheckedChangeListener((view, isChecked) -> onClick());
+    }
+
+    @Override
+    public int getLayoutResource() {
+        return R.layout.multi_action_preference_toggle_button;
+    }
+
+    /**
+     * Set the checked state.
+     */
+    public boolean isChecked() {
+        return mIsChecked;
+    }
+
+    /**
+     * Get the checked state.
+     */
+    public void setChecked(boolean checked) {
+        if (checked != mIsChecked) {
+            mIsChecked = checked;
+            update();
+        }
+    }
+
+    /**
+     * Get the Consumer that should run when toggle button is clicked.
+     */
+    public Consumer<Boolean> getOnClickListener() {
+        return mOnClickListener;
+    }
+
+    /**
+     * Set the Consumer that should run when toggle button is clicked.
+     */
+    public void setOnClickListener(Consumer<Boolean> onClickListener) {
+        if (onClickListener != mOnClickListener) {
+            mOnClickListener = onClickListener;
+            update();
+        }
+    }
+
+    /**
+     * Get the ToggleButton drawable.
+     */
+    public Drawable getDrawable() {
+        return mDrawable;
+    }
+
+    /**
+     * Set the ToggleButton drawable.
+     */
+    public void setDrawable(Drawable drawable) {
+        if (drawable != mDrawable) {
+            mDrawable = drawable;
+            update();
+        }
+    }
+
+    /**
+     * Set the ToggleButton drawable.
+     */
+    public void setDrawable(Context context, @DrawableRes int iconResId) {
+        Drawable drawable = context.getDrawable(iconResId);
+
+        if (drawable != mDrawable) {
+            mDrawable = drawable;
+            update();
+        }
+    }
+
+    /**
+     * Executes when ToggleButton is clicked.
+     */
+    public void onClick() {
+        if (isEnabled()) {
+            if (mIsPreferenceRestricted && mRestrictedOnClickListener != null
+                    && mPreference != null) {
+                mRestrictedOnClickListener.accept(mPreference);
+            } else if (!mIsPreferenceRestricted && mOnClickListener != null) {
+                mIsChecked = !mIsChecked;
+                mOnClickListener.accept(mIsChecked);
+            }
+        }
+    }
+
+    private DrawableStateToggleButton createView(Context context, ViewGroup viewGroup) {
+        LayoutInflater layoutInflater = LayoutInflater.from(context);
+
+        return (DrawableStateToggleButton) layoutInflater
+                .inflate(getLayoutResource(), viewGroup, false);
+    }
+}
diff --git a/src/com/android/car/settings/common/TopLevelIcon.java b/src/com/android/car/settings/common/TopLevelIcon.java
new file mode 100644
index 0000000..689a291
--- /dev/null
+++ b/src/com/android/car/settings/common/TopLevelIcon.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.ColorStateList;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
+import android.os.Bundle;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.internal.graphics.ColorUtils;
+import com.android.settingslib.utils.ColorUtil;
+
+/**
+ * Top-level icon that can set background color.
+ *
+ * Adapted from {@link com.android.settingslib.widget.AdaptiveIcon}
+ */
+public class TopLevelIcon extends LayerDrawable {
+    private static final Logger LOG = new Logger("TopLevelIcon");
+
+    private static final int BACKGROUND_INDEX = 0;
+    private static final int FOREGROUND_INDEX = 1;
+
+    private Context mContext;
+    private AdaptiveConstantState mAdaptiveConstantState;
+    private boolean mAlwaysDefaultColor;
+    @VisibleForTesting
+    ColorStateList mBackgroundColorStateList;
+
+    public TopLevelIcon(Context context, Drawable foreground) {
+        this(context, foreground, R.dimen.top_level_foreground_icon_inset);
+    }
+
+    public TopLevelIcon(Context context, Drawable foreground, int insetResId) {
+        super(new Drawable[]{
+                new TopLevelIconShapeDrawable(context.getResources()),
+                foreground
+        });
+        mContext = context;
+        int insetPx = context.getResources().getDimensionPixelSize(insetResId);
+        setLayerInset(FOREGROUND_INDEX , insetPx, insetPx, insetPx, insetPx);
+        mAdaptiveConstantState = new AdaptiveConstantState(context, foreground);
+        mAlwaysDefaultColor = context.getResources().getBoolean(
+                R.bool.config_top_level_injection_background_always_use_default);
+    }
+
+    /**
+     *  Sets background color based on injected metaData.
+     */
+    public void setBackgroundColor(Context context, Bundle metaData, String packageName) {
+        try {
+            if (metaData != null && packageName != null && !mAlwaysDefaultColor) {
+                // Load from bg.argb first
+                int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB,
+                        /* defaultValue= */ 0);
+                // If not found, load from bg.hint
+                if (bgColor == 0) {
+                    int colorRes = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT,
+                            /* defaultValue= */ 0);
+                    if (colorRes != 0) {
+                        bgColor = context.getPackageManager()
+                                .getResourcesForApplication(packageName)
+                                .getColor(colorRes, /* theme= */ null);
+                    }
+                }
+                // If a color was found, use it.
+                if (bgColor != 0) {
+                    setBackgroundColor(bgColor);
+                    return;
+                }
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("Failed to set background color for " + packageName);
+        }
+        setBackgroundColor(context.getColor(R.color.top_level_injected_default_background));
+    }
+
+    /**
+     * Sets background color by {@code color}.
+     */
+    public void setBackgroundColor(@ColorInt int color) {
+        mBackgroundColorStateList = createBackgroundColorStateList(color);
+        getDrawable(BACKGROUND_INDEX).setTintList(mBackgroundColorStateList);
+        mAdaptiveConstantState.mColor = color;
+    }
+
+    @Override
+    public ConstantState getConstantState() {
+        return mAdaptiveConstantState;
+    }
+
+    private ColorStateList createBackgroundColorStateList(@ColorInt int color) {
+        return new ColorStateList(
+                new int[][]{
+                        new int[]{-android.R.attr.state_enabled}, // disabled state
+                        new int[]{R.attr.state_ux_restricted}, // ux restricted state
+                        new int[]{} // default state
+                },
+                new int[]{
+                        getDisabledAlphaColor(color),
+                        getDisabledAlphaColor(color),
+                        color
+                }
+        );
+    }
+
+    @ColorInt
+    private int getDisabledAlphaColor(@ColorInt int color) {
+        return ColorUtils.setAlphaComponent(color,
+                (int) (ColorUtil.getDisabledAlpha(mContext) * 255));
+    }
+
+    @VisibleForTesting
+    static class AdaptiveConstantState extends ConstantState {
+        Context mContext;
+        Drawable mDrawable;
+        int mColor;
+
+        AdaptiveConstantState(Context context, Drawable drawable) {
+            this.mContext = context;
+            this.mDrawable = drawable;
+        }
+
+        @Override
+        public Drawable newDrawable() {
+            TopLevelIcon icon = new TopLevelIcon(mContext, mDrawable);
+            icon.setBackgroundColor(mColor);
+
+            return icon;
+        }
+
+        @Override
+        public int getChangingConfigurations() {
+            return 0;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/TopLevelIconShapeDrawable.java b/src/com/android/car/settings/common/TopLevelIconShapeDrawable.java
new file mode 100644
index 0000000..33105df
--- /dev/null
+++ b/src/com/android/car/settings/common/TopLevelIconShapeDrawable.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.res.Resources;
+import android.content.res.Resources.Theme;
+import android.graphics.drawable.GradientDrawable;
+import android.util.AttributeSet;
+
+import com.android.car.settings.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+
+/**
+ * Top-level icon background shape.
+ *
+ * Adapted from {@link com.android.settingslib.widget.AdaptiveIconShapeDrawable}
+ */
+public class TopLevelIconShapeDrawable extends GradientDrawable {
+    public TopLevelIconShapeDrawable() {
+        super();
+    }
+
+    public TopLevelIconShapeDrawable(Resources resources) {
+        super();
+        init(resources);
+    }
+
+    @Override
+    public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
+            throws XmlPullParserException, IOException {
+        super.inflate(r, parser, attrs, theme);
+        init(r);
+    }
+
+    private void init(Resources resources) {
+        setShape(resources.getInteger(R.integer.config_top_level_icon_shape));
+    }
+}
diff --git a/src/com/android/car/settings/common/TopLevelMenuFragment.java b/src/com/android/car/settings/common/TopLevelMenuFragment.java
new file mode 100644
index 0000000..ea07225
--- /dev/null
+++ b/src/com/android/car/settings/common/TopLevelMenuFragment.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.car.settings.R;
+
+import java.util.List;
+
+/**
+ * Top level settings menu.
+ */
+public class TopLevelMenuFragment extends SettingsFragment {
+
+    /**
+     * The preference key for the top-level menu item associated with a fragment.
+     * This is intended to be included with fragments launched from top-level menu
+     * preferences using the {@link #launchFragment} method.
+     */
+    public static final String FRAGMENT_MENU_PREFERENCE_KEY = "fragment_menu_preference_key";
+
+    private static final String KEY_SAVED_SELECTED_PREFERENCE_KEY = "saved_selected_preference_key";
+
+    private String mSelectedPreferenceKey;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.homepage_fragment;
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        if (savedInstanceState != null
+                && savedInstanceState.getString(KEY_SAVED_SELECTED_PREFERENCE_KEY) != null) {
+            updatePreferenceHighlight(
+                    savedInstanceState.getString(KEY_SAVED_SELECTED_PREFERENCE_KEY));
+        } else {
+            updatePreferenceHighlight(getActivity().getIntent()
+                    .getStringExtra(BaseCarSettingsActivity.META_DATA_KEY_HEADER_KEY));
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putString(KEY_SAVED_SELECTED_PREFERENCE_KEY, mSelectedPreferenceKey);
+    }
+
+    @Override
+    public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+            Bundle savedInstanceState) {
+        inflater.inflate(R.layout.top_level_recyclerview, parent, /* attachToRoot= */ true);
+        return parent.requireViewById(R.id.top_level_recycler_view);
+    }
+
+    @Override
+    public void launchFragment(@Nullable Fragment fragment) {
+        if (fragment == null) {
+            return;
+        }
+        String preferenceKey = null;
+        if (fragment.getArguments() != null) {
+            preferenceKey = fragment.getArguments().getString(FRAGMENT_MENU_PREFERENCE_KEY);
+        }
+        if (TextUtils.equals(getCurrentFragmentClass(), fragment.getClass().getName())
+                && TextUtils.equals(preferenceKey, mSelectedPreferenceKey)) {
+            // Do nothing - already at the location being navigated to.
+            return;
+        }
+        clearBackStack();
+        updatePreferenceHighlight(preferenceKey);
+        super.launchFragment(fragment);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        if (preference.getFragment() == null) {
+            // No fragment provided - likely launching a new activity.
+            return super.onPreferenceTreeClick(preference);
+        }
+        if (TextUtils.equals(getCurrentFragmentClass(), preference.getFragment())
+                && TextUtils.equals(preference.getKey(), mSelectedPreferenceKey)) {
+            // Do nothing - already at the location being navigated to.
+            return true;
+        }
+        clearBackStack();
+        updatePreferenceHighlight(preference.getKey());
+        return super.onPreferenceTreeClick(preference);
+    }
+
+    @Override
+    protected HighlightablePreferenceGroupAdapter createHighlightableAdapter(
+            PreferenceScreen preferenceScreen) {
+        return new HighlightablePreferenceGroupAdapter(preferenceScreen,
+                R.drawable.top_level_preference_background,
+                R.drawable.top_level_preference_highlight);
+    }
+
+    private void updatePreferenceHighlight(String key) {
+        mSelectedPreferenceKey = key;
+        if (!TextUtils.isEmpty(mSelectedPreferenceKey)) {
+            requestPreferenceHighlight(mSelectedPreferenceKey);
+        } else {
+            clearPreferenceHighlight();
+        }
+    }
+
+    @VisibleForTesting
+    String getSelectedPreferenceKey() {
+        return mSelectedPreferenceKey;
+    }
+
+    @Nullable
+    private String getCurrentFragmentClass() {
+        FragmentActivity activity = getActivity();
+        if (activity == null) {
+            return null;
+        }
+        Fragment currentFragment =
+                activity.getSupportFragmentManager().findFragmentById(R.id.fragment_container);
+        if (currentFragment == null) {
+            return null;
+        }
+        return currentFragment.getClass().getName();
+    }
+
+    private void clearBackStack() {
+        FragmentActivity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        // dismiss dialogs
+        List<Fragment> fragments = activity.getSupportFragmentManager().getFragments();
+        for (Fragment fragment : fragments) {
+            if (fragment instanceof DialogFragment) {
+                ((DialogFragment) fragment).dismiss();
+            }
+        }
+        // clear fragments
+        activity.getSupportFragmentManager().popBackStackImmediate(/* name= */ null,
+                FragmentManager.POP_BACK_STACK_INCLUSIVE);
+    }
+}
diff --git a/src/com/android/car/settings/common/TopLevelPreference.java b/src/com/android/car/settings/common/TopLevelPreference.java
new file mode 100644
index 0000000..0c621d7
--- /dev/null
+++ b/src/com/android/car/settings/common/TopLevelPreference.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiPreference;
+
+/**
+ * Extends {@link CarUiPreference} to customize styling for top-level entries.
+ */
+public class TopLevelPreference extends CarUiPreference {
+    public TopLevelPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(context);
+    }
+
+    public TopLevelPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context);
+    }
+
+    public TopLevelPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context);
+    }
+
+    public TopLevelPreference(Context context) {
+        super(context);
+        init(context);
+    }
+
+    private void init(Context context) {
+        setLayoutResource(R.layout.top_level_preference);
+        setShowChevron(context.getResources().getBoolean(R.bool.config_top_level_enable_chevrons));
+    }
+}
diff --git a/src/com/android/car/settings/common/rotary/SeekBarHelper.java b/src/com/android/car/settings/common/rotary/SeekBarHelper.java
new file mode 100644
index 0000000..d9b97cd
--- /dev/null
+++ b/src/com/android/car/settings/common/rotary/SeekBarHelper.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common.rotary;
+
+import android.widget.SeekBar;
+
+/** Helper class for rotary manipulation of {@link SeekBar}. */
+public final class SeekBarHelper {
+    private static final int ROTARY_SEEKBAR_INCREMENT_STEPS = 100;
+
+    /**
+     * Scales the number of rotations needed to move across the {@link SeekBar} by the value
+     * specified by {@link #ROTARY_SEEKBAR_INCREMENT_STEPS}.
+     */
+    public static int getScaledSeekBarIncrement(SeekBar seekBar) {
+        return (seekBar.getMax() - seekBar.getMin()) / ROTARY_SEEKBAR_INCREMENT_STEPS;
+    }
+}
diff --git a/src/com/android/car/settings/common/rotary/SettingsFocusParkingView.java b/src/com/android/car/settings/common/rotary/SettingsFocusParkingView.java
new file mode 100644
index 0000000..9998ce6
--- /dev/null
+++ b/src/com/android/car/settings/common/rotary/SettingsFocusParkingView.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common.rotary;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+/**
+ * A transparent {@link View} that can take focus. It is used as a view that can invisibly
+ * take rotary focus when another view is unable to take this focus.
+ *
+ * Adapted from {@link com.android.car.ui.FocusParkingView} for finer control over focus in
+ * dual-pane layouts. This separate class is also needed to allow a second "FocusParkingView"
+ * element within an activity, since only one {@link com.android.car.ui.FocusParkingView} is
+ * allowed per activity.
+ */
+public class SettingsFocusParkingView extends View {
+    public SettingsFocusParkingView(Context context) {
+        super(context);
+        init();
+    }
+
+    public SettingsFocusParkingView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public SettingsFocusParkingView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public SettingsFocusParkingView(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    private void init() {
+        // This view is focusable, visible and enabled so it can take focus.
+        setFocusable(View.FOCUSABLE);
+        setVisibility(VISIBLE);
+        setEnabled(true);
+
+        // This view is not clickable so it won't affect the app's behavior when the user clicks on
+        // it by accident.
+        setClickable(false);
+
+        // This view is always transparent.
+        setAlpha(0f);
+
+        // Prevent Android from drawing the default focus highlight for this view when it's focused.
+        setDefaultFocusHighlightEnabled(false);
+    }
+}
diff --git a/src/com/android/car/settings/datausage/AppDataUsageFragment.java b/src/com/android/car/settings/datausage/AppDataUsageFragment.java
index 2c756e2..384e090 100644
--- a/src/com/android/car/settings/datausage/AppDataUsageFragment.java
+++ b/src/com/android/car/settings/datausage/AppDataUsageFragment.java
@@ -88,7 +88,7 @@
             subId = DataUsageUtils.getDefaultSubscriptionId(subscriptionManager);
         }
         mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(telephonyManager, subId);
-        mPolicyEditor = new NetworkPolicyEditor(NetworkPolicyManager.from(context));
+        mPolicyEditor = getNetworkPolicyEditor(context);
         mAppsNetworkStatsManager = new AppsNetworkStatsManager(getContext());
         mAppsNetworkStatsManager.registerListener(
                 use(AppDataUsagePreferenceController.class, R.string.pk_app_data_usage_detail));
@@ -114,8 +114,7 @@
 
         NetworkPolicy policy = mPolicyEditor.getPolicy(mNetworkTemplate);
         if (policy != null) {
-            Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = NetworkPolicyManager
-                    .cycleIterator(policy);
+            Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = getCycleIterator(policy);
             while (it.hasNext()) {
                 Pair<ZonedDateTime, ZonedDateTime> cycle = it.next();
                 start = cycle.first.toInstant().toEpochMilli();
@@ -143,4 +142,14 @@
     Bundle getBundle() {
         return mBundle;
     }
+
+    @VisibleForTesting
+    NetworkPolicyEditor getNetworkPolicyEditor(Context context) {
+        return new NetworkPolicyEditor(NetworkPolicyManager.from(context));
+    }
+
+    @VisibleForTesting
+    Iterator<Pair<ZonedDateTime, ZonedDateTime>> getCycleIterator(NetworkPolicy policy) {
+        return NetworkPolicyManager.cycleIterator(policy);
+    }
 }
diff --git a/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java b/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java
index 57fd836..ecdc08f 100644
--- a/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java
+++ b/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java
@@ -32,7 +32,7 @@
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
 import com.android.car.settings.common.ProgressBarPreference;
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.net.UidDetail;
 import com.android.settingslib.net.UidDetailProvider;
@@ -71,7 +71,7 @@
         List<AppItem> items = new ArrayList<>();
         long largest = 0;
 
-        List<UserInfo> profiles = UserHelper.getInstance(getContext()).getAllUsers();
+        List<UserInfo> profiles = ProfileHelper.getInstance(getContext()).getAllProfiles();
         SparseArray<AppItem> knownItems = new SparseArray<>();
 
         NetworkStats.Entry entry = null;
diff --git a/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java b/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java
index be74b3c..b28155f 100644
--- a/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java
+++ b/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java
@@ -21,6 +21,7 @@
 import android.net.ConnectivityManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionPlan;
+import android.util.Range;
 
 import androidx.preference.Preference;
 
@@ -28,6 +29,9 @@
 import com.android.car.settings.common.PreferenceController;
 import com.android.car.settings.network.NetworkUtils;
 
+import java.time.ZonedDateTime;
+import java.util.Iterator;
+
 /** Preference controller which shows how much data has been used so far. */
 public class DataUsageEntryPreferenceController extends PreferenceController<Preference> {
 
@@ -67,8 +71,9 @@
         if (defaultPlan == null) {
             return null;
         }
-
-        return DataUsageUtils.bytesToIecUnits(getContext(), defaultPlan.getDataUsageBytes());
+        Iterator<Range<ZonedDateTime>> cycle = defaultPlan.cycleIterator();
+        long start = cycle.next().getLower().toInstant().toEpochMilli();
+        return DataUsageUtils.formatDataUsageInCycle(getContext(), defaultPlan.getDataUsageBytes(),
+                start);
     }
-
 }
diff --git a/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java
index 59d7ecc..43602c2 100644
--- a/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java
+++ b/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java
@@ -216,7 +216,7 @@
                     textResourceId = R.string.no_carrier_update_text;
                 }
                 updateTime = StringUtil.formatElapsedTime(getContext(),
-                        updateAgeMillis, /* withSeconds= */ false);
+                        updateAgeMillis, /* withSeconds= */ false, /* collapseTimeUnit= */ false);
             }
             return TextUtils.expandTemplate(getContext().getText(textResourceId), mCarrierName,
                     updateTime);
diff --git a/src/com/android/car/settings/datausage/DataUsageUtils.java b/src/com/android/car/settings/datausage/DataUsageUtils.java
index ea85ccb..fab54d9 100644
--- a/src/com/android/car/settings/datausage/DataUsageUtils.java
+++ b/src/com/android/car/settings/datausage/DataUsageUtils.java
@@ -23,13 +23,16 @@
 import android.telephony.SubscriptionPlan;
 import android.telephony.TelephonyManager;
 import android.text.BidiFormatter;
+import android.text.format.DateUtils;
 import android.text.format.Formatter;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
+import com.android.car.settings.R;
 import com.android.internal.util.CollectionUtils;
 
+import java.util.Calendar;
 import java.util.List;
 
 /** Provides helpful utilities related to data usage. */
@@ -81,6 +84,21 @@
     }
 
     /**
+     * Generate a string that lists byte value to readable string using IEC units, and date range
+     * from specified start date to current date.
+     */
+    public static CharSequence formatDataUsageInCycle(Context context, long byteValue,
+            long fromTimeInMillis) {
+        CharSequence usage = bytesToIecUnits(context, byteValue);
+        int flags = DateUtils.FORMAT_ABBREV_MONTH | DateUtils.FORMAT_NO_YEAR;
+        String fromText = DateUtils.formatDateTime(context, fromTimeInMillis, flags);
+        String toText = DateUtils.formatDateTime(context, Calendar.getInstance().getTimeInMillis(),
+                flags);
+        return context.getString(R.string.network_and_internet_data_usage_time_range_summary, usage,
+                fromText, toText);
+    }
+
+    /**
      * Returns the primary subscription plan. Returns {@code null} if {@link SubscriptionPlan}
      * doesn't exist for a given subscriptionId or if the first {@link SubscriptionPlan} has
      * invalid properties.
diff --git a/src/com/android/car/settings/datetime/DatePickerFragment.java b/src/com/android/car/settings/datetime/DatePickerFragment.java
index 1edbff1..1239bb0 100644
--- a/src/com/android/car/settings/datetime/DatePickerFragment.java
+++ b/src/com/android/car/settings/datetime/DatePickerFragment.java
@@ -34,11 +34,9 @@
 import com.android.car.settings.common.rotary.NumberPickerNudgeHandler;
 import com.android.car.settings.common.rotary.NumberPickerRotationHandler;
 import com.android.car.settings.common.rotary.NumberPickerUtils;
-import com.android.car.ui.toolbar.MenuItem;
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -50,36 +48,23 @@
     private DirectManipulationState mDirectManipulationMode;
     private DatePicker mDatePicker;
     private List<NumberPicker> mNumberPickers;
-    private MenuItem mOkButton;
 
     @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mOkButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mOkButton = new MenuItem.Builder(getContext())
-                .setTitle(android.R.string.ok)
-                .setOnClickListener(i -> {
-                    Calendar c = Calendar.getInstance();
-                    c.set(Calendar.YEAR, mDatePicker.getYear());
-                    c.set(Calendar.MONTH, mDatePicker.getMonth());
-                    c.set(Calendar.DAY_OF_MONTH, mDatePicker.getDayOfMonth());
-                    long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
-                    if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
-                        TimeDetector timeDetector =
-                                getContext().getSystemService(TimeDetector.class);
-                        ManualTimeSuggestion manualTimeSuggestion =
-                                TimeDetector.createManualTimeSuggestion(when, "Settings: Set date");
-                        timeDetector.suggestManualTime(manualTimeSuggestion);
-                        getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-                    }
-                    getFragmentHost().goBack();
-                })
-                .build();
+    public void onStop() {
+        super.onStop();
+        Calendar c = Calendar.getInstance();
+        c.set(Calendar.YEAR, mDatePicker.getYear());
+        c.set(Calendar.MONTH, mDatePicker.getMonth());
+        c.set(Calendar.DAY_OF_MONTH, mDatePicker.getDayOfMonth());
+        long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
+        if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
+            TimeDetector timeDetector =
+                    getContext().getSystemService(TimeDetector.class);
+            ManualTimeSuggestion manualTimeSuggestion =
+                    TimeDetector.createManualTimeSuggestion(when, "Settings: Set date");
+            timeDetector.suggestManualTime(manualTimeSuggestion);
+            getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        }
     }
 
     @Override
diff --git a/src/com/android/car/settings/datetime/TEST_MAPPING b/src/com/android/car/settings/datetime/TEST_MAPPING
deleted file mode 100644
index 91f6995..0000000
--- a/src/com/android/car/settings/datetime/TEST_MAPPING
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "auto-end-to-end-postsubmit": [
-    {
-      "name": "AndroidAutoUiTests",
-      "options" : [
-        {
-          "include-filter": "android.test.functional.auto.apps.DateTimeSettingTest"
-        }
-      ]
-    }
-  ]
-}
diff --git a/src/com/android/car/settings/datetime/TimePickerFragment.java b/src/com/android/car/settings/datetime/TimePickerFragment.java
index 94e1651..c2da85b 100644
--- a/src/com/android/car/settings/datetime/TimePickerFragment.java
+++ b/src/com/android/car/settings/datetime/TimePickerFragment.java
@@ -36,11 +36,9 @@
 import com.android.car.settings.common.rotary.NumberPickerNudgeHandler;
 import com.android.car.settings.common.rotary.NumberPickerRotationHandler;
 import com.android.car.settings.common.rotary.NumberPickerUtils;
-import com.android.car.ui.toolbar.MenuItem;
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -52,37 +50,24 @@
     private DirectManipulationState mDirectManipulationMode;
     private TimePicker mTimePicker;
     private List<NumberPicker> mNumberPickers;
-    private MenuItem mOkButton;
 
     @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mOkButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mOkButton = new MenuItem.Builder(getContext())
-                .setTitle(android.R.string.ok)
-                .setOnClickListener(i -> {
-                    Calendar c = Calendar.getInstance();
-                    c.set(Calendar.HOUR_OF_DAY, mTimePicker.getHour());
-                    c.set(Calendar.MINUTE, mTimePicker.getMinute());
-                    c.set(Calendar.SECOND, 0);
-                    c.set(Calendar.MILLISECOND, 0);
-                    long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
-                    if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
-                        TimeDetector timeDetector =
-                                getContext().getSystemService(TimeDetector.class);
-                        ManualTimeSuggestion manualTimeSuggestion =
-                                TimeDetector.createManualTimeSuggestion(when, "Settings: Set time");
-                        timeDetector.suggestManualTime(manualTimeSuggestion);
-                        getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-                    }
-                    getFragmentHost().goBack();
-                })
-                .build();
+    public void onStop() {
+        super.onStop();
+        Calendar c = Calendar.getInstance();
+        c.set(Calendar.HOUR_OF_DAY, mTimePicker.getHour());
+        c.set(Calendar.MINUTE, mTimePicker.getMinute());
+        c.set(Calendar.SECOND, 0);
+        c.set(Calendar.MILLISECOND, 0);
+        long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
+        if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
+            TimeDetector timeDetector =
+                    getContext().getSystemService(TimeDetector.class);
+            ManualTimeSuggestion manualTimeSuggestion =
+                    TimeDetector.createManualTimeSuggestion(when, "Settings: Set time");
+            timeDetector.suggestManualTime(manualTimeSuggestion);
+            getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        }
     }
 
     @Override
diff --git a/src/com/android/car/settings/enterprise/ActionDisabledByAdminActivity.java b/src/com/android/car/settings/enterprise/ActionDisabledByAdminActivity.java
new file mode 100644
index 0000000..409a141
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/ActionDisabledByAdminActivity.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
+
+/**
+ * Shows a dialog explaining that an action is not enabled due to restrictions imposed by an active
+ * device administrator.
+ */
+//TODO(b/186905050): add unit tests
+public final class ActionDisabledByAdminActivity extends FragmentActivity {
+
+    private static final String FRAGMENT_TAG =
+            "ActionDisabledByAdminActivity.ActionDisabledByAdminDialogFragment";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
+
+        String restriction = getRestrictionFromIntent(getIntent());
+        ActionDisabledByAdminDialogFragment.newInstance(restriction, getUserId())
+                .show(getSupportFragmentManager(), FRAGMENT_TAG);
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        finish();
+    }
+
+    private String getRestrictionFromIntent(Intent intent) {
+        if (intent == null) return null;
+        return intent.getStringExtra(DevicePolicyManager.EXTRA_RESTRICTION);
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/ActionDisabledByAdminDialogFragment.java b/src/com/android/car/settings/enterprise/ActionDisabledByAdminDialogFragment.java
new file mode 100644
index 0000000..4e91fce
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/ActionDisabledByAdminDialogFragment.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.IconDrawableFactory;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.ui.AlertDialogBuilder;
+import com.android.car.ui.preference.CarUiDialogFragment;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.enterprise.ActionDisabledByAdminController;
+import com.android.settingslib.enterprise.ActionDisabledByAdminControllerFactory;
+
+/**
+ * Shows a dialog explaining that an action is not enabled due to restrictions imposed by an active
+ * device administrator.
+ */
+// TODO(b/186905050): add unit tests
+// TODO(b/188836559): move most of this class' logic to settingslib
+public final class ActionDisabledByAdminDialogFragment extends CarUiDialogFragment {
+
+    public static final String DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG =
+            "com.android.car.settings.applications.DisabledByAdminConfirmDialog";
+
+    private static final String TAG = ActionDisabledByAdminDialogFragment.class.getSimpleName();
+    private static final Logger LOG = new Logger(TAG);
+
+    private static final String EXTRA_RESTRICTION = TAG + "_restriction";
+    private static final String EXTRA_USER_ID = TAG + "_userId";
+
+    private String mRestriction;
+
+    @UserIdInt
+    private int mUserId;
+
+    private ActionDisabledByAdminController mActionDisabledByAdminController;
+
+    /**
+     * Gets the dialog for the given user and restriction.
+     */
+    public static ActionDisabledByAdminDialogFragment newInstance(String restriction,
+            @UserIdInt int userId) {
+        ActionDisabledByAdminDialogFragment instance = new ActionDisabledByAdminDialogFragment();
+        instance.mRestriction = restriction;
+        instance.mUserId = userId;
+        return instance;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        if (savedInstanceState != null) {
+            mRestriction = savedInstanceState.getString(EXTRA_RESTRICTION);
+            mUserId = savedInstanceState.getInt(EXTRA_USER_ID);
+        }
+        return initialize(getContext()).create();
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        outState.putString(EXTRA_RESTRICTION, mRestriction);
+        outState.putInt(EXTRA_USER_ID, mUserId);
+    }
+
+    @Override
+    protected void onDialogClosed(boolean positiveResult) {
+    }
+
+    private AlertDialogBuilder initialize(Context context) {
+        EnforcedAdmin enforcedAdmin = RestrictedLockUtilsInternal
+                .checkIfRestrictionEnforced(context, mRestriction, mUserId);
+
+        AlertDialogBuilder builder = new AlertDialogBuilder(context)
+                .setPositiveButton(R.string.okay, /* listener= */ null);
+        mActionDisabledByAdminController = ActionDisabledByAdminControllerFactory
+                .createInstance(context, mRestriction, new DeviceAdminStringProviderImpl(context),
+                        context.getUser());
+        mActionDisabledByAdminController.initialize(
+                new ActionDisabledLearnMoreButtonLauncherImpl(builder));
+        if (enforcedAdmin != null) {
+            mActionDisabledByAdminController.updateEnforcedAdmin(enforcedAdmin, mUserId);
+            mActionDisabledByAdminController.setupLearnMoreButton(context);
+        }
+        initializeDialogViews(context, builder, enforcedAdmin,
+                getEnforcementAdminUserId(enforcedAdmin));
+        return builder;
+    }
+
+    // NOTE: methods below were copied from phone Settings
+    // (com.android.settings.enterprise.ActionDisabledByAdminDialogHelper), but adjusted to
+    // use a AlertDialogBuilder directly, instead of an Activity hosting a dialog.
+
+    private static @UserIdInt int getEnforcementAdminUserId(@Nullable EnforcedAdmin admin) {
+        return admin == null || admin.user == null ? UserHandle.USER_NULL
+                : admin.user.getIdentifier();
+    }
+
+    private void initializeDialogViews(Context context, AlertDialogBuilder builder,
+            @Nullable EnforcedAdmin enforcedAdmin, @UserIdInt int userId) {
+        ComponentName admin = null;
+
+        if (enforcedAdmin != null) {
+            admin = enforcedAdmin.component;
+            if (admin == null) {
+                return;
+            }
+
+            mActionDisabledByAdminController.updateEnforcedAdmin(enforcedAdmin, userId);
+        }
+
+        if (isNotCurrentUserOrProfile(context, admin, userId)) {
+            admin = null;
+        }
+        setAdminSupportIcon(context, builder, admin, userId);
+        setAdminSupportTitle(context, builder, mRestriction);
+
+        if (enforcedAdmin != null) {
+            setAdminSupportDetails(context, builder, enforcedAdmin);
+        }
+    }
+
+    private boolean isNotCurrentUserOrProfile(Context context, ComponentName admin,
+            @UserIdInt int userId) {
+        return !RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(context, admin)
+                || !RestrictedLockUtils.isCurrentUserOrProfile(context, userId);
+    }
+
+    private void setAdminSupportIcon(Context context, AlertDialogBuilder builder,
+            ComponentName admin, @UserIdInt int userId) {
+        if (isNotCurrentUserOrProfile(context, admin, userId)) {
+            builder.setIcon(context.getDrawable(com.android.internal.R.drawable.ic_info));
+        } else {
+            Drawable badgedIcon = getBadgedIcon(
+                    IconDrawableFactory.newInstance(context),
+                    context.getPackageManager(),
+                    admin.getPackageName(),
+                    userId);
+            builder.setIcon(badgedIcon);
+        }
+    }
+
+    private void setAdminSupportTitle(Context context, AlertDialogBuilder builder,
+            String restriction) {
+        builder.setTitle(mActionDisabledByAdminController.getAdminSupportTitle(restriction));
+    }
+
+    private void setAdminSupportDetails(Context context, AlertDialogBuilder builder,
+            @Nullable EnforcedAdmin enforcedAdmin) {
+        if (enforcedAdmin == null || enforcedAdmin.component == null) {
+            LOG.i("setAdminSupportDetails(): no admin on " + enforcedAdmin);
+            return;
+        }
+        CharSequence supportMessage = null;
+        if (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(context,
+                enforcedAdmin.component) || !RestrictedLockUtils.isCurrentUserOrProfile(
+                        context, getEnforcementAdminUserId(enforcedAdmin))) {
+            enforcedAdmin.component = null;
+        } else {
+            if (enforcedAdmin.user == null) {
+                enforcedAdmin.user = UserHandle.of(UserHandle.myUserId());
+            }
+            if (UserHandle.isSameApp(Process.myUid(), Process.SYSTEM_UID)) {
+                supportMessage = context.getSystemService(DevicePolicyManager.class)
+                        .getShortSupportMessageForUser(enforcedAdmin.component,
+                                getEnforcementAdminUserId(enforcedAdmin));
+            }
+        }
+        CharSequence supportContentString =
+                mActionDisabledByAdminController.getAdminSupportContentString(
+                        context, supportMessage);
+        if (supportContentString != null) {
+            builder.setMessage(supportContentString);
+        }
+    }
+
+    // Copied from com.android.settings.Utils
+    private static Drawable getBadgedIcon(IconDrawableFactory iconDrawableFactory,
+            PackageManager packageManager, String packageName, int userId) {
+        try {
+            ApplicationInfo appInfo = packageManager.getApplicationInfoAsUser(
+                    packageName, PackageManager.GET_META_DATA, userId);
+            return iconDrawableFactory.getBadgedIcon(appInfo, userId);
+        } catch (PackageManager.NameNotFoundException e) {
+            return packageManager.getDefaultActivityIcon();
+        }
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/ActionDisabledLearnMoreButtonLauncherImpl.java b/src/com/android/car/settings/enterprise/ActionDisabledLearnMoreButtonLauncherImpl.java
new file mode 100644
index 0000000..8d23130
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/ActionDisabledLearnMoreButtonLauncherImpl.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static java.util.Objects.requireNonNull;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.ui.AlertDialogBuilder;
+import com.android.settingslib.enterprise.ActionDisabledLearnMoreButtonLauncher;
+
+/**
+ * Car's implementation of {@link ActionDisabledLearnMoreButtonLauncher}.
+ */
+// TODO(b/186905050): add unit tests
+final class ActionDisabledLearnMoreButtonLauncherImpl
+        extends ActionDisabledLearnMoreButtonLauncher {
+
+    private static final Logger LOG = new Logger(ActionDisabledLearnMoreButtonLauncherImpl.class);
+
+    private final AlertDialogBuilder mBuilder;
+
+    ActionDisabledLearnMoreButtonLauncherImpl(AlertDialogBuilder builder) {
+        mBuilder = requireNonNull(builder, "builder cannot be null");
+    }
+
+    @Override
+    public void setLearnMoreButton(Runnable action) {
+        requireNonNull(action, "action cannot be null");
+
+        mBuilder.setNeutralButton(R.string.learn_more, (dialog, which) -> action.run());
+    }
+
+    @Override
+    protected void launchShowAdminPolicies(Context context, UserHandle user, ComponentName admin) {
+        requireNonNull(context, "context cannot be null");
+        requireNonNull(user, "user cannot be null");
+        requireNonNull(admin, "admin cannot be null");
+
+        Intent intent = new Intent()
+                .setClass(context, DeviceAdminAddActivity.class)
+                .putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, admin)
+                .putExtra(DeviceAdminAddActivity.EXTRA_CALLED_FROM_SUPPORT_DIALOG, true);
+        LOG.d("launching " + intent + " for user " + user);
+        context.startActivityAsUser(intent, user);
+    }
+
+    @Override
+    protected void launchShowAdminSettings(Context context) {
+        requireNonNull(context, "context cannot be null");
+
+        // TODO(b/185182679): implement it
+        LOG.w("launchShowAdminSettings(): not implemented yet");
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceController.java b/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceController.java
new file mode 100644
index 0000000..b7f9d90
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceController.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DeviceAdminInfo;
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.Objects;
+
+/**
+ * Base class for controllers in the device admin details screen.
+ */
+abstract class BaseDeviceAdminAddPreferenceController<P extends Preference>
+        extends PreferenceController<P> {
+
+    protected final Logger mLogger = new Logger(getClass());
+
+    protected final DevicePolicyManager mDpm;
+    protected final PackageManager mPm;
+    protected final UserManager mUm;
+
+    protected DeviceAdminInfo mDeviceAdminInfo;
+
+    protected BaseDeviceAdminAddPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        mDpm = context.getSystemService(DevicePolicyManager.class);
+        mPm = context.getPackageManager();
+        mUm = context.getSystemService(UserManager.class);
+    }
+
+    @Override
+    protected Class<P> getPreferenceType() {
+        return (Class<P>) Preference.class;
+    }
+
+    @Override
+    protected final int getAvailabilityStatus() {
+        return mDeviceAdminInfo == null ? CONDITIONALLY_UNAVAILABLE : getRealAvailabilityStatus();
+    }
+
+    /**
+     * Method that can be overridden to define the real value of {@link #getAvailabilityStatus()}
+     * when the {@link #setDeviceAdmin(DeviceAdminInfo) DeviceAdminInfo} is set.
+     */
+    protected int getRealAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    final <T extends BaseDeviceAdminAddPreferenceController<P>> T setDeviceAdmin(
+            DeviceAdminInfo deviceAdminInfo) {
+        mDeviceAdminInfo = Objects.requireNonNull(deviceAdminInfo);
+        @SuppressWarnings("unchecked")
+        T safeCast = (T) this;
+        return safeCast;
+    }
+
+    final boolean isProfileOrDeviceOwner() {
+        return isProfileOrDeviceOwner(mDeviceAdminInfo.getComponent());
+    }
+
+    final boolean isProfileOrDeviceOwner(ComponentName admin) {
+        return admin.equals(mDpm.getProfileOwner())
+                || admin.equals(mDpm.getDeviceOwnerComponentOnCallingUser());
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceController.java
new file mode 100644
index 0000000..4ff5f7d
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceController.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the action (activate / deactivate).
+ */
+public final class DeviceAdminAddActionPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    /*
+     * 3-state status for button:
+     *
+     *  - null: button disabled
+     *  - true: admin active, button deactivates
+     *  - false: admin inactive, button activates
+     */
+    @Nullable
+    private Boolean mIsActive;
+
+    public DeviceAdminAddActionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        setIsActive();
+
+        preference.setEnabled(mIsActive != null);
+        preference.setTitle(mIsActive == null || mIsActive
+                ? R.string.remove_device_admin
+                : R.string.add_device_admin);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        if (mIsActive == null) {
+            mLogger.wtf("handlePreferenceClicked() called when admin is a profile / device owner");
+        } else {
+            ComponentName admin = mDeviceAdminInfo.getComponent();
+            if (mIsActive) {
+                mLogger.i("Deactivating " + admin.flattenToShortString());
+                mDpm.removeActiveAdmin(admin);
+            } else {
+                mLogger.i("Activating " + admin.flattenToShortString());
+                // TODO(b/192372143): support refreshing
+                mDpm.setActiveAdmin(admin, /* refreshing= */ false);
+            }
+        }
+        getFragmentController().goBack();
+        return true;
+    }
+
+    @VisibleForTesting
+    void setIsActive() {
+        ComponentName admin = mDeviceAdminInfo.getComponent();
+        if (isProfileOrDeviceOwner(admin)) {
+            // TODO(b/170332519): once work profiles are supported, they could be removed
+            mLogger.d("updateState(): " + admin.toShortString() + " is PO or DO");
+            mIsActive = null;
+        } else {
+            mIsActive = mDpm.isAdminActive(admin);
+        }
+
+        mLogger.d("updateState(): active = " + mIsActive);
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddActivity.java b/src/com/android/car/settings/enterprise/DeviceAdminAddActivity.java
new file mode 100644
index 0000000..db41050
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddActivity.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * A screen that shows details about a device administrator.
+ */
+public final class DeviceAdminAddActivity extends BaseCarSettingsActivity {
+
+    static final String EXTRA_DEVICE_ADMIN_PACKAGE_NAME =
+            "android.app.extra.DEVICE_ADMIN_PACKAGE_NAME";
+
+    static final String EXTRA_CALLED_FROM_SUPPORT_DIALOG =
+            "android.app.extra.CALLED_FROM_SUPPORT_DIALOG";
+
+    @Override
+    protected Fragment getInitialFragment() {
+        return new DeviceAdminAddFragment();
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceController.java
new file mode 100644
index 0000000..03e8185
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceController.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the cancel button in the device admin details screen.
+ */
+public final class DeviceAdminAddCancelPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    public DeviceAdminAddCancelPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(com.android.internal.R.string.cancel);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getFragmentController().goBack();
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceController.java
new file mode 100644
index 0000000..633e7bf
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceController.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the (optional, set by intent extra ) explanation of why the admin is being added.
+ */
+public final class DeviceAdminAddExplanationPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    @Nullable
+    private CharSequence mExplanation;
+
+    public DeviceAdminAddExplanationPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected int getRealAvailabilityStatus() {
+        return TextUtils.isEmpty(mExplanation) ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(mExplanation);
+    }
+
+    /**
+     * Sets the explanation of why this admin is being added.
+     */
+    public DeviceAdminAddExplanationPreferenceController setExplanation(
+            @Nullable CharSequence explanation) {
+        mLogger.d("setExplanation(): " + explanation);
+        mExplanation = explanation;
+        return this;
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddFragment.java b/src/com/android/car/settings/enterprise/DeviceAdminAddFragment.java
new file mode 100644
index 0000000..fa9e5e9
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddFragment.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.android.car.settings.enterprise.EnterpriseUtils.getAdminWithinPackage;
+import static com.android.car.settings.enterprise.EnterpriseUtils.getDeviceAdminInfo;
+
+import android.app.Activity;
+import android.app.admin.DeviceAdminInfo;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.ui.toolbar.ToolbarController;
+
+/**
+ * A screen that shows details about a device administrator.
+ */
+public final class DeviceAdminAddFragment extends SettingsFragment {
+
+    private static final Logger LOG = new Logger(DeviceAdminAddFragment.class);
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.device_admin_add;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        Activity activity = requireActivity();
+        Intent intent = activity.getIntent();
+
+        ComponentName admin = (ComponentName)
+                intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN);
+        LOG.d("Admin using " + DevicePolicyManager.EXTRA_DEVICE_ADMIN + ": " + admin);
+        if (admin == null) {
+            String adminPackage = intent
+                    .getStringExtra(DeviceAdminAddActivity.EXTRA_DEVICE_ADMIN_PACKAGE_NAME);
+            LOG.d("Admin package using " + DeviceAdminAddActivity.EXTRA_DEVICE_ADMIN_PACKAGE_NAME
+                    + ": " + adminPackage);
+            if (adminPackage == null) {
+                LOG.w("Finishing " + activity + " as its intent doesn't have "
+                        +  DevicePolicyManager.EXTRA_DEVICE_ADMIN + " or "
+                        + DeviceAdminAddActivity.EXTRA_DEVICE_ADMIN_PACKAGE_NAME);
+                activity.finish();
+                return;
+            }
+            admin = getAdminWithinPackage(context, adminPackage);
+            if (admin == null) {
+                LOG.w("Finishing " + activity + " as there is no active admin for " + adminPackage);
+                activity.finish();
+                return;
+            }
+        }
+
+        DeviceAdminInfo deviceAdminInfo = getDeviceAdminInfo(context, admin);
+        LOG.d("Admin: " + admin + " DeviceAdminInfo: " + deviceAdminInfo);
+
+        if (deviceAdminInfo == null) {
+            LOG.w("Finishing " + activity + " as it could not get DeviceAdminInfo for "
+                    + admin.flattenToShortString());
+            activity.finish();
+            return;
+        }
+
+        use(DeviceAdminAddHeaderPreferenceController.class,
+                R.string.pk_device_admin_add_header).setDeviceAdmin(deviceAdminInfo);
+        ((DeviceAdminAddExplanationPreferenceController) use(
+                DeviceAdminAddExplanationPreferenceController.class,
+                R.string.pk_device_admin_add_explanation).setDeviceAdmin(deviceAdminInfo))
+                        .setExplanation(intent
+                                .getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION));
+        use(DeviceAdminAddWarningPreferenceController.class,
+                R.string.pk_device_admin_add_warning).setDeviceAdmin(deviceAdminInfo);
+        use(DeviceAdminAddPoliciesPreferenceController.class,
+                R.string.pk_device_admin_add_policies).setDeviceAdmin(deviceAdminInfo);
+        use(DeviceAdminAddSupportPreferenceController.class,
+                R.string.pk_device_admin_add_support).setDeviceAdmin(deviceAdminInfo);
+        use(DeviceAdminAddActionPreferenceController.class,
+                R.string.pk_device_admin_add_action).setDeviceAdmin(deviceAdminInfo);
+        use(DeviceAdminAddCancelPreferenceController.class,
+                R.string.pk_device_admin_add_cancel).setDeviceAdmin(deviceAdminInfo);
+    }
+
+    @Override
+    protected void setupToolbar(ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
+
+        Intent intent = requireActivity().getIntent();
+        String action = intent == null ? null : intent.getAction();
+        if (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN.equals(action)) {
+            toolbar.setTitle(R.string.add_device_admin_msg);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceController.java
new file mode 100644
index 0000000..a150b3a
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the header preference the device admin details screen.
+ */
+public final class DeviceAdminAddHeaderPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    public DeviceAdminAddHeaderPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        CharSequence name = mDeviceAdminInfo.loadLabel(mPm);
+        Drawable icon = mDeviceAdminInfo.loadIcon(mPm);
+        CharSequence description = null;
+        try {
+            description = mDeviceAdminInfo.loadDescription(mPm);
+        } catch (Resources.NotFoundException e) {
+            mLogger.v("No description for "
+                    + mDeviceAdminInfo.getComponent().flattenToShortString());
+        }
+
+        mLogger.d("updateState: name=" + name  + ", description=" + description);
+        preference.setTitle(name);
+        preference.setIcon(icon);
+        if (description != null) {
+            preference.setSummary(description);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceController.java
new file mode 100644
index 0000000..5d8c0e6
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DeviceAdminInfo;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.ui.preference.CarUiPreference;
+
+/**
+ * Controller for the screen that shows the device policies requested by a device admin app.
+ */
+public final class DeviceAdminAddPoliciesPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<PreferenceGroup> {
+
+    private final int mMaxDevicePoliciesShown;
+
+    public DeviceAdminAddPoliciesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mMaxDevicePoliciesShown = context.getResources()
+                .getInteger(R.integer.max_device_policies_shown);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected int getRealAvailabilityStatus() {
+        return isProfileOrDeviceOwner() ? DISABLED_FOR_PROFILE : AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        Context context = getContext();
+        preferenceGroup.removeAll();
+        preferenceGroup.setInitialExpandedChildrenCount(mMaxDevicePoliciesShown);
+
+        boolean isAdminUser = mUm.isAdminUser();
+
+        for (DeviceAdminInfo.PolicyInfo pi : mDeviceAdminInfo.getUsedPolicies()) {
+            int descriptionId = isAdminUser ? pi.description : pi.descriptionForSecondaryUsers;
+            int labelId = isAdminUser ? pi.label : pi.labelForSecondaryUsers;
+            CharSequence label = context.getText(labelId);
+            CharSequence description = context.getText(descriptionId);
+            mLogger.v("Adding policy '" + label + "': " + description);
+            CarUiPreference preference = new CarUiPreference(context);
+            preference.setTitle(label);
+            preference.setSummary(description);
+            preferenceGroup.addPreference(preference);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceController.java
new file mode 100644
index 0000000..79b0697
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceController.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the support info preference the device admin details screen.
+ */
+public final class DeviceAdminAddSupportPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    @Nullable
+    private CharSequence mSupportMessage;
+
+    public DeviceAdminAddSupportPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected int getRealAvailabilityStatus() {
+        setSupportMessage();
+
+        return TextUtils.isEmpty(mSupportMessage) ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(mSupportMessage);
+    }
+
+    @VisibleForTesting
+    void setSupportMessage() {
+        mSupportMessage = mDpm.getLongSupportMessageForUser(mDeviceAdminInfo.getComponent(),
+                UserHandle.myUserId());
+        mLogger.d("setSupportMessage(): " + mSupportMessage);
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceController.java b/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceController.java
new file mode 100644
index 0000000..ce2dba1
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceController.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller for the warning info preference the device admin details screen.
+ */
+public final class DeviceAdminAddWarningPreferenceController
+        extends BaseDeviceAdminAddPreferenceController<Preference> {
+
+    public DeviceAdminAddWarningPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preferenceGroup) {
+        Context context = getContext();
+        ComponentName admin = mDeviceAdminInfo.getComponent();
+
+        CharSequence title = null;
+        boolean isProfileOwner = admin.equals(mDpm.getProfileOwner());
+        if (isProfileOwner || admin.equals(mDpm.getDeviceOwnerComponentOnCallingUser())) {
+            // Profile owner in a user or device owner, user can't disable admin.
+            if (isProfileOwner) {
+                // Show profile owner in a user description.
+                title = context.getString(R.string.admin_profile_owner_user_message);
+            } else {
+                // Show device owner description.
+                if (isFinancedDevice()) {
+                    title = context.getString(R.string.admin_financed_message);
+                } else {
+                    title = context.getString(R.string.admin_device_owner_message);
+                }
+            }
+        } else {
+            int resId = mDpm.isAdminActive(admin) ? R.string.device_admin_status
+                    : R.string.device_admin_warning;
+            CharSequence label = mDeviceAdminInfo.getActivityInfo().applicationInfo.loadLabel(mPm);
+            title = context.getString(resId, label);
+        }
+        if (title == null) {
+            mLogger.v("no warning message");
+            return;
+        }
+
+        preferenceGroup.setTitle(title);
+    }
+
+    private boolean isFinancedDevice() {
+        return mDpm.isDeviceManaged() && mDpm.getDeviceOwnerType(mDpm
+                .getDeviceOwnerComponentOnAnyUser())
+                    == DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/DeviceAdminStringProviderImpl.java b/src/com/android/car/settings/enterprise/DeviceAdminStringProviderImpl.java
new file mode 100644
index 0000000..11161dc
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/DeviceAdminStringProviderImpl.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.settingslib.enterprise.DeviceAdminStringProvider;
+
+/**
+ * Car's implementation of {@link DeviceAdminStringProvider}.
+ */
+final class DeviceAdminStringProviderImpl implements DeviceAdminStringProvider {
+
+    private final Context mContext;
+
+    DeviceAdminStringProviderImpl(Context context) {
+        mContext = context;
+    }
+
+    @Override
+    public String getDefaultDisabledByPolicyTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title);
+    }
+
+    @Override
+    public String getDisallowAdjustVolumeTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_adjust_volume);
+    }
+
+    @Override
+    public String getDisallowOutgoingCallsTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_outgoing_calls);
+    }
+
+    @Override
+    public String getDisallowSmsTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_sms);
+    }
+
+    @Override
+    public String getDisableCameraTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_camera);
+    }
+
+    @Override
+    public String getDisableScreenCaptureTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_screen_capture);
+    }
+
+    @Override
+    public String getSuspendPackagesTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_suspend_packages);
+    }
+
+    @Override
+    public String getDefaultDisabledByPolicyContent() {
+        return mContext.getString(R.string.default_admin_support_msg);
+    }
+
+    @Override
+    public String getLearnMoreHelpPageUrl() {
+        return mContext.getString(R.string.help_url_action_disabled_by_it_admin);
+    }
+
+    @Override
+    public String getDisabledByPolicyTitleForFinancedDevice() {
+        return mContext.getString(R.string.disabled_by_policy_title_financed_device);
+    }
+
+    @Override
+    public String getDisabledBiometricsParentConsentTitle() {
+        return mContext.getString(R.string.disabled_by_policy_title_biometric_parental_consent);
+    }
+
+    @Override
+    public String getDisabledBiometricsParentConsentContent() {
+        return mContext.getString(R.string.disabled_by_policy_content_biometric_parental_consent);
+    }
+
+}
diff --git a/src/com/android/car/settings/enterprise/EnterpriseUtils.java b/src/com/android/car/settings/enterprise/EnterpriseUtils.java
new file mode 100644
index 0000000..4a9999f
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/EnterpriseUtils.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.annotation.Nullable;
+import android.app.admin.DeviceAdminInfo;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+
+import com.android.car.settings.common.Logger;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Generic helper methods for this package.
+ */
+final class EnterpriseUtils {
+
+    private static final Logger LOG = new Logger(EnterpriseUtils.class);
+
+    /**
+     * Gets the active admin for the given package.
+     */
+    @Nullable
+    public static ComponentName getAdminWithinPackage(Context context, String packageName) {
+        List<ComponentName> admins = context.getSystemService(DevicePolicyManager.class)
+                .getActiveAdmins();
+        if (admins == null) {
+            LOG.v("getAdminWithinPackage(): no active admins on context");
+            return null;
+        }
+        return admins.stream().filter(i -> i.getPackageName().equals(packageName)).findAny()
+                .orElse(null);
+    }
+
+    /**
+     * Gets the active admin info for the given admin .
+     */
+    @Nullable
+    public static DeviceAdminInfo getDeviceAdminInfo(Context context, ComponentName admin) {
+        LOG.d("getDeviceAdminInfo()(): " + admin.flattenToShortString());
+
+        ActivityInfo ai;
+        try {
+            ai = context.getPackageManager().getReceiverInfo(admin, PackageManager.GET_META_DATA);
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.v("Unable to get activity info for " + admin.flattenToShortString() + ": " + e);
+            return null;
+        }
+
+        try {
+            return new DeviceAdminInfo(context, ai);
+        } catch (XmlPullParserException | IOException e) {
+            LOG.v("Unable to retrieve device policy for " + admin.flattenToShortString() + ": ",
+                    e);
+            return null;
+        }
+    }
+
+    private EnterpriseUtils() {
+        throw new UnsupportedOperationException("Provides only static methods");
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/RemoteRequestBugreportActivity.java b/src/com/android/car/settings/enterprise/RemoteRequestBugreportActivity.java
new file mode 100644
index 0000000..ed6f726
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/RemoteRequestBugreportActivity.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static android.app.admin.DevicePolicyManager.NOTIFICATION_BUGREPORT_ACCEPTED_NOT_FINISHED;
+import static android.app.admin.DevicePolicyManager.NOTIFICATION_BUGREPORT_FINISHED_NOT_ACCEPTED;
+import static android.app.admin.DevicePolicyManager.NOTIFICATION_BUGREPORT_STARTED;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
+
+/**
+ * A screen that shows a dialog for remote request of bugreport.
+ */
+//TODO(b/186905050): add unit tests
+public final class RemoteRequestBugreportActivity extends FragmentActivity {
+
+    private static final String TAG = RemoteRequestBugreportActivity.class.getSimpleName();
+    private static final Logger LOG = new Logger(TAG);
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
+
+        ConfirmationDialogFragment fragment = getInitialFragment();
+        LOG.d("onCreate, initial fragment: " + fragment + " for user: " + getUserId());
+        fragment.show(getSupportFragmentManager(), TAG);
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        finish();
+    }
+
+    private void onBugreportConfirmed(String action) {
+        LOG.d("onBugreportConfirmed, action: " + action + ", user: " + getUserId());
+
+        Intent intent = new Intent(action);
+        RemoteRequestBugreportActivity.this.sendBroadcastAsUser(intent,
+                UserHandle.SYSTEM, android.Manifest.permission.DUMP);
+        finish();
+    }
+
+    protected ConfirmationDialogFragment getInitialFragment() {
+        int notificationType = getIntent().getIntExtra(
+                DevicePolicyManager.EXTRA_BUGREPORT_NOTIFICATION_TYPE, -1);
+
+        ConfirmationDialogFragment.Builder builder =
+                new ConfirmationDialogFragment.Builder(this);
+
+        ConfirmationDialogFragment.DismissListener dismissListener = arguments -> finish();
+
+        switch (notificationType) {
+            case NOTIFICATION_BUGREPORT_ACCEPTED_NOT_FINISHED:
+                builder.setMessage(R.string.sharing_remote_bugreport_dialog_message)
+                    .setDismissListener(dismissListener)
+                    .setNegativeButton(android.R.string.ok, arguments -> finish());
+                break;
+            case NOTIFICATION_BUGREPORT_STARTED:
+            case NOTIFICATION_BUGREPORT_FINISHED_NOT_ACCEPTED:
+                ConfirmationDialogFragment.RejectListener rejectListener = arguments ->
+                        onBugreportConfirmed(
+                                DevicePolicyManager.ACTION_BUGREPORT_SHARING_DECLINED);
+                ConfirmationDialogFragment.ConfirmListener confirmListener = arguments ->
+                        onBugreportConfirmed(
+                                DevicePolicyManager.ACTION_BUGREPORT_SHARING_ACCEPTED);
+
+                builder.setTitle(R.string.share_remote_bugreport_dialog_title)
+                        .setMessage(notificationType == NOTIFICATION_BUGREPORT_STARTED
+                                ? R.string.share_remote_bugreport_dialog_message
+                                : R.string.share_remote_bugreport_dialog_message_finished)
+                    .setDismissListener(dismissListener)
+                    .setNegativeButton(R.string.decline_remote_bugreport_action, rejectListener)
+                    .setPositiveButton(R.string.share_remote_bugreport_action, confirmListener);
+                break;
+            default:
+                LOG.e("Incorrect dialog type, no dialog shown. Received: " + notificationType);
+        }
+        ConfirmationDialogFragment dialog = builder.build();
+        LOG.d("getInitialFragment(), ConfirmationDialogFragment built.");
+        return dialog;
+    }
+}
diff --git a/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceController.java b/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceController.java
new file mode 100644
index 0000000..5916186
--- /dev/null
+++ b/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceController.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Controller for showing the work policy info in the privacy dashboard.
+ */
+public final class WorkPolicyInfoPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(WorkPolicyInfoPreferenceController.class);
+    private static final int MY_USER_ID = UserHandle.myUserId();
+
+    private final DevicePolicyManager mDpm;
+    private final PackageManager mPm;
+    private final UserManager mUm;
+    private final boolean mEnabled;
+
+    @Nullable
+    private Intent mIntent;
+
+    public WorkPolicyInfoPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        mDpm = context.getSystemService(DevicePolicyManager.class);
+        mPm = context.getPackageManager();
+        mUm = context.getSystemService(UserManager.class);
+        mEnabled = mPm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
+
+        LOG.d("Constructed on user " + MY_USER_ID + ": " + (mEnabled ? "enabled" : "disabled"));
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        updateIntent();
+
+        if (mIntent != null) {
+            preference.setIntent(mIntent);
+        }
+    };
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!mEnabled) return UNSUPPORTED_ON_DEVICE;
+
+        updateIntent();
+
+        return mIntent == null ? DISABLED_FOR_PROFILE : AVAILABLE;
+    }
+
+    private void updateIntent() {
+        mIntent = null;
+
+        ComponentName admin = mDpm.getProfileOwner();
+        if (admin == null) {
+            LOG.d("no profile owner for user " + MY_USER_ID + ")");
+            return;
+        }
+
+        mIntent = new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO)
+                .setPackage(admin.getPackageName())
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        List<ResolveInfo> activities = mPm.queryIntentActivities(mIntent, /* flags= */ 0);
+        if (activities.isEmpty()) {
+            LOG.d(admin.flattenToShortString() + " does not declare "
+                    + Settings.ACTION_SHOW_WORK_POLICY_INFO);
+            mIntent = null;
+            return;
+        }
+
+        LOG.d("updateIntent(): " + admin.flattenToShortString());
+    }
+}
diff --git a/src/com/android/car/settings/home/HomepageFragment.java b/src/com/android/car/settings/home/HomepageFragment.java
index bba3287..077769b 100644
--- a/src/com/android/car/settings/home/HomepageFragment.java
+++ b/src/com/android/car/settings/home/HomepageFragment.java
@@ -22,12 +22,13 @@
 import android.os.Bundle;
 import android.provider.Settings;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.NavButtonMode;
 import com.android.car.ui.toolbar.ToolbarController;
 
 import java.util.Collections;
@@ -72,20 +73,17 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        ToolbarController toolbar = getToolbar();
-        if (toolbar != null) {
-            // If the fragment is root, change the back button to settings icon.
-            if (!getContext().getResources().getBoolean(R.bool.config_is_quick_settings_root)) {
-                toolbar.setState(Toolbar.State.HOME);
-                toolbar.setLogo(getContext().getResources()
-                        .getBoolean(R.bool.config_show_settings_root_exit_icon)
-                        ? R.drawable.ic_launcher_settings
-                        : 0);
-            } else {
-                toolbar.setState(Toolbar.State.SUBPAGE);
-            }
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
+        // If the fragment is root, change the back button to settings icon.
+        if (!getContext().getResources().getBoolean(R.bool.config_is_quick_settings_root)) {
+            toolbar.setNavButtonMode(NavButtonMode.DISABLED);
+            toolbar.setLogo(getContext().getResources()
+                    .getBoolean(R.bool.config_show_settings_root_exit_icon)
+                    ? R.drawable.ic_launcher_settings
+                    : 0);
+        } else {
+            toolbar.setNavButtonMode(NavButtonMode.BACK);
         }
     }
 
diff --git a/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java b/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java
index dd82ad2..3f1dd46 100644
--- a/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java
+++ b/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java
@@ -26,6 +26,7 @@
 import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.InputMethodManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 
@@ -57,10 +58,8 @@
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
         mPackageManager = context.getPackageManager();
-        mDevicePolicyManager =
-                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        mInputMethodManager =
-                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
+        mInputMethodManager = context.getSystemService(InputMethodManager.class);
     }
 
     @Override
@@ -126,14 +125,14 @@
                 getContext(), mInputMethodManager, inputMethodInfo));
         preference.setOnPreferenceClickListener(pref -> {
             try {
-                Intent intent = new Intent(Intent.ACTION_MAIN);
                 String settingsActivity = inputMethodInfo.getSettingsActivity();
                 if (settingsActivity == null) {
                     LOG.d("IME's Settings Activity not defined.");
                     return true;
                 }
 
-                intent.setClassName(inputMethodInfo.getPackageName(), settingsActivity);
+                Intent intent = createInputMethodSettingsIntent(inputMethodInfo.getPackageName(),
+                        settingsActivity);
 
                 // Invoke a settings activity of an input method.
                 getContext().startActivity(intent);
@@ -145,6 +144,13 @@
         return preference;
     }
 
+    @VisibleForTesting
+    Intent createInputMethodSettingsIntent(String packageName, String settingsActivity) {
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setClassName(packageName, settingsActivity);
+        return intent;
+    }
+
     private boolean arePreferencesDifferent(Preference lhs, Preference rhs) {
         return !Objects.equals(lhs.getTitle(), rhs.getTitle())
                 || !Objects.equals(lhs.getSummary(), rhs.getSummary());
diff --git a/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java b/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java
index 6029469..30a34eb 100644
--- a/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java
+++ b/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java
@@ -78,10 +78,8 @@
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
         mPackageManager = context.getPackageManager();
-        mDevicePolicyManager =
-                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        mInputMethodManager =
-                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
+        mInputMethodManager = context.getSystemService(InputMethodManager.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java b/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java
index ba7751e..7effcf9 100644
--- a/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java
+++ b/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java
@@ -45,10 +45,8 @@
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
         mPackageManager = context.getPackageManager();
-        mDevicePolicyManager =
-                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        mInputMethodManager =
-                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
+        mInputMethodManager = context.getSystemService(InputMethodManager.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/language/ChildLocalePickerFragment.java b/src/com/android/car/settings/language/ChildLocalePickerFragment.java
index aa6c1b2..17d6c4c 100644
--- a/src/com/android/car/settings/language/ChildLocalePickerFragment.java
+++ b/src/com/android/car/settings/language/ChildLocalePickerFragment.java
@@ -19,10 +19,12 @@
 import android.content.Context;
 import android.os.Bundle;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
+import com.android.car.ui.toolbar.ToolbarController;
 import com.android.internal.app.LocaleStore;
 
 import java.util.Locale;
@@ -66,10 +68,10 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
 
-        getToolbar().setTitle(mParentLocaleInfo.getFullNameNative());
+        toolbar.setTitle(mParentLocaleInfo.getFullNameNative());
     }
 
     @Override
diff --git a/src/com/android/car/settings/location/LocationFooterPreferenceController.java b/src/com/android/car/settings/location/LocationFooterPreferenceController.java
deleted file mode 100644
index ece3da7..0000000
--- a/src/com/android/car/settings/location/LocationFooterPreferenceController.java
+++ /dev/null
@@ -1,154 +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.
- */
-
-package com.android.car.settings.location;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.location.LocationManager;
-
-import androidx.annotation.StringRes;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.ui.preference.CarUiPreference;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Injects Location Footers into a {@link PreferenceGroup} with a matching key.
- */
-public class LocationFooterPreferenceController extends PreferenceController<PreferenceGroup> {
-    private static final Logger LOG = new Logger(LocationFooterPreferenceController.class);
-    private static final Intent INJECT_INTENT =
-            new Intent(LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION);
-
-    private PackageManager mPackageManager;
-
-    public LocationFooterPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mPackageManager = context.getPackageManager();
-    }
-
-    @VisibleForTesting
-    void setPackageManager(PackageManager packageManager) {
-        mPackageManager = packageManager;
-    }
-
-    @Override
-    protected Class<PreferenceGroup> getPreferenceType() {
-        return PreferenceGroup.class;
-    }
-
-    @Override
-    protected void onCreateInternal() {
-        for (LocationFooter footer : getInjectedLocationFooters()) {
-            try {
-                String footerString = mPackageManager
-                        .getResourcesForApplication(footer.mApplicationInfo)
-                        .getString(footer.mFooterStringRes);
-
-                // For each injected footer: Create a new preference, set the summary
-                // and icon, then inject under the footer preference group.
-                CarUiPreference newPreference = new CarUiPreference(getContext());
-                newPreference.setSummary(footerString);
-                newPreference.setIcon(R.drawable.ic_settings_about);
-                newPreference.setSelectable(false);
-                getPreference().addPreference(newPreference);
-            } catch (PackageManager.NameNotFoundException exception) {
-                LOG.w("Resources not found for application "
-                        + footer.mApplicationInfo.packageName);
-            }
-        }
-    }
-
-    @Override
-    protected void updateState(PreferenceGroup preferenceGroup) {
-        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
-    }
-
-    /**
-     * Return a list of strings provided by ACTION_INJECT_FOOTER broadcast receivers. If there
-     * are no injectors, an immutable emptry list is returned.
-     */
-    private List<LocationFooter> getInjectedLocationFooters() {
-        List<ResolveInfo> resolveInfos = mPackageManager.queryBroadcastReceivers(
-                INJECT_INTENT, PackageManager.GET_META_DATA);
-        if (resolveInfos == null) {
-            LOG.e("Unable to resolve intent " + INJECT_INTENT);
-            return Collections.emptyList();
-        } else {
-            LOG.d("Found broadcast receivers: " + resolveInfos);
-        }
-
-        List<LocationFooter> locationFooters = new ArrayList<>(resolveInfos.size());
-        for (ResolveInfo resolveInfo : resolveInfos) {
-            ActivityInfo activityInfo = resolveInfo.activityInfo;
-            ApplicationInfo appInfo = activityInfo.applicationInfo;
-
-            // If a non-system app tries to inject footer, ignore it
-            if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
-                LOG.w("Ignoring attempt to inject footer from a non-system app: " + resolveInfo);
-                continue;
-            }
-
-            // If the injector does not have valid METADATA, ignore it
-            if (activityInfo.metaData == null) {
-                LOG.d("No METADATA in broadcast receiver " + activityInfo.name);
-                continue;
-            }
-
-            // Get the footer text resource id from broadcast receiver's metadata
-            int footerTextRes =
-                    activityInfo.metaData.getInt(LocationManager.METADATA_SETTINGS_FOOTER_STRING);
-            if (footerTextRes == 0) {
-                LOG.w("No mapping of integer exists for "
-                        + LocationManager.METADATA_SETTINGS_FOOTER_STRING);
-                continue;
-            }
-            locationFooters.add(new LocationFooter(footerTextRes, appInfo));
-        }
-        return locationFooters;
-    }
-
-    /**
-     * Contains information related to a footer.
-     */
-    private static class LocationFooter {
-        // The string resource of the footer.
-        @StringRes
-        private final int mFooterStringRes;
-        // Application info of the receiver injecting this footer.
-        private final ApplicationInfo mApplicationInfo;
-
-        LocationFooter(@StringRes int footerRes, ApplicationInfo appInfo) {
-            mFooterStringRes = footerRes;
-            mApplicationInfo = appInfo;
-        }
-    }
-}
diff --git a/src/com/android/car/settings/location/LocationSettingsFragment.java b/src/com/android/car/settings/location/LocationSettingsFragment.java
index 891fe33..f3e8a6b 100644
--- a/src/com/android/car/settings/location/LocationSettingsFragment.java
+++ b/src/com/android/car/settings/location/LocationSettingsFragment.java
@@ -16,14 +16,7 @@
 
 package com.android.car.settings.location;
 
-import android.app.Service;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.location.LocationManager;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.provider.Settings;
 import android.view.View;
 
@@ -34,49 +27,13 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.Utils;
 import com.android.settingslib.search.SearchIndexable;
 
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Main page that hosts Location related preferences.
  */
 @SearchIndexable
 public class LocationSettingsFragment extends SettingsFragment {
-    private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
-            new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
-
-    private LocationManager mLocationManager;
-    private MenuItem mLocationSwitch;
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            mLocationSwitch.setChecked(mLocationManager.isLocationEnabled());
-        }
-    };
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mLocationSwitch);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mLocationSwitch = new MenuItem.Builder(getContext())
-                .setCheckable()
-                .setOnClickListener(menuItem ->
-                        Utils.updateLocationEnabled(
-                                requireContext(),
-                                menuItem.isChecked(),
-                                UserHandle.myUserId(),
-                                Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS))
-                .build();
-    }
 
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
@@ -90,25 +47,6 @@
         return R.xml.location_settings_fragment;
     }
 
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        requireContext().registerReceiver(mReceiver, INTENT_FILTER_LOCATION_MODE_CHANGED);
-        mLocationSwitch.setChecked(mLocationManager.isLocationEnabled());
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        requireContext().unregisterReceiver(mReceiver);
-    }
-
     public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new CarBaseSearchIndexProvider(R.xml.location_settings_fragment,
                     Settings.ACTION_LOCATION_SOURCE_SETTINGS);
diff --git a/src/com/android/car/settings/location/LocationStateSwitchPreferenceController.java b/src/com/android/car/settings/location/LocationStateSwitchPreferenceController.java
new file mode 100644
index 0000000..ad39149
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationStateSwitchPreferenceController.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2020 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.car.settings.location;
+
+import static android.car.hardware.power.PowerComponent.LOCATION;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PowerPolicyListener;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.Utils;
+
+/**
+ * Enables/disables location state via SwitchPreference.
+ */
+public class LocationStateSwitchPreferenceController extends
+        PreferenceController<ClickableWhileDisabledSwitchPreference> {
+
+    private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
+            new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
+
+    private final Context mContext;
+    private final LocationManager mLocationManager;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    @VisibleForTesting
+    final PowerPolicyListener mPowerPolicyListener;
+
+    public LocationStateSwitchPreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mContext = context;
+        mLocationManager = context.getSystemService(LocationManager.class);
+        mPowerPolicyListener = new PowerPolicyListener(context, LOCATION,
+                isOn -> {
+                    enableSwitchPreference(getPreference(), isOn);
+                });
+    }
+
+    @Override
+    protected Class<ClickableWhileDisabledSwitchPreference> getPreferenceType() {
+        return ClickableWhileDisabledSwitchPreference.class;
+    }
+
+    @Override
+    protected void updateState(ClickableWhileDisabledSwitchPreference preference) {
+        updateSwitchPreference(preference, mLocationManager.isLocationEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ClickableWhileDisabledSwitchPreference preference,
+            Object newValue) {
+        boolean locationEnabled = (Boolean) newValue;
+        Utils.updateLocationEnabled(
+                mContext,
+                locationEnabled,
+                UserHandle.myUserId(),
+                Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS);
+        return true;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setContentDescription(
+                getContext().getString(R.string.location_state_switch_content_description));
+        getPreference().setDisabledClickListener(p ->
+                Toast.makeText(getContext(),
+                        getContext().getString(R.string.power_component_disabled),
+                        Toast.LENGTH_LONG).show());
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mContext.registerReceiver(mReceiver, INTENT_FILTER_LOCATION_MODE_CHANGED);
+    }
+
+    @Override
+    protected void onResumeInternal() {
+        mPowerPolicyListener.handleCurrentPolicy();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mContext.unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mPowerPolicyListener.release();
+    }
+
+    private void updateSwitchPreference(ClickableWhileDisabledSwitchPreference preference,
+            boolean enabled) {
+        preference.setTitle(enabled ? R.string.car_ui_preference_switch_on
+                : R.string.car_ui_preference_switch_off);
+        preference.setChecked(enabled);
+    }
+
+    private void enableSwitchPreference(ClickableWhileDisabledSwitchPreference preference,
+            boolean enabled) {
+        preference.setEnabled(enabled);
+    }
+}
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java b/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java
index 882517c..10146a4 100644
--- a/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java
+++ b/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java
@@ -16,7 +16,6 @@
 
 package com.android.car.settings.location;
 
-import android.app.Service;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -24,6 +23,7 @@
 import android.content.IntentFilter;
 import android.location.LocationManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.common.FragmentController;
@@ -35,7 +35,8 @@
 public class RecentLocationRequestsEntryPreferenceController extends
         PreferenceController<Preference> {
 
-    private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
+    @VisibleForTesting
+    static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
             new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
 
     private final LocationManager mLocationManager;
@@ -49,8 +50,7 @@
     public RecentLocationRequestsEntryPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mLocationManager = (LocationManager) getContext().getSystemService(
-                Service.LOCATION_SERVICE);
+        mLocationManager = getContext().getSystemService(LocationManager.class);
     }
 
 
diff --git a/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
index 7077686..0f6ba7e 100644
--- a/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
+++ b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
@@ -18,7 +18,6 @@
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.os.UserManager;
 import android.telephony.SubscriptionInfo;
@@ -28,7 +27,6 @@
 import androidx.preference.Preference;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.CarSettingActivities;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
 
@@ -80,7 +78,7 @@
         boolean hasRestriction =
                 mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
         if (isNotAdmin || hasRestriction) {
-            return DISABLED_FOR_USER;
+            return DISABLED_FOR_PROFILE;
         }
         return AVAILABLE;
     }
@@ -102,15 +100,10 @@
         }
 
         if (subs.size() == 1) {
-            Intent intent = new Intent(getContext(),
-                    CarSettingActivities.MobileNetworkActivity.class);
-            intent.putExtra(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
-                    subs.get(0).getSubscriptionId());
-            getContext().startActivity(intent);
+            getFragmentController().launchFragment(
+                    MobileNetworkFragment.newInstance(subs.get(0).getSubscriptionId()));
         } else {
-            Intent intent = new Intent(getContext(),
-                    CarSettingActivities.MobileNetworkListActivity.class);
-            getContext().startActivity(intent);
+            getFragmentController().launchFragment(new MobileNetworkListFragment());
         }
         return true;
     }
diff --git a/src/com/android/car/settings/network/MobileNetworkFragment.java b/src/com/android/car/settings/network/MobileNetworkFragment.java
index 91e47e7..976a610 100644
--- a/src/com/android/car/settings/network/MobileNetworkFragment.java
+++ b/src/com/android/car/settings/network/MobileNetworkFragment.java
@@ -23,12 +23,14 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.car.ui.toolbar.ToolbarController;
 import com.android.internal.util.CollectionUtils;
 import com.android.settingslib.search.SearchIndexable;
 
@@ -69,7 +71,7 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mSubscriptionManager = getSubscriptionManager(context);
 
         int subId = getArguments() != null
                 ? getArguments().getInt(ARG_NETWORK_SUB_ID, MobileNetworkUpdateManager.SUB_ID_NULL)
@@ -89,11 +91,11 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
 
         if (mTitle != null) {
-            getToolbar().setTitle(mTitle);
+            toolbar.setTitle(mTitle);
         }
     }
 
@@ -117,7 +119,7 @@
 
         if (info != null) {
             // It is possible for this to be called before the activity is fully created. If so,
-            // cache the value so that it can be constructed onActivityCreated.
+            // cache the value so that it can be constructed when setupToolbar is called.
             mTitle = info.getDisplayName();
             if (getToolbar() != null) {
                 getToolbar().setTitle(mTitle);
@@ -125,6 +127,11 @@
         }
     }
 
+    @VisibleForTesting
+    SubscriptionManager getSubscriptionManager(Context context) {
+        return context.getSystemService(SubscriptionManager.class);
+    }
+
     public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new CarBaseSearchIndexProvider(R.xml.mobile_network_fragment,
                     Settings.ACTION_NETWORK_OPERATOR_SETTINGS) {
diff --git a/src/com/android/car/settings/network/SubscriptionUtils.java b/src/com/android/car/settings/network/SubscriptionUtils.java
index cf1eba9..17a6087 100644
--- a/src/com/android/car/settings/network/SubscriptionUtils.java
+++ b/src/com/android/car/settings/network/SubscriptionUtils.java
@@ -87,7 +87,7 @@
     }
 
     private static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) {
-        return !slotInfo.getIsEuicc() && !slotInfo.getIsActive()
+        return slotInfo != null && !slotInfo.getIsEuicc() && !slotInfo.getIsActive()
                 && slotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT;
     }
 }
diff --git a/src/com/android/car/settings/notifications/BaseNotificationsPreferenceController.java b/src/com/android/car/settings/notifications/BaseNotificationsPreferenceController.java
new file mode 100644
index 0000000..9b389f0
--- /dev/null
+++ b/src/com/android/car/settings/notifications/BaseNotificationsPreferenceController.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
+
+import android.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.ServiceManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Base notifications class that handles checking and changing notification availability
+ *
+ * @param <T> The upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class BaseNotificationsPreferenceController<T extends Preference> extends
+        PreferenceController<T> {
+
+    private static final Logger LOG = new Logger(BaseNotificationsPreferenceController.class);
+
+    @VisibleForTesting
+    public INotificationManager mNotificationManager = INotificationManager.Stub.asInterface(
+            ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+
+    public BaseNotificationsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /**
+     * Changes the notifications availability of the specified app
+     *
+     * @param packageName Package name of app
+     * @param uid Uid of app
+     * @param enabled Whether to enable or disable the notification
+     * @return Whether changing the notification availability succeeded or not
+     */
+    public boolean toggleNotificationsSetting(String packageName, int uid, boolean enabled) {
+        try {
+            if (mNotificationManager.onlyHasDefaultChannel(packageName, uid)) {
+                NotificationChannel defaultChannel =
+                        mNotificationManager.getNotificationChannelForPackage(
+                                packageName,
+                                uid,
+                                NotificationChannel.DEFAULT_CHANNEL_ID,
+                                /* conversationId= */ null,
+                                /* includeDeleted= */ true);
+                defaultChannel.setImportance(enabled ? IMPORTANCE_UNSPECIFIED : IMPORTANCE_NONE);
+                mNotificationManager
+                        .updateNotificationChannelForPackage(packageName, uid, defaultChannel);
+            }
+            mNotificationManager.setNotificationsEnabledForPackage(packageName, uid, enabled);
+        } catch (Exception e) {
+            LOG.w("Error querying notification setting for package");
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Checks whether notifications are enabled for specified app
+     *
+     * @param packageName Package name of the app
+     * @param uid Uid of the app
+     * @return Whether notifications are enabled for the specified app
+     */
+    public boolean areNotificationsEnabled(String packageName, int uid) {
+        try {
+            return mNotificationManager.areNotificationsEnabledForPackage(packageName, uid);
+        } catch (Exception e) {
+            LOG.w("Error querying notification setting for package");
+            return false;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/notifications/NotificationsAppListPreferenceController.java b/src/com/android/car/settings/notifications/NotificationsAppListPreferenceController.java
new file mode 100644
index 0000000..56766ce
--- /dev/null
+++ b/src/com/android/car/settings/notifications/NotificationsAppListPreferenceController.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.settings.applications.ApplicationDetailsFragment;
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+
+/**
+ * Controller for of list of preferences that enable / disable showing notifications for an
+ * application.
+ */
+public class NotificationsAppListPreferenceController extends
+        BaseNotificationsPreferenceController<PreferenceCategory> implements
+        ApplicationListItemManager.AppListItemListener {
+
+    private NotificationsFragment.NotificationSwitchListener mNotificationSwitchListener;
+
+    public NotificationsAppListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    public void setNotificationSwitchListener(
+            NotificationsFragment.NotificationSwitchListener listener) {
+        mNotificationSwitchListener = listener;
+    }
+
+    @Override
+    protected Class<PreferenceCategory> getPreferenceType() {
+        return PreferenceCategory.class;
+    }
+
+    @Override
+    public void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps) {
+        getPreference().removeAll();
+        for (ApplicationsState.AppEntry appEntry : apps) {
+            getPreference().addPreference(
+                    createPreference(appEntry.label, appEntry.icon,
+                            appEntry.info.packageName, appEntry.info.uid));
+        }
+    }
+
+    private Preference createPreference(String title, Drawable icon, String packageName, int uid) {
+        CarUiTwoActionSwitchPreference preference =
+                new CarUiTwoActionSwitchPreference(getContext());
+        preference.setTitle(title);
+        preference.setIcon(icon);
+        preference.setKey(packageName);
+        preference.setOnPreferenceClickListener(p -> {
+            getFragmentController().launchFragment(
+                    ApplicationDetailsFragment.getInstance(packageName));
+            return true;
+        });
+
+        preference.setOnSecondaryActionClickListener((newValue) -> {
+            toggleNotificationsSetting(packageName, uid, newValue);
+            if (mNotificationSwitchListener != null) {
+                mNotificationSwitchListener.onSwitchChanged();
+            }
+        });
+        preference.setSecondaryActionChecked(areNotificationsEnabled(packageName, uid));
+
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/notifications/NotificationsFragment.java b/src/com/android/car/settings/notifications/NotificationsFragment.java
new file mode 100644
index 0000000..02229f1
--- /dev/null
+++ b/src/com/android/car/settings/notifications/NotificationsFragment.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+import static com.android.car.settings.storage.StorageUtils.maybeInitializeVolume;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+import android.provider.Settings;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.search.SearchIndexable;
+
+/** Shows subsettings related to notifications. */
+@SearchIndexable
+public class NotificationsFragment extends SettingsFragment {
+
+    private ApplicationListItemManager mAppListItemManager;
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.notifications_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        Application application = requireActivity().getApplication();
+        ApplicationsState applicationsState = ApplicationsState.getInstance(application);
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        VolumeInfo volume = maybeInitializeVolume(sm, getArguments());
+
+        NotificationsAppListPreferenceController notificationsAppListController =
+                use(NotificationsAppListPreferenceController.class,
+                        R.string.pk_notifications_settings_all_apps);
+        RecentNotificationsAppsPreferenceController recentNotificationsController =
+                use(RecentNotificationsAppsPreferenceController.class,
+                        R.string.pk_notifications_settings_recently_sent);
+
+        mAppListItemManager = new ApplicationListItemManager(volume, getLifecycle(),
+                applicationsState,
+                getContext().getResources().getInteger(
+                        R.integer.millisecond_app_data_update_interval),
+                getContext().getResources().getInteger(
+                        R.integer.millisecond_max_app_load_wait_interval));
+        mAppListItemManager.registerListener(notificationsAppListController);
+        mAppListItemManager.registerListener(recentNotificationsController);
+        recentNotificationsController.setApplicationsState(applicationsState);
+
+        // Since an app can show in both sections, use a listener to notify the other section to
+        // update in order to maintain consistency
+        notificationsAppListController.setNotificationSwitchListener(() ->
+                mAppListItemManager.onPackageListChanged());
+        recentNotificationsController.setNotificationSwitchListener(() ->
+                mAppListItemManager.onPackageListChanged());
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAppListItemManager.startLoading(getAppFilter(), ApplicationsState.ALPHA_COMPARATOR);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mAppListItemManager.onFragmentStart();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mAppListItemManager.onFragmentStop();
+    }
+
+    private ApplicationsState.AppFilter getAppFilter() {
+        // Display only non-system apps
+        return ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER_AND_INSTANT;
+    }
+
+    /**
+     * Callback that is called when a app's notification setting is toggled
+     */
+    public interface NotificationSwitchListener {
+        /**
+         * An app's notification setting has been changed
+         */
+        void onSwitchChanged();
+    }
+
+    /**
+     * Data provider for Settings Search.
+     */
+    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new CarBaseSearchIndexProvider(R.xml.notifications_fragment,
+                    Settings.ACTION_NOTIFICATION_SETTINGS);
+}
diff --git a/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceController.java b/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceController.java
new file mode 100644
index 0000000..074cf8e
--- /dev/null
+++ b/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceController.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+import android.app.usage.IUsageStatsManager;
+import android.app.usage.UsageEvents;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.service.notification.NotifyingApp;
+import android.text.format.DateUtils;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.collection.ArrayMap;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.ApplicationDetailsFragment;
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * This controller displays a list of recently used apps. Only non-system apps are displayed.
+ * This class is largely taken from
+ * {@link com.android.settings.notification.RecentNotifyingAppsPreferenceController}
+ */
+public class RecentNotificationsAppsPreferenceController extends
+        BaseNotificationsPreferenceController<PreferenceCategory> implements
+        ApplicationListItemManager.AppListItemListener {
+
+    private static final Logger LOG = new Logger(RecentNotificationsAppsPreferenceController.class);
+
+    private static final String KEY_PLACEHOLDER = "app";
+
+    @VisibleForTesting
+    IUsageStatsManager mUsageStatsManager;
+
+    private final Integer mUserId;
+    private final int mRecentAppsMaxCount;
+    private final int mDaysThreshold;
+    private List<NotifyingApp> mApps;
+    private ApplicationsState mApplicationsState;
+    private NotificationsFragment.NotificationSwitchListener mNotificationSwitchListener;
+
+    public RecentNotificationsAppsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUsageStatsManager = IUsageStatsManager.Stub.asInterface(
+                ServiceManager.getService(Context.USAGE_STATS_SERVICE));
+        mUserId = context.getUserId();
+        mRecentAppsMaxCount = context.getResources()
+                .getInteger(R.integer.recent_notifications_apps_list_count);
+        mDaysThreshold = context.getResources()
+                .getInteger(R.integer.recent_notifications_days_threshold);
+    }
+
+    public void setApplicationsState(ApplicationsState applicationsState) {
+        mApplicationsState = applicationsState;
+    }
+
+    public void setNotificationSwitchListener(
+            NotificationsFragment.NotificationSwitchListener listener) {
+        mNotificationSwitchListener = listener;
+    }
+
+    @Override
+    protected Class<PreferenceCategory> getPreferenceType() {
+        return PreferenceCategory.class;
+    }
+
+    @Override
+    public void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps) {
+        // App entries updated, refresh since filtered apps may have changed
+        refresh();
+    }
+
+    @Override
+    public void updateState(PreferenceCategory preference) {
+        super.updateState(preference);
+        refresh();
+    }
+
+    private void refresh() {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            reloadData();
+            List<NotifyingApp> recentApps = getDisplayableRecentAppList();
+            ThreadUtils.postOnMainThread(() -> {
+                if (recentApps != null && !recentApps.isEmpty()) {
+                    getPreference().setVisible(true);
+                    displayRecentApps(recentApps);
+                } else {
+                    getPreference().setVisible(false);
+                    getPreference().removeAll();
+                }
+            });
+        });
+    }
+
+    private void reloadData() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DAY_OF_YEAR, -mDaysThreshold);
+        UsageEvents events = null;
+        try {
+            events = mUsageStatsManager.queryEventsForUser(calendar.getTimeInMillis(),
+                    System.currentTimeMillis(), mUserId, getContext().getPackageName());
+        } catch (RemoteException e) {
+            LOG.e("Failed querying user events", e);
+        }
+
+        if (events != null) {
+            ArrayMap<String, NotifyingApp> aggregatedStats = new ArrayMap<>();
+
+            UsageEvents.Event event = new UsageEvents.Event();
+            while (events.hasNextEvent()) {
+                events.getNextEvent(event);
+                if (event.getEventType() == UsageEvents.Event.NOTIFICATION_INTERRUPTION) {
+                    NotifyingApp app =
+                            aggregatedStats.get(getKey(mUserId, event.getPackageName()));
+                    if (app == null) {
+                        app = new NotifyingApp();
+                        aggregatedStats.put(getKey(mUserId, event.getPackageName()), app);
+                        app.setPackage(event.getPackageName());
+                        app.setUserId(mUserId);
+                    }
+                    if (event.getTimeStamp() > app.getLastNotified()) {
+                        app.setLastNotified(event.getTimeStamp());
+                    }
+                }
+            }
+            mApps = new ArrayList<>();
+            mApps.addAll(aggregatedStats.values());
+        }
+    }
+
+    private List<NotifyingApp> getDisplayableRecentAppList() {
+        Collections.sort(mApps);
+        List<NotifyingApp> displayableApps = new ArrayList<>(mRecentAppsMaxCount);
+        int count = 0;
+        for (NotifyingApp app : mApps) {
+            try {
+                ApplicationsState.AppEntry appEntry = mApplicationsState.getEntry(
+                        app.getPackage(), app.getUserId());
+                if (appEntry == null || isSystemApp(appEntry)) {
+                    continue;
+                }
+                displayableApps.add(app);
+                count++;
+                if (count >= mRecentAppsMaxCount) {
+                    break;
+                }
+            } catch (Exception e) {
+                LOG.e("Failed to find app " + app.getPackage() + "/" + app.getUserId(), e);
+            }
+        }
+        return displayableApps;
+    }
+
+    private void displayRecentApps(List<NotifyingApp> recentApps) {
+        int keyIndex = 1;
+        int recentAppsCount = recentApps.size();
+        for (int i = 0; i < recentAppsCount; i++, keyIndex++) {
+            NotifyingApp app = recentApps.get(i);
+            // Bind recent apps to existing prefs if possible, or create a new pref.
+            String pkgName = app.getPackage();
+            ApplicationsState.AppEntry appEntry =
+                    mApplicationsState.getEntry(app.getPackage(), app.getUserId());
+            if (appEntry == null || appEntry.label == null) {
+                continue;
+            }
+
+            CarUiTwoActionSwitchPreference pref = getPreference()
+                    .findPreference(KEY_PLACEHOLDER + keyIndex);
+            if (pref == null) {
+                pref = new CarUiTwoActionSwitchPreference(getContext());
+                pref.setKey(KEY_PLACEHOLDER + keyIndex);
+                getPreference().addPreference(pref);
+            }
+            pref.setTitle(appEntry.label);
+            pref.setIcon(appEntry.icon);
+            pref.setSummary(DateUtils.getRelativeTimeSpanString(app.getLastNotified(),
+                    System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS));
+            pref.setOnPreferenceClickListener(p -> {
+                getFragmentController().launchFragment(
+                        ApplicationDetailsFragment.getInstance(pkgName));
+                return true;
+            });
+
+            pref.setOnSecondaryActionClickListener((newValue) -> {
+                toggleNotificationsSetting(pkgName, appEntry.info.uid, newValue);
+                if (mNotificationSwitchListener != null) {
+                    mNotificationSwitchListener.onSwitchChanged();
+                }
+            });
+            pref.setSecondaryActionChecked(areNotificationsEnabled(pkgName, appEntry.info.uid));
+        }
+        // If there are less than SHOW_RECENT_APP_COUNT recent apps, remove placeholders
+        for (int i = keyIndex; i <= mRecentAppsMaxCount; i++) {
+            getPreference().removePreferenceRecursively(KEY_PLACEHOLDER + i);
+        }
+    }
+
+    private String getKey(int userId, String pkg) {
+        return userId + "|" + pkg;
+    }
+
+    /** Returns true if the app for the given package name is a system app for this device */
+    private boolean isSystemApp(ApplicationsState.AppEntry appEntry) {
+        return !ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER_AND_INSTANT.filterApp(appEntry);
+    }
+}
diff --git a/src/com/android/car/settings/privacy/DeleteUserPreferenceController.java b/src/com/android/car/settings/privacy/DeleteUserPreferenceController.java
new file mode 100644
index 0000000..776e484
--- /dev/null
+++ b/src/com/android/car/settings/privacy/DeleteUserPreferenceController.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import android.app.ActivityManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.widget.Toast;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.profiles.ProfileUtils;
+import com.android.car.settings.profiles.RemoveProfileHandler;
+import com.android.internal.annotations.VisibleForTesting;
+
+/** Business logic for preference that deletes the current user profile. */
+public class DeleteUserPreferenceController
+        extends PreferenceController<ClickableWhileDisabledPreference> {
+
+    private final UserInfo mUserInfo;
+    private final RemoveProfileHandler mRemoveProfileHandler;
+
+    public DeleteUserPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                new RemoveProfileHandler(context, ProfileHelper.getInstance(context),
+                        UserManager.get(context), fragmentController));
+    }
+
+    @VisibleForTesting
+    DeleteUserPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions, RemoveProfileHandler removeProfileHandler) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mRemoveProfileHandler = removeProfileHandler;
+        mUserInfo = ProfileUtils.getUserInfo(getContext(), ActivityManager.getCurrentUser());
+        mRemoveProfileHandler.setUserInfo(mUserInfo);
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        mRemoveProfileHandler.resetListeners();
+        getPreference().setDisabledClickListener(p ->
+                Toast.makeText(getContext(), getContext().getString(R.string.action_unavailable),
+                        Toast.LENGTH_LONG).show());
+    }
+
+    @Override
+    protected Class<ClickableWhileDisabledPreference> getPreferenceType() {
+        return ClickableWhileDisabledPreference.class;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ClickableWhileDisabledPreference preference) {
+        mRemoveProfileHandler.showConfirmRemoveProfileDialog();
+        return true;
+    }
+
+    @AvailabilityStatus
+    protected int getAvailabilityStatus() {
+        return mRemoveProfileHandler.canRemoveProfile(mUserInfo) ? AVAILABLE
+                : AVAILABLE_FOR_VIEWING;
+    }
+}
diff --git a/src/com/android/car/settings/privacy/LocationTogglePreferenceController.java b/src/com/android/car/settings/privacy/LocationTogglePreferenceController.java
new file mode 100644
index 0000000..d2ad0b1
--- /dev/null
+++ b/src/com/android/car/settings/privacy/LocationTogglePreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.Utils;
+
+/** Handles a {@link CarUiTwoActionSwitchPreference} which shows the current status of Location. */
+public class LocationTogglePreferenceController
+        extends PreferenceController<CarUiTwoActionSwitchPreference> {
+
+    @VisibleForTesting
+    static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
+            new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
+
+    private final Context mContext;
+    private final LocationManager mLocationManager;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public LocationTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mContext = context;
+        mLocationManager = context.getSystemService(LocationManager.class);
+    }
+
+    @Override
+    protected Class<CarUiTwoActionSwitchPreference> getPreferenceType() {
+        return CarUiTwoActionSwitchPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setOnSecondaryActionClickListener(locationEnabled -> {
+            Utils.updateLocationEnabled(
+                    mContext,
+                    locationEnabled,
+                    UserHandle.myUserId(),
+                    Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS);
+        });
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mContext.registerReceiver(mReceiver, INTENT_FILTER_LOCATION_MODE_CHANGED);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mContext.unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void updateState(CarUiTwoActionSwitchPreference preference) {
+        preference.setSecondaryActionChecked(mLocationManager.isLocationEnabled());
+    }
+}
diff --git a/src/com/android/car/settings/privacy/MuteMicTogglePreferenceController.java b/src/com/android/car/settings/privacy/MuteMicTogglePreferenceController.java
new file mode 100644
index 0000000..1be3de6
--- /dev/null
+++ b/src/com/android/car/settings/privacy/MuteMicTogglePreferenceController.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.hardware.SensorPrivacyManager;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+import com.android.internal.annotations.VisibleForTesting;
+
+/** Business logic for controlling the mute mic setting. */
+public class MuteMicTogglePreferenceController
+        extends PreferenceController<CarUiTwoActionSwitchPreference> {
+
+    private SensorPrivacyManager mSensorPrivacyManager;
+
+    private SensorPrivacyManager.OnSensorPrivacyChangedListener mListener =
+            new SensorPrivacyManager.OnSensorPrivacyChangedListener() {
+                @Override
+                public void onSensorPrivacyChanged(int sensor, boolean enabled) {
+                    refreshUi();
+                }
+            };
+
+    public MuteMicTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                SensorPrivacyManager.getInstance(context));
+    }
+
+    @VisibleForTesting
+    MuteMicTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            SensorPrivacyManager sensorPrivacyManager) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSensorPrivacyManager = sensorPrivacyManager;
+    }
+
+    @Override
+    protected Class<CarUiTwoActionSwitchPreference> getPreferenceType() {
+        return CarUiTwoActionSwitchPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setOnSecondaryActionClickListener(isChecked -> {
+            // Settings UX currently shows "checked means mic is enabled", but the underlying API is
+            // inversely written around "is mic muted?" So we must be careful when doing
+            // comparisons.
+            boolean isMicMuted = mSensorPrivacyManager.isSensorPrivacyEnabled(
+                    SensorPrivacyManager.Sensors.MICROPHONE);
+            if (isChecked == isMicMuted) {
+                // UX and underlying API state for mic do not match, so update sensor privacy
+                mSensorPrivacyManager.setSensorPrivacyForProfileGroup(
+                        SensorPrivacyManager.Sources.SETTINGS,
+                        SensorPrivacyManager.Sensors.MICROPHONE,
+                        !isChecked);
+            }
+        });
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mSensorPrivacyManager.addSensorPrivacyListener(
+                SensorPrivacyManager.Sensors.MICROPHONE, mListener);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mSensorPrivacyManager.removeSensorPrivacyListener(SensorPrivacyManager.Sensors.MICROPHONE,
+                mListener);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        boolean hasFeatureMicToggle = mSensorPrivacyManager.supportsSensorToggle(
+                SensorPrivacyManager.Sensors.MICROPHONE);
+        return hasFeatureMicToggle ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(CarUiTwoActionSwitchPreference preference) {
+        preference.setSecondaryActionChecked(!mSensorPrivacyManager.isSensorPrivacyEnabled(
+                SensorPrivacyManager.Sensors.MICROPHONE));
+    }
+}
diff --git a/src/com/android/car/settings/privacy/PrivacyExtraPreferenceController.java b/src/com/android/car/settings/privacy/PrivacyExtraPreferenceController.java
deleted file mode 100644
index 7c51353..0000000
--- a/src/com/android/car/settings/privacy/PrivacyExtraPreferenceController.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2020 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.car.settings.privacy;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.ExtraSettingsPreferenceController;
-import com.android.car.settings.common.FragmentController;
-
-import java.util.Map;
-
-/**
- * Injects preferences from other system applications at a placeholder location into the
- * {@link PrivacySettingsFragment}.
- */
-public class PrivacyExtraPreferenceController extends ExtraSettingsPreferenceController {
-
-    public PrivacyExtraPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions restrictionInfo) {
-        super(context, preferenceKey, fragmentController, restrictionInfo);
-    }
-
-    @Override
-    protected void addExtraSettings(Map<Preference, Bundle> preferenceBundleMap) {
-        for (Preference setting : preferenceBundleMap.keySet()) {
-            // IA framework allows for icons to be defined, but we don't want any icons on this page
-            setting.setIcon(null);
-            getPreference().addPreference(setting);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/privacy/VehicleDataFragment.java b/src/com/android/car/settings/privacy/VehicleDataFragment.java
new file mode 100644
index 0000000..4f24eab
--- /dev/null
+++ b/src/com/android/car/settings/privacy/VehicleDataFragment.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.CarSettingActivities;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/**
+ * Privacy features related to in vehicle data control.
+ */
+@SearchIndexable
+public class VehicleDataFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.vehicle_data_fragment;
+    }
+
+    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new CarBaseSearchIndexProvider(R.xml.vehicle_data_fragment,
+                    CarSettingActivities.VehicleDataActivity.class);
+
+}
diff --git a/src/com/android/car/settings/profiles/AddNewProfileTask.java b/src/com/android/car/settings/profiles/AddNewProfileTask.java
new file mode 100644
index 0000000..68403d1
--- /dev/null
+++ b/src/com/android/car/settings/profiles/AddNewProfileTask.java
@@ -0,0 +1,102 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.user.CarUserManager;
+import android.car.user.UserCreationResult;
+import android.car.userlib.UserHelper;
+import android.car.util.concurrent.AsyncFuture;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.AsyncTask;
+
+import com.android.car.settings.common.Logger;
+
+import java.util.concurrent.ExecutionException;
+
+/**
+ * Task to add a new profile to the device
+ */
+public class AddNewProfileTask extends AsyncTask<String, Void, UserInfo> {
+    private static final Logger LOG = new Logger(AddNewProfileTask.class);
+
+    private final Context mContext;
+    private final CarUserManager mCarUserManager;
+    private final AddNewProfileListener mAddNewProfileListener;
+
+    public AddNewProfileTask(Context context, CarUserManager carUserManager,
+            AddNewProfileListener addNewProfileListener) {
+        mContext = context;
+        mCarUserManager = carUserManager;
+        mAddNewProfileListener = addNewProfileListener;
+    }
+
+    @Override
+    protected UserInfo doInBackground(String... profileNames) {
+        AsyncFuture<UserCreationResult> future = mCarUserManager.createUser(profileNames[0],
+                /* flags= */ 0);
+        try {
+            UserCreationResult result = future.get();
+            if (result.isSuccess()) {
+                UserInfo user = result.getUser();
+                if (user != null) {
+                    UserHelper.setDefaultNonAdminRestrictions(mContext, user, /* enable= */ true);
+                    UserHelper.assignDefaultIcon(mContext, user);
+                } else {
+                    LOG.wtf("Inconsistent state: successful future with null profile - "
+                            + result.toString());
+                }
+                return user;
+            }
+        } catch (InterruptedException | ExecutionException e) {
+            if (e instanceof InterruptedException) {
+                Thread.currentThread().interrupt();
+            }
+            LOG.e("Error creating new profile: ", e);
+        }
+        return null;
+    }
+
+    @Override
+    protected void onPreExecute() { }
+
+    @Override
+    protected void onPostExecute(UserInfo user) {
+        if (user != null) {
+            mAddNewProfileListener.onProfileAddedSuccess();
+            mCarUserManager.switchUser(user.id);
+        } else {
+            mAddNewProfileListener.onProfileAddedFailure();
+        }
+    }
+
+    /**
+     * Interface for getting notified when AddNewProfileTask has been completed.
+     */
+    public interface AddNewProfileListener {
+        /**
+         * Invoked in AddNewProfileTask.onPostExecute after the profile has been created
+         * successfully.
+         */
+        void onProfileAddedSuccess();
+
+        /**
+         * Invoked in AddNewProfileTask.onPostExecute if new profile creation failed.
+         */
+        void onProfileAddedFailure();
+    }
+}
diff --git a/src/com/android/car/settings/profiles/AddProfileHandler.java b/src/com/android/car/settings/profiles/AddProfileHandler.java
new file mode 100644
index 0000000..fb866ba
--- /dev/null
+++ b/src/com/android/car/settings/profiles/AddProfileHandler.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import android.car.Car;
+import android.car.user.CarUserManager;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Consolidates adding profile logic into one handler so we can have consistent logic across various
+ * parts of the Settings app.
+ */
+public class AddProfileHandler implements AddNewProfileTask.AddNewProfileListener {
+
+    @VisibleForTesting
+    static final String CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG =
+            "com.android.car.settings.profiles.ConfirmCreateNewProfileDialog";
+
+    @VisibleForTesting
+    AddNewProfileTask mAddNewProfileTask;
+    /** Indicates that a task is running. */
+    private boolean mIsBusy;
+
+    private final Context mContext;
+    private final FragmentController mFragmentController;
+    private final PreferenceController mPreferenceController;
+    private final Car mCar;
+    private CarUserManager mCarUserManager;
+
+    @VisibleForTesting
+    ConfirmationDialogFragment.ConfirmListener mConfirmCreateNewProfileListener;
+
+    public AddProfileHandler(Context context, FragmentController fragmentController,
+            PreferenceController preferenceController) {
+        mContext = context;
+        mFragmentController = fragmentController;
+        mPreferenceController = preferenceController;
+        mCar = Car.createCar(context);
+        mCarUserManager = (CarUserManager) mCar.getCarManager(Car.CAR_USER_SERVICE);
+
+        mConfirmCreateNewProfileListener = arguments -> {
+            mAddNewProfileTask = new AddNewProfileTask(mContext,
+                    mCarUserManager, /* addNewProfileListener= */ this);
+            mAddNewProfileTask.execute(mContext.getString(R.string.user_new_user_name));
+
+            mIsBusy = true;
+            mPreferenceController.refreshUi();
+        };
+    }
+
+    /**
+     * Handles operations that should happen in host's onCreateInternal().
+     * Resets listeners as they can get unregistered with certain configuration changes.
+     */
+    public void onCreateInternal() {
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) mFragmentController.findDialogByTag(
+                        CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG),
+                mConfirmCreateNewProfileListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+    }
+
+    /**
+     * Handles operations that should happen in host's onStopInternal().
+     */
+    public void onStopInternal() {
+        mFragmentController.showProgressBar(false);
+    }
+
+    /**
+     * Handles events that should happen in host's onDestroyInternal().
+     */
+    public void onDestroyInternal() {
+        if (mAddNewProfileTask != null) {
+            mAddNewProfileTask.cancel(/* mayInterruptIfRunning= */ false);
+        }
+        if (mCar != null) {
+            mCar.disconnect();
+        }
+    }
+
+    /**
+     * Handles events that should happen in host's updateState().
+     */
+    public void updateState(Preference preference) {
+        preference.setEnabled(!mIsBusy);
+        mFragmentController.showProgressBar(mIsBusy);
+    }
+
+    @Override
+    public void onProfileAddedSuccess() {
+        mIsBusy = false;
+        mPreferenceController.refreshUi();
+    }
+
+    @Override
+    public void onProfileAddedFailure() {
+        mIsBusy = false;
+        mPreferenceController.refreshUi();
+        // Display failure dialog.
+        mFragmentController.showDialog(
+                ErrorDialog.newInstance(R.string.add_user_error_title), /* tag= */ null);
+    }
+
+    /**
+     *  Determines whether the user manager instance has the permission to add profiles
+     *
+     * @param userManager UserManager instance to evaluate
+     * @return whether the user has permissions to add profiles
+     */
+    public boolean canAddProfiles(UserManager userManager) {
+        return !userManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER);
+    }
+
+    /**
+     * Display dialog to add a profile
+     */
+    public void showAddProfileDialog() {
+        ConfirmationDialogFragment dialogFragment =
+                ProfilesDialogProvider.getConfirmCreateNewProfileDialogFragment(
+                        mContext, mConfirmCreateNewProfileListener, null);
+
+        mFragmentController.showDialog(dialogFragment, CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG);
+    }
+
+    @VisibleForTesting
+    void setCarUserManager(CarUserManager carUserManager) {
+        mCarUserManager = carUserManager;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/AddProfilePreferenceController.java b/src/com/android/car/settings/profiles/AddProfilePreferenceController.java
new file mode 100644
index 0000000..4cdc726
--- /dev/null
+++ b/src/com/android/car/settings/profiles/AddProfilePreferenceController.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2020 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.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * Business Logic for preference either adds a new profile or exits retail mode, depending on the
+ * current profile.
+ */
+public class AddProfilePreferenceController extends PreferenceController<Preference> {
+
+    @VisibleForTesting
+    static final String MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG =
+            "com.android.car.settings.profiles.MaxProfilesLimitReachedDialog";
+
+    private UserManager mUserManager;
+    private DemoProfileDialogHandler mDemoProfileDialogHandler;
+    private AddProfileHandler mAddProfileHandler;
+
+    public AddProfilePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUserManager = UserManager.get(context);
+        mDemoProfileDialogHandler = new DemoProfileDialogHandler(context, fragmentController);
+        mAddProfileHandler = new AddProfileHandler(context, fragmentController, this);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mDemoProfileDialogHandler.onCreateInternal();
+        mAddProfileHandler.onCreateInternal();
+
+        if (mUserManager.isDemoUser()) {
+            getPreference().setTitle(R.string.exit_retail_button_text);
+        } else {
+            getPreference().setTitle(R.string.add_profile_text);
+            getPreference().setIcon(R.drawable.ic_add);
+        }
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mAddProfileHandler.onStopInternal();
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mAddProfileHandler.onDestroyInternal();
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        mAddProfileHandler.updateState(preference);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        // If the user is a demo user, show a dialog asking if they want to exit retail/demo mode.
+        if (mUserManager.isDemoUser()) {
+            mDemoProfileDialogHandler.showExitRetailDialog();
+            return true;
+        }
+
+        // If no more profiles can be added because the maximum allowed number is reached, let the
+        // user know.
+        if (!mUserManager.canAddMoreUsers()) {
+            ConfirmationDialogFragment dialogFragment =
+                    ProfilesDialogProvider.getMaxProfilesLimitReachedDialogFragment(getContext(),
+                            ProfileHelper.getInstance(getContext()).getMaxSupportedRealProfiles());
+
+            getFragmentController().showDialog(dialogFragment,
+                    MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG);
+            return true;
+        }
+
+        // Only add the add profile button if the current profile is allowed to add a profile.
+        if (mAddProfileHandler.canAddProfiles(mUserManager)) {
+            mAddProfileHandler.showAddProfileDialog();
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (mUserManager.isDemoUser() || mAddProfileHandler.canAddProfiles(mUserManager)) {
+            return AVAILABLE;
+        }
+        return DISABLED_FOR_PROFILE;
+    }
+
+    @VisibleForTesting
+    void setUserManager(UserManager userManager) {
+        mUserManager = userManager;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ChooseNewAdminFragment.java b/src/com/android/car/settings/profiles/ChooseNewAdminFragment.java
new file mode 100644
index 0000000..a99f909
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ChooseNewAdminFragment.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static java.util.Objects.requireNonNull;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * This screen appears after the last admin on the device tries to delete themselves. (but only if
+ * there are other profiles on the device)
+ *
+ * <p> It lets the Admin see a list of non-Admins on the device and choose a profile from the list
+ * to upgrade to Admin.
+ *
+ * <p> After new admin has been selected and upgraded, the old Admin is removed.
+ */
+public class ChooseNewAdminFragment extends SettingsFragment {
+
+    /**
+     * Creates a new instance of {@link ChooseNewAdminFragment} that enables the last remaining
+     * admin to choose a new Admin from a list of Non-Admins.
+     *
+     * @param adminInfo Admin that will get removed after new admin has been designated.
+     */
+    public static ChooseNewAdminFragment newInstance(UserInfo adminInfo) {
+        ChooseNewAdminFragment profilesListFragment = new ChooseNewAdminFragment();
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(Intent.EXTRA_USER, adminInfo);
+        profilesListFragment.setArguments(bundle);
+        return profilesListFragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.choose_new_admin_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        UserInfo adminInfo = requireNonNull(getArguments()).getParcelable(
+                Intent.EXTRA_USER);
+        use(ChooseNewAdminPreferenceController.class, R.string.pk_choose_new_admin).setAdminInfo(
+                adminInfo);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceController.java b/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceController.java
new file mode 100644
index 0000000..8d89772
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceController.java
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Business logic for when the last admin is about to be removed from the device and a new
+ * administrator needs to be chosen.
+ */
+public class ChooseNewAdminPreferenceController extends ProfilesBasePreferenceController {
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        UserInfo userToMakeAdmin = (UserInfo) arguments.get(
+                ProfilesDialogProvider.KEY_PROFILE_TO_MAKE_ADMIN);
+        assignNewAdminAndRemoveOldAdmin(userToMakeAdmin);
+        getFragmentController().goBack();
+    };
+
+    private UserInfo mAdminInfo;
+
+    public ChooseNewAdminPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Setter for the profile info of the admin we're deleting. */
+    public void setAdminInfo(UserInfo adminInfo) {
+        mAdminInfo = adminInfo;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mAdminInfo == null) {
+            throw new IllegalStateException("Admin info should be set by this point");
+        }
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        ConfirmationDialogFragment dialogFragment =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+
+        ConfirmationDialogFragment.resetListeners(
+                dialogFragment,
+                mConfirmListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+    }
+
+    @Override
+    protected void profileClicked(UserInfo profileToMakeAdmin) {
+        ConfirmationDialogFragment dialogFragment =
+                ProfilesDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
+                        mConfirmListener, /* rejectListener= */ null, profileToMakeAdmin);
+        getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+    }
+
+    @VisibleForTesting
+    void assignNewAdminAndRemoveOldAdmin(UserInfo profileToMakeAdmin) {
+        android.car.userlib.UserHelper.grantAdminPermissions(getContext(), profileToMakeAdmin);
+        removeOldAdmin();
+    }
+
+    private void removeOldAdmin() {
+        Context context = getContext();
+        ProfileHelper profileHelper = ProfileHelper.getInstance(context);
+        int removeUserResult = profileHelper.removeProfile(context, mAdminInfo);
+        if (removeUserResult != ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS) {
+            // If failed, need to show error dialog for users.
+            getFragmentController().showDialog(
+                    ErrorDialog.newInstance(
+                            profileHelper.getErrorMessageForProfileResult(removeUserResult)),
+                    /* tag= */ null);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/profiles/DemoProfileDialogHandler.java b/src/com/android/car/settings/profiles/DemoProfileDialogHandler.java
new file mode 100644
index 0000000..9ffeeea
--- /dev/null
+++ b/src/com/android/car/settings/profiles/DemoProfileDialogHandler.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * Consolidates demo profile dialog logic into one handler so we can have
+ * consistent logic across various parts of the Settings app.
+ */
+public class DemoProfileDialogHandler {
+
+    private static final String FACTORY_RESET_PACKAGE_NAME = "android";
+    private static final String FACTORY_RESET_REASON = "ExitRetailModeConfirmed";
+    @VisibleForTesting
+    static final String CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG =
+            "com.android.car.settings.profiles.ConfirmExitRetailModeDialog";
+
+    private final Context mContext;
+    private final FragmentController mFragmentController;
+
+    /**
+     * Will perform a factory reset. Copied from
+     * {@link com.android.settings.MainClearConfirm#doMainClear()}
+     */
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmExitRetailModeListener;
+
+    public DemoProfileDialogHandler(Context context, FragmentController fragmentController) {
+        mContext = context;
+        mFragmentController = fragmentController;
+        mConfirmExitRetailModeListener =
+                arguments -> {
+                    Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
+                    intent.setPackage(FACTORY_RESET_PACKAGE_NAME);
+                    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+                    intent.putExtra(Intent.EXTRA_REASON, FACTORY_RESET_REASON);
+                    intent.putExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, true);
+                    intent.putExtra(Intent.EXTRA_WIPE_ESIMS, true);
+                    mContext.sendBroadcast(intent);
+                    // Intent handling is asynchronous -- assume it will happen soon.
+                };
+    }
+
+    /**
+     * Handles operations that should happen in host's onCreateInternal().
+     * Resets listeners as they can get unregistered with certain configuration changes.
+     */
+    public void onCreateInternal() {
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) mFragmentController.findDialogByTag(
+                        CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG),
+                mConfirmExitRetailModeListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+    }
+
+    /**
+     * Display dialog to exit retail mode
+     */
+    public void showExitRetailDialog() {
+        ConfirmationDialogFragment dialogFragment =
+                ProfilesDialogProvider.getConfirmExitRetailModeDialogFragment(mContext,
+                        mConfirmExitRetailModeListener, null);
+
+        mFragmentController.showDialog(dialogFragment, CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/EditProfileNameFragment.java b/src/com/android/car/settings/profiles/EditProfileNameFragment.java
new file mode 100644
index 0000000..fba278d
--- /dev/null
+++ b/src/com/android/car/settings/profiles/EditProfileNameFragment.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.settings.profiles;
+
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.BaseFragment;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Enables user to edit their profile name.
+ */
+public class EditProfileNameFragment extends BaseFragment {
+
+    private static final String PROFILE_NAME_SET = "profile_name_set";
+
+    private UserInfo mUserInfo;
+
+    private EditText mProfileNameEditText;
+    @VisibleForTesting UserManager mUserManager;
+    private MenuItem mSaveButton;
+
+    /**
+     * Creates instance of EditProfileNameFragment.
+     */
+    public static EditProfileNameFragment newInstance(UserInfo userInfo) {
+        EditProfileNameFragment
+                profileSettingsFragment = new EditProfileNameFragment();
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(Intent.EXTRA_USER, userInfo);
+        profileSettingsFragment.setArguments(bundle);
+        return profileSettingsFragment;
+    }
+
+    @Override
+    public List<MenuItem> getToolbarMenuItems() {
+        return Collections.singletonList(mSaveButton);
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.edit_profile_name_fragment;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.edit_user_name_title;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mUserInfo = getArguments().getParcelable(Intent.EXTRA_USER);
+
+        mSaveButton = new MenuItem.Builder(getContext())
+                .setTitle(android.R.string.ok)
+                .setOnClickListener(i -> {
+                    // Save new user's name.
+                    mUserManager.setUserName(mUserInfo.id,
+                            mProfileNameEditText.getText().toString());
+                    Settings.Secure.putInt(getActivity().getContentResolver(),
+                            PROFILE_NAME_SET, 1);
+                    getActivity().onBackPressed();
+                })
+                .build();
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        mProfileNameEditText = view.findViewById(R.id.profile_name_text_edit);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        if (mUserManager == null) {
+            mUserManager = UserManager.get(getContext());
+        }
+
+        configureProfileNameEditing();
+    }
+
+    private void configureProfileNameEditing() {
+        // Set the profile's name.
+        mProfileNameEditText.setText(mUserInfo.name);
+        mProfileNameEditText.setEnabled(true);
+        mProfileNameEditText.setSelectAllOnFocus(true);
+        mProfileNameEditText.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (TextUtils.isEmpty(s)) {
+                    mSaveButton.setEnabled(false);
+                    mProfileNameEditText.setError(getString(R.string.name_input_blank_error));
+                } else if (!TextUtils.isGraphic(s)) {
+                    mSaveButton.setEnabled(false);
+                    mProfileNameEditText.setError(getString(R.string.name_input_invalid_error));
+                } else {
+                    mSaveButton.setEnabled(true);
+                    mProfileNameEditText.setError(null);
+                }
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
+        });
+    }
+}
diff --git a/src/com/android/car/settings/profiles/PermissionsPreferenceController.java b/src/com/android/car/settings/profiles/PermissionsPreferenceController.java
new file mode 100644
index 0000000..1d62735
--- /dev/null
+++ b/src/com/android/car/settings/profiles/PermissionsPreferenceController.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.ui.preference.CarUiSwitchPreference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Constructs and populates the permissions toggles for non admin profiles.
+ *
+ * <p>In order to add a new permission, it needs to be added to {@link
+ * android.car.userlib.UserHelper#OPTIONAL_NON_ADMIN_RESTRICTIONS} and the appropriate label needs
+ * to be added to {@link #PERMISSIONS_LIST}.
+ */
+public class PermissionsPreferenceController extends
+        ProfileDetailsBasePreferenceController<PreferenceGroup> {
+
+    private static class ProfilePermission {
+        private final String mPermissionKey;
+        @StringRes
+        private final int mPermissionTitle;
+
+        ProfilePermission(String key, int title) {
+            mPermissionKey = key;
+            mPermissionTitle = title;
+        }
+
+        public String getPermissionKey() {
+            return mPermissionKey;
+        }
+
+        public int getPermissionTitle() {
+            return mPermissionTitle;
+        }
+    }
+
+    @VisibleForTesting
+    static final String PERMISSION_TYPE_KEY = "permission_type_key";
+    private static final List<ProfilePermission> PERMISSIONS_LIST = new ArrayList<>();
+
+    // Add additional preferences to show here (in the order they should appear).
+    static {
+        PERMISSIONS_LIST.add(new ProfilePermission(UserManager.DISALLOW_ADD_USER,
+                R.string.create_user_permission_title));
+        PERMISSIONS_LIST.add(new ProfilePermission(UserManager.DISALLOW_OUTGOING_CALLS,
+                R.string.outgoing_calls_permission_title));
+        PERMISSIONS_LIST.add(new ProfilePermission(UserManager.DISALLOW_SMS,
+                R.string.sms_messaging_permission_title));
+        PERMISSIONS_LIST.add(new ProfilePermission(UserManager.DISALLOW_INSTALL_APPS,
+                R.string.install_apps_permission_title));
+        PERMISSIONS_LIST.add(new ProfilePermission(UserManager.DISALLOW_UNINSTALL_APPS,
+                R.string.uninstall_apps_permission_title));
+    }
+
+    private final List<SwitchPreference> mPermissionPreferences = new ArrayList<>();
+
+    public PermissionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        for (ProfilePermission permission : PERMISSIONS_LIST) {
+            SwitchPreference preference = new CarUiSwitchPreference(context);
+            preference.setTitle(permission.getPermissionTitle());
+            preference.getExtras().putString(PERMISSION_TYPE_KEY, permission.getPermissionKey());
+            preference.setOnPreferenceChangeListener((pref, newValue) -> {
+                boolean granted = (boolean) newValue;
+                UserManager.get(context).setUserRestriction(
+                        pref.getExtras().getString(PERMISSION_TYPE_KEY),
+                        !granted,
+                        getUserInfo().getUserHandle());
+                return true;
+            });
+            mPermissionPreferences.add(preference);
+        }
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        for (SwitchPreference switchPreference : mPermissionPreferences) {
+            getPreference().addPreference(switchPreference);
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        for (SwitchPreference switchPreference : mPermissionPreferences) {
+            UserManager userManager = UserManager.get(getContext());
+            switchPreference.setChecked(
+                    !userManager.hasUserRestriction(
+                            switchPreference.getExtras().getString(PERMISSION_TYPE_KEY),
+                            getUserInfo().getUserHandle()));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceController.java b/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceController.java
new file mode 100644
index 0000000..1a84ae2
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceController.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2020 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.car.settings.profiles;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActionButtonInfo;
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Displays the action buttons for profile details.
+ *
+ * <p>The actions shown depends on the current and selected profile.
+ * <ol>
+ * <li>Rename: shown if selected profile is the current profile
+ * <li>Make admin: shown if current profile is an admin and the selected profile is not
+ * <li>Manage other profiles: shown if selected profile is the current profile and
+ * there are other profiles
+ * <li>Add a profile: shown if selected profile is the current profile and
+ * there are no other profiles
+ * <li> Exit demo: shown if selected profile is the current profile and is a demo
+ * <li>Delete: shown if the current profile is allowed to remove profiles, is not a demo
+ * profile, and selected profile is not the current profile
+ * </ol>
+ */
+public final class ProfileDetailsActionButtonsPreferenceController
+        extends ProfileDetailsBasePreferenceController<ActionButtonsPreference> {
+
+    @VisibleForTesting
+    static final String MAKE_ADMIN_DIALOG_TAG = "MakeAdminDialogFragment";
+
+    private final ProfileHelper mProfileHelper;
+    private final UserManager mUserManager;
+    private DemoProfileDialogHandler mDemoProfileDialogHandler;
+    private AddProfileHandler mAddProfileHandler;
+
+    @VisibleForTesting
+    final ConfirmationDialogFragment.ConfirmListener mMakeAdminConfirmListener =
+            arguments -> {
+                UserInfo profileToMakeAdmin =
+                        (UserInfo) arguments.get(ProfilesDialogProvider.KEY_PROFILE_TO_MAKE_ADMIN);
+                android.car.userlib.UserHelper.grantAdminPermissions(getContext(),
+                        profileToMakeAdmin);
+                getFragmentController().goBack();
+            };
+
+    private final RemoveProfileHandler mRemoveProfileHandler;
+
+    public ProfileDetailsActionButtonsPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                ProfileHelper.getInstance(context), UserManager.get(context),
+                new RemoveProfileHandler(context, ProfileHelper.getInstance(context),
+                        UserManager.get(context), fragmentController));
+    }
+
+    @VisibleForTesting
+    ProfileDetailsActionButtonsPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions, ProfileHelper profileHelper, UserManager userManager,
+            RemoveProfileHandler removeProfileHandler) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mProfileHelper = profileHelper;
+        mUserManager = userManager;
+        mRemoveProfileHandler = removeProfileHandler;
+        mDemoProfileDialogHandler = new DemoProfileDialogHandler(context, fragmentController);
+        mAddProfileHandler = new AddProfileHandler(context, fragmentController, this);
+    }
+
+    @Override
+    protected Class<ActionButtonsPreference> getPreferenceType() {
+        return ActionButtonsPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+
+        mDemoProfileDialogHandler.onCreateInternal();
+        mAddProfileHandler.onCreateInternal();
+
+        ConfirmationDialogFragment makeAdminDialog =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        MAKE_ADMIN_DIALOG_TAG);
+        ConfirmationDialogFragment.resetListeners(
+                makeAdminDialog,
+                mMakeAdminConfirmListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+
+        mRemoveProfileHandler.resetListeners();
+    }
+
+    @Override
+    protected void onStartInternal() {
+        super.onStartInternal();
+
+        ActionButtonInfo renameButton = getPreference().getButton(ActionButtons.BUTTON1);
+        ActionButtonInfo makeAdminButton = getPreference().getButton(ActionButtons.BUTTON2);
+        ActionButtonInfo profilesButton = getPreference().getButton(ActionButtons.BUTTON3);
+        ActionButtonInfo deleteButton = getPreference().getButton(ActionButtons.BUTTON4);
+
+        boolean isDemoProfile = mUserManager.isDemoUser();
+        boolean shouldShowAddProfile = mUserManager.isAdminUser()
+                && mProfileHelper.isCurrentProcessUser(getUserInfo())
+                && mAddProfileHandler.canAddProfiles(mUserManager)
+                && !areThereOtherProfiles();
+        boolean shouldShowProfilesButton = isDemoProfile || shouldShowAddProfile
+                || mUserManager.isAdminUser() && mProfileHelper.isCurrentProcessUser(getUserInfo())
+                && areThereOtherProfiles();
+
+        int profileButtonText;
+        if (shouldShowAddProfile && isDemoProfile) {
+            profileButtonText = R.string.exit_retail_button_text;
+        } else if (shouldShowAddProfile) {
+            profileButtonText = R.string.add_a_profile_button_text;
+        } else {
+            profileButtonText = R.string.manage_other_profiles_button_text;
+        }
+
+        renameButton
+                .setText(R.string.bluetooth_rename_button)
+                .setIcon(R.drawable.ic_edit)
+                .setVisible(mProfileHelper.isCurrentProcessUser(getUserInfo()))
+                .setOnClickListener(v -> getFragmentController().launchFragment(
+                        EditProfileNameFragment.newInstance(getUserInfo())));
+
+        makeAdminButton
+                .setText(R.string.grant_admin_permissions_button_text)
+                .setIcon(R.drawable.ic_person)
+                .setVisible(ProfileUtils.isAdminViewingNonAdmin(mUserManager, getUserInfo()))
+                .setOnClickListener(v -> showConfirmMakeAdminDialog());
+
+        profilesButton
+                .setText(profileButtonText)
+                .setVisible(shouldShowProfilesButton)
+                .setOnClickListener(v -> {
+                    if (shouldShowAddProfile && isDemoProfile) {
+                        mDemoProfileDialogHandler.showExitRetailDialog();
+                    } else if (shouldShowAddProfile) {
+                        mAddProfileHandler.showAddProfileDialog();
+                    } else {
+                        getFragmentController().launchFragment(
+                                new ProfilesListFragment());
+                    }
+                });
+
+        if (!isDemoProfile && shouldShowAddProfile) {
+            profilesButton.setIcon(R.drawable.ic_add);
+        } else if (!isDemoProfile && shouldShowProfilesButton) {
+            profilesButton.setIcon(R.drawable.ic_people);
+        }
+
+        // Do not show delete button if the current profile can't remove the selected profile
+        deleteButton
+                .setText(R.string.delete_button)
+                .setIcon(R.drawable.ic_delete)
+                .setVisible(mRemoveProfileHandler.canRemoveProfile(getUserInfo())
+                        && !mProfileHelper.isCurrentProcessUser(getUserInfo()))
+                .setOnClickListener(v -> mRemoveProfileHandler.showConfirmRemoveProfileDialog());
+    }
+
+    @Override
+    public void setUserInfo(UserInfo userInfo) {
+        super.setUserInfo(userInfo);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        super.onStopInternal();
+        mAddProfileHandler.onStopInternal();
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        super.onDestroyInternal();
+        mAddProfileHandler.onDestroyInternal();
+    }
+
+    @Override
+    protected void updateState(ActionButtonsPreference preference) {
+        mAddProfileHandler.updateState(preference);
+    }
+
+    private void showConfirmMakeAdminDialog() {
+        ConfirmationDialogFragment dialogFragment =
+                ProfilesDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
+                        mMakeAdminConfirmListener, /* rejectListener= */ null, getUserInfo());
+
+        getFragmentController().showDialog(dialogFragment, MAKE_ADMIN_DIALOG_TAG);
+    }
+
+    private boolean areThereOtherProfiles() {
+        UserInfo currUserInfo = mProfileHelper.getCurrentProcessUserInfo();
+        return !mProfileHelper.getAllLivingProfiles(
+                userInfo -> !userInfo.isGuest() && userInfo.id != currUserInfo.id).isEmpty();
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsBaseFragment.java b/src/com/android/car/settings/profiles/ProfileDetailsBaseFragment.java
new file mode 100644
index 0000000..f69bfed
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsBaseFragment.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.ui.toolbar.ToolbarController;
+
+/** Common logic shared for controlling the action bar which contains a button to delete a
+ * profile.
+ */
+public abstract class ProfileDetailsBaseFragment extends SettingsFragment {
+    private UserInfo mUserInfo;
+
+    /** Adds user id to fragment arguments. */
+    protected static ProfileDetailsBaseFragment addUserIdToFragmentArguments(
+            ProfileDetailsBaseFragment fragment, int userId) {
+        Bundle bundle = new Bundle();
+        bundle.putInt(Intent.EXTRA_USER_ID, userId);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        int userId = getArguments().getInt(Intent.EXTRA_USER_ID);
+        mUserInfo = ProfileUtils.getUserInfo(getContext(), userId);
+    }
+
+    @Override
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
+
+        toolbar.setTitle(getTitleText());
+    }
+
+    /** Make UserInfo available to subclasses. */
+    protected UserInfo getUserInfo() {
+        return mUserInfo;
+    }
+
+    /** Refresh UserInfo in case it becomes invalid. */
+    protected void refreshUserInfo() {
+        mUserInfo = ProfileUtils.getUserInfo(getContext(), mUserInfo.id);
+    }
+
+    /** Defines the text that should be shown in the action bar. */
+    protected abstract String getTitleText();
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceController.java b/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceController.java
new file mode 100644
index 0000000..a4c716b
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceController.java
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Common setup of all preference controllers related to profile details.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class ProfileDetailsBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    private UserInfo mUserInfo;
+
+    private final BroadcastReceiver mProfileUpdateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUserInfo();
+            refreshUi();
+        }
+    };
+
+    public ProfileDetailsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the user info for which this preference controller operates. */
+    public void setUserInfo(UserInfo userInfo) {
+        mUserInfo = userInfo;
+    }
+
+    /** Gets the current user info. */
+    public UserInfo getUserInfo() {
+        return mUserInfo;
+    }
+
+    /** Refreshes the user info, since it might have changed. */
+    protected void refreshUserInfo() {
+        mUserInfo = ProfileUtils.getUserInfo(getContext(), mUserInfo.id);
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mUserInfo == null) {
+            throw new IllegalStateException("UserInfo should be non-null by this point");
+        }
+    }
+
+    /** Registers a listener which updates the displayed profile name when a profile is modified. */
+    @Override
+    protected void onCreateInternal() {
+        registerForProfileEvents();
+    }
+
+    /**
+     * Unregisters a listener which updates the displayed profile name when a profile is modified.
+     */
+    @Override
+    protected void onDestroyInternal() {
+        unregisterForProfileEvents();
+    }
+
+    private void registerForProfileEvents() {
+        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_INFO_CHANGED);
+        getContext().registerReceiver(mProfileUpdateReceiver, filter);
+    }
+
+    private void unregisterForProfileEvents() {
+        getContext().unregisterReceiver(mProfileUpdateReceiver);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceController.java b/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceController.java
new file mode 100644
index 0000000..a51f06f
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+
+/**
+ * Controller that displays the preference for letting the user delete the current profile
+ */
+public class ProfileDetailsDeletePreferenceController
+        extends ProfileDetailsBasePreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(ProfileDetailsDeletePreferenceController.class);
+
+    private ProfileHelper mProfileHelper;
+
+    private final RemoveProfileHandler mRemoveProfileHandler;
+
+    public ProfileDetailsDeletePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                ProfileHelper.getInstance(context),
+                new RemoveProfileHandler(context, ProfileHelper.getInstance(context),
+                        UserManager.get(context), fragmentController));
+    }
+
+    @VisibleForTesting
+    ProfileDetailsDeletePreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions, ProfileHelper profileHelper,
+            RemoveProfileHandler removeProfileHandler) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mProfileHelper = profileHelper;
+        mRemoveProfileHandler = removeProfileHandler;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        mRemoveProfileHandler.resetListeners();
+    }
+
+    @Override
+    public void setUserInfo(UserInfo userInfo) {
+        super.setUserInfo(userInfo);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setVisible(mRemoveProfileHandler.canRemoveProfile(getUserInfo())
+                && mProfileHelper.isCurrentProcessUser(getUserInfo()));
+    }
+
+    @Override
+    public boolean handlePreferenceClicked(Preference preference) {
+        mRemoveProfileHandler.showConfirmRemoveProfileDialog();
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsFragment.java b/src/com/android/car/settings/profiles/ProfileDetailsFragment.java
new file mode 100644
index 0000000..b991e20
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsFragment.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.accounts.AccountGroupPreferenceController;
+import com.android.car.settings.accounts.AccountListPreferenceController;
+import com.android.car.settings.accounts.AddAccountPreferenceController;
+import com.android.car.settings.search.CarBaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+/**
+ * Shows details for a user with the ability to remove user and edit current user.
+ */
+@SearchIndexable
+public class ProfileDetailsFragment extends ProfileDetailsBaseFragment {
+
+    /** Creates instance of ProfileDetailsFragment. */
+    public static ProfileDetailsFragment newInstance(int userId) {
+        return (ProfileDetailsFragment) addUserIdToFragmentArguments(
+                new ProfileDetailsFragment(), userId);
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.profile_details_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(ProfileDetailsHeaderPreferenceController.class,
+                R.string.pk_profile_details_header).setUserInfo(getUserInfo());
+        use(ProfileDetailsActionButtonsPreferenceController.class,
+                R.string.pk_profile_details_action_buttons).setUserInfo(getUserInfo());
+        use(AccountGroupPreferenceController.class,
+                R.string.pk_account_group).setUserInfo(getUserInfo());
+        use(ProfileDetailsDeletePreferenceController.class,
+                R.string.pk_profile_details_delete).setUserInfo(getUserInfo());
+
+        // Accounts information
+        Intent activityIntent = requireActivity().getIntent();
+        String[] authorities = activityIntent.getStringArrayExtra(Settings.EXTRA_AUTHORITIES);
+        String[] accountTypes = activityIntent.getStringArrayExtra(Settings.EXTRA_ACCOUNT_TYPES);
+        if (authorities != null || accountTypes != null) {
+            use(AccountListPreferenceController.class, R.string.pk_account_list)
+                    .setAuthorities(authorities);
+            use(AddAccountPreferenceController.class, R.string.pk_account_settings_add)
+                    .setAuthorities(authorities).setAccountTypes(accountTypes);
+        }
+    }
+
+    @Override
+    protected String getTitleText() {
+        return getString(R.string.profiles_and_accounts_settings_title);
+    }
+
+    /**
+     * Data provider for Settings Search.
+     */
+    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new CarBaseSearchIndexProvider(R.xml.profile_details_fragment,
+                    Settings.ACTION_USER_SETTINGS);
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceController.java b/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceController.java
new file mode 100644
index 0000000..314a825
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/** Header preference showing the profile's icon, name, and summary on the profile details page. */
+public class ProfileDetailsHeaderPreferenceController extends
+        ProfileDetailsBasePreferenceController<Preference> {
+
+    private ProfileHelper mProfileHelper;
+
+    public ProfileDetailsHeaderPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mProfileHelper = ProfileHelper.getInstance(getContext());
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        Drawable icon = new ProfileIconProvider().getRoundedProfileIcon(getUserInfo(),
+                getContext());
+        preference.setIcon(icon);
+        preference.setTitle(ProfileUtils.getProfileDisplayName(getContext(), getUserInfo()));
+        preference.setSummary(getSummary());
+    }
+
+    @VisibleForTesting
+    void setProfileHelper(ProfileHelper profileHelper) {
+        mProfileHelper = profileHelper;
+    }
+
+    private CharSequence getSummary() {
+        if (!getUserInfo().isInitialized()) {
+            return getContext().getString(R.string.user_summary_not_set_up);
+        }
+        if (getUserInfo().isAdmin()) {
+            return mProfileHelper.isCurrentProcessUser(getUserInfo())
+                    ? getContext().getString(R.string.signed_in_admin_user)
+                    : getContext().getString(R.string.user_admin);
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileDetailsPermissionsFragment.java b/src/com/android/car/settings/profiles/ProfileDetailsPermissionsFragment.java
new file mode 100644
index 0000000..a74941b
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileDetailsPermissionsFragment.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+
+/**
+ * Business logic for the permissions fragment. This fragment is used when an admin user views the
+ * user details of a non-admin user.
+ */
+public class ProfileDetailsPermissionsFragment extends ProfileDetailsBaseFragment {
+
+    /**
+     * Creates instance of ProfileDetailsPermissionsFragment.
+     */
+    public static ProfileDetailsPermissionsFragment newInstance(int userId) {
+        return (ProfileDetailsPermissionsFragment) addUserIdToFragmentArguments(
+                new ProfileDetailsPermissionsFragment(), userId);
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.profile_details_permissions_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(ProfileDetailsHeaderPreferenceController.class,
+                R.string.pk_profile_details_permissions_header).setUserInfo(getUserInfo());
+        use(ProfileDetailsActionButtonsPreferenceController.class,
+                R.string.pk_profile_details_permissions_action_buttons).setUserInfo(getUserInfo());
+        use(PermissionsPreferenceController.class, R.string.pk_profile_permissions).setUserInfo(
+                getUserInfo());
+    }
+
+    @Override
+    protected String getTitleText() {
+        return getContext().getString(R.string.user_details_admin_title,
+                ProfileUtils.getProfileDisplayName(getContext(), getUserInfo()));
+    }
+}
+
diff --git a/src/com/android/car/settings/profiles/ProfileGridRecyclerView.java b/src/com/android/car/settings/profiles/ProfileGridRecyclerView.java
new file mode 100644
index 0000000..c484e16
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileGridRecyclerView.java
@@ -0,0 +1,585 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static android.os.UserManager.DISALLOW_ADD_USER;
+import static android.os.UserManager.SWITCHABILITY_STATUS_OK;
+
+import android.annotation.IntDef;
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.car.Car;
+import android.car.user.CarUserManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.car.admin.ui.UserAvatarView;
+import com.android.car.settings.R;
+import com.android.car.settings.common.BaseFragment;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.internal.util.UserIcons;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Displays a GridLayout with icons for the profiles in the system to allow switching between
+ * profiles. One of the uses of this is for the lock screen in auto.
+ */
+public class ProfileGridRecyclerView extends RecyclerView {
+
+    private static final String MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG =
+            "com.android.car.settings.profiles.MaxProfilesLimitReachedDialog";
+    private static final String CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG =
+            "com.android.car.settings.profiles.ConfirmCreateNewProfileDialog";
+
+    private ProfileAdapter mAdapter;
+    private UserManager mUserManager;
+    private Context mContext;
+    private BaseFragment mBaseFragment;
+    private AddNewProfileTask mAddNewProfileTask;
+    private boolean mEnableAddProfileButton;
+    private ProfileIconProvider mProfileIconProvider;
+    private Car mCar;
+    private CarUserManager mCarUserManager;
+
+    private final BroadcastReceiver mProfileUpdateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            onProfilesUpdate();
+        }
+    };
+
+    public ProfileGridRecyclerView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        mContext = context;
+        mUserManager = UserManager.get(mContext);
+        mProfileIconProvider = new ProfileIconProvider();
+        mEnableAddProfileButton = true;
+        mCar = Car.createCar(mContext);
+        mCarUserManager = (CarUserManager) mCar.getCarManager(Car.CAR_USER_SERVICE);
+
+        addItemDecoration(new ItemSpacingDecoration(context.getResources().getDimensionPixelSize(
+                R.dimen.profile_switcher_vertical_spacing_between_profiles)));
+    }
+
+    /**
+     * Register listener for any update to the profiles
+     */
+    @Override
+    public void onFinishInflate() {
+        super.onFinishInflate();
+        registerForProfileEvents();
+    }
+
+    /**
+     * Unregisters listener checking for any change to the profiles
+     */
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        unregisterForProfileEvents();
+        if (mAddNewProfileTask != null) {
+            mAddNewProfileTask.cancel(/* mayInterruptIfRunning= */ false);
+        }
+        if (mCar != null) {
+            mCar.disconnect();
+        }
+    }
+
+    /**
+     * Initializes the adapter that populates the grid layout
+     */
+    public void buildAdapter() {
+        List<ProfileRecord> profileRecords = createProfileRecords(getProfilesForProfileGrid());
+        mAdapter = new ProfileAdapter(mContext, profileRecords);
+        super.setAdapter(mAdapter);
+    }
+
+    private List<ProfileRecord> createProfileRecords(List<UserInfo> userInfoList) {
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserHandle fgUserHandle = UserHandle.of(fgUserId);
+        List<ProfileRecord> profileRecords = new ArrayList<>();
+
+        // If the foreground profile CANNOT switch to other profiles, only display the foreground
+        // profile.
+        if (mUserManager.getUserSwitchability(fgUserHandle) != SWITCHABILITY_STATUS_OK) {
+            profileRecords.add(createForegroundProfileRecord());
+            return profileRecords;
+        }
+
+        // If the foreground profile CAN switch to other profiles, iterate through all profiles.
+        for (UserInfo userInfo : userInfoList) {
+            boolean isForeground = fgUserId == userInfo.id;
+
+            if (!isForeground && userInfo.isGuest()) {
+                // Don't display temporary running background guests in the switcher.
+                continue;
+            }
+
+            ProfileRecord record = new ProfileRecord(userInfo, isForeground
+                    ? ProfileRecord.FOREGROUND_PROFILE : ProfileRecord.BACKGROUND_PROFILE);
+            profileRecords.add(record);
+        }
+
+        // Add start guest profile record if the system is not logged in as guest already.
+        if (!getCurrentForegroundProfileInfo().isGuest()) {
+            profileRecords.add(createStartGuestProfileRecord());
+        }
+
+        // Add "add profile" record if the foreground profile can add profiles
+        if (!mUserManager.hasUserRestriction(DISALLOW_ADD_USER, fgUserHandle)) {
+            profileRecords.add(createAddProfileRecord());
+        }
+
+        return profileRecords;
+    }
+
+    private ProfileRecord createForegroundProfileRecord() {
+        return new ProfileRecord(getCurrentForegroundProfileInfo(),
+                ProfileRecord.FOREGROUND_PROFILE);
+    }
+
+    private UserInfo getCurrentForegroundProfileInfo() {
+        return mUserManager.getUserInfo(ActivityManager.getCurrentUser());
+    }
+
+    /**
+     * Show the "Add Profile" Button
+     */
+    public void enableAddProfile() {
+        mEnableAddProfileButton = true;
+        onProfilesUpdate();
+    }
+
+    /**
+     * Hide the "Add Profile" Button
+     */
+    public void disableAddProfile() {
+        mEnableAddProfileButton = false;
+        onProfilesUpdate();
+    }
+
+    /**
+     * Create guest profile record
+     */
+    private ProfileRecord createStartGuestProfileRecord() {
+        return new ProfileRecord(/* profileInfo= */ null, ProfileRecord.START_GUEST);
+    }
+
+    /**
+     * Create add profile record
+     */
+    private ProfileRecord createAddProfileRecord() {
+        return new ProfileRecord(/* profileInfo= */ null, ProfileRecord.ADD_PROFILE);
+    }
+
+    public void setFragment(BaseFragment fragment) {
+        mBaseFragment = fragment;
+    }
+
+    private void onProfilesUpdate() {
+        // If you can show the add profile button, there is no restriction
+        mAdapter.setAddProfileRestricted(!mEnableAddProfileButton);
+        mAdapter.clearProfiles();
+        mAdapter.updateProfiles(createProfileRecords(getProfilesForProfileGrid()));
+        mAdapter.notifyDataSetChanged();
+    }
+
+    private List<UserInfo> getProfilesForProfileGrid() {
+        List<UserInfo> users = UserManager.get(mContext).getAliveUsers();
+        return users.stream()
+                .filter(UserInfo::supportsSwitchToByUser)
+                .collect(Collectors.toList());
+    }
+
+    private void registerForProfileEvents() {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(Intent.ACTION_USER_REMOVED);
+        filter.addAction(Intent.ACTION_USER_ADDED);
+        filter.addAction(Intent.ACTION_USER_INFO_CHANGED);
+        filter.addAction(Intent.ACTION_USER_SWITCHED);
+        filter.addAction(Intent.ACTION_USER_STOPPED);
+        filter.addAction(Intent.ACTION_USER_UNLOCKED);
+        mContext.registerReceiverAsUser(
+                mProfileUpdateReceiver,
+                UserHandle.ALL,
+                filter,
+                /* broadcastPermission= */ null,
+                /* scheduler= */ null);
+    }
+
+    private void unregisterForProfileEvents() {
+        mContext.unregisterReceiver(mProfileUpdateReceiver);
+    }
+
+    /**
+     * Adapter to populate the grid layout with the available user profiles
+     */
+    public final class ProfileAdapter extends
+            RecyclerView.Adapter<ProfileAdapter.ProfileAdapterViewHolder>
+            implements AddNewProfileTask.AddNewProfileListener {
+
+        private final Resources mRes;
+        private final String mGuestName;
+
+        private Context mContext;
+        private List<ProfileRecord> mProfiles;
+        private String mNewProfileName;
+        // View that holds the add profile button.  Used to enable/disable the view
+        private View mAddProfileView;
+        private float mOpacityDisabled;
+        private float mOpacityEnabled;
+        private boolean mIsAddProfileRestricted;
+
+        private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+            mAddNewProfileTask = new AddNewProfileTask(mContext,
+                    mCarUserManager, /* addNewProfileListener= */this);
+            mAddNewProfileTask.execute(mNewProfileName);
+        };
+
+        /**
+         * Enable the "add profile" button if the user cancels adding a profile
+         */
+        private final ConfirmationDialogFragment.RejectListener mRejectListener =
+                arguments -> enableAddView();
+
+
+        public ProfileAdapter(Context context, List<ProfileRecord> profiles) {
+            mRes = context.getResources();
+            mContext = context;
+            updateProfiles(profiles);
+            mGuestName = mRes.getString(R.string.user_guest);
+            mNewProfileName = mRes.getString(R.string.user_new_user_name);
+            mOpacityDisabled = mRes.getFloat(R.dimen.opacity_disabled);
+            mOpacityEnabled = mRes.getFloat(R.dimen.opacity_enabled);
+            resetDialogListeners();
+        }
+
+        /**
+         * Removes all the profiles from the Profile Grid.
+         */
+        public void clearProfiles() {
+            mProfiles.clear();
+        }
+
+        /**
+         * Refreshes the Profile Grid with the new List of profiles.
+         */
+        public void updateProfiles(List<ProfileRecord> profiles) {
+            mProfiles = profiles;
+        }
+
+        @Override
+        public ProfileAdapterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            View view = LayoutInflater.from(mContext)
+                    .inflate(R.layout.profile_switcher_pod, parent, false);
+            view.setAlpha(mOpacityEnabled);
+            view.bringToFront();
+            return new ProfileAdapterViewHolder(view);
+        }
+
+        @Override
+        public void onBindViewHolder(ProfileAdapterViewHolder holder, int position) {
+            ProfileRecord profileRecord = mProfiles.get(position);
+            Drawable circleIcon = getCircularProfileRecordIcon(profileRecord);
+            if (profileRecord.mInfo != null) {
+                // Profile might have badges (like managed profile)
+                holder.mProfileAvatarImageView.setDrawableWithBadge(circleIcon,
+                        profileRecord.mInfo.id);
+            } else {
+                // Guest or "Add Profile" don't have badges
+                holder.mProfileAvatarImageView.setDrawable(circleIcon);
+            }
+            holder.mProfileNameTextView.setText(getProfileRecordName(profileRecord));
+
+            // Defaults to 100% opacity and no circle around the icon.
+            holder.mView.setAlpha(mOpacityEnabled);
+            holder.mFrame.setBackgroundResource(0);
+
+            // Foreground profile record.
+            switch (profileRecord.mType) {
+                case ProfileRecord.FOREGROUND_PROFILE:
+                    // Add a circle around the icon.
+                    holder.mFrame.setBackgroundResource(R.drawable.profile_avatar_bg_circle);
+                    // Go back to quick settings if profile selected is already the foreground
+                    // profile.
+                    holder.mView.setOnClickListener(v
+                            -> mBaseFragment.getActivity().onBackPressed());
+                    break;
+
+                case ProfileRecord.START_GUEST:
+                    holder.mView.setOnClickListener(v -> handleGuestSessionClicked());
+                    break;
+
+                case ProfileRecord.ADD_PROFILE:
+                    if (mIsAddProfileRestricted) {
+                        // If there are restrictions, show a 50% opaque "add profile" view
+                        holder.mView.setAlpha(mOpacityDisabled);
+                        holder.mView.setOnClickListener(
+                                v -> mBaseFragment.getFragmentHost().showBlockingMessage());
+                    } else {
+                        holder.mView.setOnClickListener(v -> handleAddProfileClicked(v));
+                    }
+                    break;
+
+                default:
+                    // Profile record;
+                    holder.mView.setOnClickListener(v -> handleProfileSwitch(profileRecord.mInfo));
+            }
+        }
+
+        /**
+         * Specify if adding a profile should be restricted.
+         *
+         * @param isAddProfileRestricted should adding a profile be restricted
+         */
+        public void setAddProfileRestricted(boolean isAddProfileRestricted) {
+            mIsAddProfileRestricted = isAddProfileRestricted;
+        }
+
+        /** Resets listeners for shown dialog fragments. */
+        private void resetDialogListeners() {
+            if (mBaseFragment != null) {
+                ConfirmationDialogFragment dialog =
+                        (ConfirmationDialogFragment) mBaseFragment
+                                .getFragmentManager()
+                                .findFragmentByTag(CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG);
+                ConfirmationDialogFragment.resetListeners(
+                        dialog,
+                        mConfirmListener,
+                        mRejectListener,
+                        /* neutralListener= */ null);
+            }
+        }
+
+        private void handleProfileSwitch(UserInfo userInfo) {
+            mCarUserManager.switchUser(userInfo.id).whenCompleteAsync((r, e) -> {
+                // Successful switch, close Settings app.
+                closeSettingsTask();
+            }, Runnable::run);
+        }
+
+        private void handleGuestSessionClicked() {
+            UserInfo guest =
+                    ProfileHelper.getInstance(mContext).createNewOrFindExistingGuest(mContext);
+            if (guest != null) {
+                mCarUserManager.switchUser(guest.id).whenCompleteAsync((r, e) -> {
+                    // Successful start, will switch to guest now. Close Settings app.
+                    closeSettingsTask();
+                }, Runnable::run);
+            }
+        }
+
+        private void handleAddProfileClicked(View addProfileView) {
+            if (!mUserManager.canAddMoreUsers()) {
+                showMaxProfilesLimitReachedDialog();
+            } else {
+                mAddProfileView = addProfileView;
+                // Disable button so it cannot be clicked multiple times
+                mAddProfileView.setEnabled(false);
+                showConfirmCreateNewProfileDialog();
+            }
+        }
+
+        private void showMaxProfilesLimitReachedDialog() {
+            ConfirmationDialogFragment dialogFragment =
+                    ProfilesDialogProvider.getMaxProfilesLimitReachedDialogFragment(getContext(),
+                            ProfileHelper.getInstance(mContext).getMaxSupportedRealProfiles());
+            dialogFragment.show(
+                    mBaseFragment.getFragmentManager(), MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG);
+        }
+
+        private void showConfirmCreateNewProfileDialog() {
+            ConfirmationDialogFragment dialogFragment =
+                    ProfilesDialogProvider.getConfirmCreateNewProfileDialogFragment(getContext(),
+                            mConfirmListener, mRejectListener);
+            dialogFragment.show(
+                    mBaseFragment.getFragmentManager(), CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG);
+        }
+
+        private Drawable getCircularProfileRecordIcon(ProfileRecord profileRecord) {
+            Resources resources = mContext.getResources();
+            Drawable circleIcon;
+            switch (profileRecord.mType) {
+                case ProfileRecord.START_GUEST:
+                    circleIcon = mProfileIconProvider.getRoundedGuestDefaultIcon(resources);
+                    break;
+                case ProfileRecord.ADD_PROFILE:
+                    circleIcon = getCircularAddProfileIcon();
+                    break;
+                default:
+                    circleIcon = mProfileIconProvider.getRoundedProfileIcon(profileRecord.mInfo,
+                            mContext);
+            }
+            return circleIcon;
+        }
+
+        private RoundedBitmapDrawable getCircularAddProfileIcon() {
+            RoundedBitmapDrawable circleIcon =
+                    RoundedBitmapDrawableFactory.create(mRes, UserIcons.convertToBitmap(
+                            mContext.getDrawable(R.drawable.profile_add_circle)));
+            circleIcon.setCircular(true);
+            return circleIcon;
+        }
+
+        private String getProfileRecordName(ProfileRecord profileRecord) {
+            String recordName;
+            switch (profileRecord.mType) {
+                case ProfileRecord.START_GUEST:
+                    recordName = mContext.getString(R.string.start_guest_session);
+                    break;
+                case ProfileRecord.ADD_PROFILE:
+                    recordName = mContext.getString(R.string.user_add_user_menu);
+                    break;
+                default:
+                    recordName = profileRecord.mInfo.name;
+            }
+            return recordName;
+        }
+
+        @Override
+        public void onProfileAddedSuccess() {
+            enableAddView();
+            // New profile added. Will switch to new profile, therefore close the app.
+            closeSettingsTask();
+        }
+
+        @Override
+        public void onProfileAddedFailure() {
+            enableAddView();
+            // Display failure dialog.
+            if (mBaseFragment != null) {
+                ErrorDialog.show(mBaseFragment, R.string.add_user_error_title);
+            }
+        }
+
+        /**
+         * When we switch profiles, we also want to finish the QuickSettingActivity, so we send back
+         * a result telling the QuickSettingActivity to finish.
+         */
+        private void closeSettingsTask() {
+            mBaseFragment.getActivity().setResult(Activity.FINISH_TASK_WITH_ACTIVITY, new Intent());
+            mBaseFragment.getActivity().finish();
+        }
+
+        @Override
+        public int getItemCount() {
+            return mProfiles.size();
+        }
+
+        /**
+         * Layout for each individual pod in the Grid RecyclerView
+         */
+        public class ProfileAdapterViewHolder extends RecyclerView.ViewHolder {
+
+            public UserAvatarView mProfileAvatarImageView;
+            public TextView mProfileNameTextView;
+            public View mView;
+            public FrameLayout mFrame;
+
+            public ProfileAdapterViewHolder(View view) {
+                super(view);
+                mView = view;
+                mProfileAvatarImageView = view.findViewById(R.id.profile_avatar);
+                mProfileNameTextView = view.findViewById(R.id.profile_name);
+                mFrame = view.findViewById(R.id.current_profile_frame);
+            }
+        }
+
+        private void enableAddView() {
+            if (mAddProfileView != null) {
+                mAddProfileView.setEnabled(true);
+            }
+        }
+    }
+
+    /**
+     * Object wrapper class for the userInfo.  Use it to distinguish if a profile is a
+     * guest profile, add user profile, or the foreground profile.
+     */
+    public static final class ProfileRecord {
+
+        public final UserInfo mInfo;
+        public final @ProfileRecordType int mType;
+
+        public static final int START_GUEST = 0;
+        public static final int ADD_PROFILE = 1;
+        public static final int FOREGROUND_PROFILE = 2;
+        public static final int BACKGROUND_PROFILE = 3;
+
+        @IntDef({START_GUEST, ADD_PROFILE, FOREGROUND_PROFILE, BACKGROUND_PROFILE})
+        @Retention(RetentionPolicy.SOURCE)
+        public @interface ProfileRecordType {}
+
+        public ProfileRecord(@Nullable UserInfo userInfo, @ProfileRecordType int recordType) {
+            mInfo = userInfo;
+            mType = recordType;
+        }
+    }
+
+    /**
+     * A {@link RecyclerView.ItemDecoration} that will add spacing between each item in the
+     * RecyclerView that it is added to.
+     */
+    private static class ItemSpacingDecoration extends RecyclerView.ItemDecoration {
+        private int mItemSpacing;
+
+        private ItemSpacingDecoration(int itemSpacing) {
+            mItemSpacing = itemSpacing;
+        }
+
+        @Override
+        public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
+                RecyclerView.State state) {
+            super.getItemOffsets(outRect, view, parent, state);
+            int position = parent.getChildAdapterPosition(view);
+
+            // Skip offset for last item except for GridLayoutManager.
+            if (position == state.getItemCount() - 1
+                    && !(parent.getLayoutManager() instanceof GridLayoutManager)) {
+                return;
+            }
+
+            outRect.bottom = mItemSpacing;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileHelper.java b/src/com/android/car/settings/profiles/ProfileHelper.java
new file mode 100644
index 0000000..6c590f1
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileHelper.java
@@ -0,0 +1,460 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.settings.profiles;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.StringRes;
+import android.annotation.UserIdInt;
+import android.app.ActivityManager;
+import android.car.Car;
+import android.car.user.CarUserManager;
+import android.car.user.OperationResult;
+import android.car.user.UserCreationResult;
+import android.car.user.UserRemovalResult;
+import android.car.user.UserSwitchResult;
+import android.car.util.concurrent.AsyncFuture;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.sysprop.CarProperties;
+import android.util.Log;
+
+import com.android.car.settings.R;
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Helper class for providing basic profile logic that applies across the Settings app for Cars.
+ */
+public class ProfileHelper {
+    private static final String TAG = "ProfileHelper";
+    private static final int TIMEOUT_MS = CarProperties.user_hal_timeout().orElse(5_000) + 500;
+    private static ProfileHelper sInstance;
+
+    private final UserManager mUserManager;
+    private final CarUserManager mCarUserManager;
+    private final Resources mResources;
+    private final String mDefaultAdminName;
+    private final String mDefaultGuestName;
+
+    /**
+     * Result code for when a profile was successfully marked for removal and the
+     * device switched to a different profile.
+     */
+    public static final int REMOVE_PROFILE_RESULT_SUCCESS = 0;
+
+    /**
+     * Result code for when there was a failure removing a profile.
+     */
+    public static final int REMOVE_PROFILE_RESULT_FAILED = 1;
+
+    /**
+     * Result code when the profile was successfully marked for removal, but the switch to a new
+     * profile failed. In this case the profile marked for removal is set as ephemeral and will be
+     * removed on the next profile switch or reboot.
+     */
+    public static final int REMOVE_PROFILE_RESULT_SWITCH_FAILED = 2;
+
+    /**
+     * Possible return values for {@link #removeProfile(int)}, which attempts to remove a profile
+     * and switch to a new one. Note that this IntDef is distinct from {@link UserRemovalResult},
+     * which is only a result code for the profile removal operation.
+     */
+    @IntDef(prefix = {"REMOVE_PROFILE_RESULT"}, value = {
+            REMOVE_PROFILE_RESULT_SUCCESS,
+            REMOVE_PROFILE_RESULT_FAILED,
+            REMOVE_PROFILE_RESULT_SWITCH_FAILED,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface RemoveProfileResult {
+    }
+
+    /**
+     * Returns an instance of ProfileHelper.
+     */
+    public static ProfileHelper getInstance(Context context) {
+        if (sInstance == null) {
+            Context appContext = context.getApplicationContext();
+            Resources resources = appContext.getResources();
+            sInstance = new ProfileHelper(UserManager.get(appContext), resources,
+                    resources.getString(com.android.internal.R.string.owner_name),
+                    resources.getString(R.string.user_guest),
+                    getCarUserManager(appContext));
+        }
+        return sInstance;
+    }
+
+    @VisibleForTesting
+    ProfileHelper(UserManager userManager, Resources resources, String defaultAdminName,
+            String defaultGuestName, CarUserManager carUserManager) {
+        mUserManager = userManager;
+        mResources = resources;
+        mDefaultAdminName = defaultAdminName;
+        mDefaultGuestName = defaultGuestName;
+        mCarUserManager = carUserManager;
+    }
+
+    private static CarUserManager getCarUserManager(@NonNull Context context) {
+        Car car = Car.createCar(context);
+        CarUserManager carUserManager = (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
+        return carUserManager;
+    }
+
+    /**
+     * Tries to remove the profile that's passed in. System profile cannot be removed.
+     * If the profile to be removed is profile currently running the process, it switches to the
+     * guest profile first, and then removes the profile.
+     * If the profile being removed is the last admin profile, this will create a new admin profile.
+     *
+     * @param context  An application context
+     * @param userInfo Profile to be removed
+     * @return {@link RemoveProfileResult} indicating the result status for profile removal and
+     * switching
+     */
+    @RemoveProfileResult
+    public int removeProfile(Context context, UserInfo userInfo) {
+        if (userInfo.id == UserHandle.USER_SYSTEM) {
+            Log.w(TAG, "User " + userInfo.id + " is system user, could not be removed.");
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+
+        // Try to create a new admin before deleting the current one.
+        if (userInfo.isAdmin() && getAllAdminProfiles().size() <= 1) {
+            return replaceLastAdmin(userInfo);
+        }
+
+        if (!mUserManager.isAdminUser() && !isCurrentProcessUser(userInfo)) {
+            // If the caller is non-admin, they can only delete themselves.
+            Log.e(TAG, "Non-admins cannot remove other profiles.");
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+
+        if (userInfo.id == ActivityManager.getCurrentUser()) {
+            return removeThisProfileAndSwitchToGuest(context, userInfo);
+        }
+
+        return removeProfile(userInfo.id);
+    }
+
+    /**
+     * If the ID being removed is the current foreground profile, we need to handle switching to
+     * a new or existing guest.
+     */
+    @RemoveProfileResult
+    private int removeThisProfileAndSwitchToGuest(Context context, UserInfo userInfo) {
+        if (mUserManager.getUserSwitchability() != UserManager.SWITCHABILITY_STATUS_OK) {
+            // If we can't switch to a different profile, we can't exit this one and therefore
+            // can't delete it.
+            Log.w(TAG, "Profile switching is not allowed. Current profile cannot be deleted");
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+        UserInfo guestUser = createNewOrFindExistingGuest(context);
+        if (guestUser == null) {
+            Log.e(TAG, "Could not create a Guest profile.");
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+
+        // since the profile is still current, this will set it as ephemeral
+        int result = removeProfile(userInfo.id);
+        if (result != REMOVE_PROFILE_RESULT_SUCCESS) {
+            return result;
+        }
+
+        if (!switchProfile(guestUser.id)) {
+            return REMOVE_PROFILE_RESULT_SWITCH_FAILED;
+        }
+
+        return REMOVE_PROFILE_RESULT_SUCCESS;
+    }
+
+    @RemoveProfileResult
+    private int removeProfile(@UserIdInt int userId) {
+        UserRemovalResult result = mCarUserManager.removeUser(userId);
+        if (Log.isLoggable(TAG, Log.INFO)) {
+            Log.i(TAG, "Remove profile result: " + result);
+        }
+        if (result.isSuccess()) {
+            return REMOVE_PROFILE_RESULT_SUCCESS;
+        } else {
+            Log.w(TAG, "Failed to remove profile " + userId + ": " + result);
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+    }
+
+    private boolean switchProfile(@UserIdInt int userId) {
+        UserSwitchResult result = getResult("switch", mCarUserManager.switchUser(userId));
+        return result != null && result.isSuccess();
+    }
+
+    /**
+     * Returns the {@link StringRes} that corresponds to a {@link RemoveProfileResult} result code.
+     */
+    @StringRes
+    public int getErrorMessageForProfileResult(@RemoveProfileResult int result) {
+        if (result == REMOVE_PROFILE_RESULT_SWITCH_FAILED) {
+            return R.string.delete_user_error_set_ephemeral_title;
+        }
+
+        return R.string.delete_user_error_title;
+    }
+
+    /**
+     * Gets the result of an async operation.
+     *
+     * @param operation name of the operation, to be logged in case of error
+     * @param future    future holding the operation result.
+     * @return result of the operation or {@code null} if it failed or timed out.
+     */
+    @Nullable
+    private static <T extends OperationResult> T getResult(String operation,
+            AsyncFuture<T> future) {
+        T result = null;
+        try {
+            result = future.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            Log.w(TAG, "Interrupted waiting to " + operation + " profile", e);
+            return null;
+        } catch (ExecutionException | TimeoutException e) {
+            Log.w(TAG, "Exception waiting to " + operation + " profile", e);
+            return null;
+        }
+        if (result == null) {
+            Log.w(TAG, "Time out (" + TIMEOUT_MS + " ms) trying to " + operation + " profile");
+            return null;
+        }
+        if (!result.isSuccess()) {
+            Log.w(TAG, "Failed to " + operation + " profile: " + result);
+            return null;
+        }
+        return result;
+    }
+
+    @RemoveProfileResult
+    private int replaceLastAdmin(UserInfo userInfo) {
+        if (Log.isLoggable(TAG, Log.INFO)) {
+            Log.i(TAG, "Profile " + userInfo.id
+                    + " is the last admin profile on device. Creating a new admin.");
+        }
+
+        UserInfo newAdmin = createNewAdminProfile(mDefaultAdminName);
+        if (newAdmin == null) {
+            Log.w(TAG, "Couldn't create another admin, cannot delete current profile.");
+            return REMOVE_PROFILE_RESULT_FAILED;
+        }
+
+        int removeUserResult = removeProfile(userInfo.id);
+        if (removeUserResult != REMOVE_PROFILE_RESULT_SUCCESS) {
+            return removeUserResult;
+        }
+
+        if (switchProfile(newAdmin.id)) {
+            return REMOVE_PROFILE_RESULT_SUCCESS;
+        } else {
+            return REMOVE_PROFILE_RESULT_SWITCH_FAILED;
+        }
+    }
+
+    /**
+     * Creates a new profile on the system, the created profile would be granted admin role.
+     * Only admins can create other admins.
+     *
+     * @param userName Name to give to the newly created profile.
+     * @return Newly created admin profile, null if failed to create a profile.
+     */
+    @Nullable
+    private UserInfo createNewAdminProfile(String userName) {
+        if (!(mUserManager.isAdminUser() || mUserManager.isSystemUser())) {
+            // Only Admins or System profile can create other privileged profiles.
+            Log.e(TAG, "Only admin profiles and system profile can create other admins.");
+            return null;
+        }
+        UserCreationResult result = getResult("create admin",
+                mCarUserManager.createUser(userName, UserInfo.FLAG_ADMIN));
+        if (result == null) return null;
+        UserInfo user = result.getUser();
+
+        new ProfileIconProvider().assignDefaultIcon(mUserManager, mResources, user);
+        return user;
+    }
+
+    /**
+     * Creates and returns a new guest profile or returns the existing one.
+     * Returns null if it fails to create a new guest.
+     *
+     * @param context an application context
+     * @return The UserInfo representing the Guest, or null if it failed
+     */
+    @Nullable
+    public UserInfo createNewOrFindExistingGuest(Context context) {
+        // createGuest() will return null if a guest already exists.
+        UserCreationResult result = getResult("create guest",
+                mCarUserManager.createGuest(mDefaultGuestName));
+        UserInfo newGuest = result == null ? null : result.getUser();
+
+        if (newGuest != null) {
+            new ProfileIconProvider().assignDefaultIcon(mUserManager, mResources, newGuest);
+            return newGuest;
+        }
+
+        return mUserManager.findCurrentGuestUser();
+    }
+
+    /**
+     * Checks if the current process profile can modify accounts. Demo and Guest profiles cannot
+     * modify accounts even if the DISALLOW_MODIFY_ACCOUNTS restriction is not applied.
+     */
+    public boolean canCurrentProcessModifyAccounts() {
+        return !mUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)
+                && !mUserManager.isDemoUser()
+                && !mUserManager.isGuestUser();
+    }
+
+    /**
+     * Returns a list of {@code UserInfo} representing all profiles that can be brought to the
+     * foreground.
+     */
+    public List<UserInfo> getAllProfiles() {
+        return getAllLivingProfiles(/* filter= */ null);
+    }
+
+    /**
+     * Returns a list of {@code UserInfo} representing all profiles that can be swapped with the
+     * current profile into the foreground.
+     */
+    public List<UserInfo> getAllSwitchableProfiles() {
+        final int foregroundUserId = ActivityManager.getCurrentUser();
+        return getAllLivingProfiles(userInfo -> userInfo.id != foregroundUserId);
+    }
+
+    /**
+     * Returns a list of {@code UserInfo} representing all profiles that are non-ephemeral and are
+     * valid to have in the foreground.
+     */
+    public List<UserInfo> getAllPersistentProfiles() {
+        return getAllLivingProfiles(userInfo -> !userInfo.isEphemeral());
+    }
+
+    /**
+     * Returns a list of {@code UserInfo} representing all admin profiles and are
+     * valid to have in the foreground.
+     */
+    public List<UserInfo> getAllAdminProfiles() {
+        return getAllLivingProfiles(UserInfo::isAdmin);
+    }
+
+    /**
+     * Gets all profiles that are not dying.  This method will handle
+     * {@link UserManager#isHeadlessSystemUserMode} and ensure the system profile is not
+     * part of the return list when the flag is on.
+     * @param filter Optional filter to apply to the list of profiles.  Pass null to skip.
+     * @return An optionally filtered list containing all living profiles
+     */
+    public List<UserInfo> getAllLivingProfiles(@Nullable Predicate<? super UserInfo> filter) {
+        Stream<UserInfo> filteredListStream = mUserManager.getAliveUsers().stream();
+
+        if (filter != null) {
+            filteredListStream = filteredListStream.filter(filter);
+        }
+
+        if (UserManager.isHeadlessSystemUserMode()) {
+            filteredListStream =
+                    filteredListStream.filter(userInfo -> userInfo.id != UserHandle.USER_SYSTEM);
+        }
+        return filteredListStream.collect(Collectors.toList());
+    }
+
+    /**
+     * Checks whether passed in user is the user that's running the current process.
+     *
+     * @param userInfo User to check.
+     * @return {@code true} if user running the process, {@code false} otherwise.
+     */
+    public boolean isCurrentProcessUser(UserInfo userInfo) {
+        return UserHandle.myUserId() == userInfo.id;
+    }
+
+    /**
+     * Gets UserInfo for the user running the caller process.
+     *
+     * <p>Differentiation between foreground user and current process user is relevant for
+     * multi-user deployments.
+     *
+     * <p>Some multi-user aware components (like SystemUI) needs to run a singleton component
+     * in system user. Current process user is always the same for that component, even when
+     * the foreground user changes.
+     *
+     * @return {@link UserInfo} for the user running the current process.
+     */
+    public UserInfo getCurrentProcessUserInfo() {
+        return mUserManager.getUserInfo(UserHandle.myUserId());
+    }
+
+    /**
+     * Maximum number of profiles allowed on the device. This includes real profiles, managed
+     * profiles and restricted profiles, but excludes guests.
+     *
+     * <p> It excludes system profile in headless system profile model.
+     *
+     * @return Maximum number of profiles that can be present on the device.
+     */
+    private int getMaxSupportedProfiles() {
+        int maxSupportedUsers = UserManager.getMaxSupportedUsers();
+        if (UserManager.isHeadlessSystemUserMode()) {
+            maxSupportedUsers -= 1;
+        }
+        return maxSupportedUsers;
+    }
+
+    private int getManagedProfilesCount() {
+        List<UserInfo> users = getAllProfiles();
+
+        // Count all users that are managed profiles of another user.
+        int managedProfilesCount = 0;
+        for (UserInfo user : users) {
+            if (user.isManagedProfile()) {
+                managedProfilesCount++;
+            }
+        }
+        return managedProfilesCount;
+    }
+
+    /**
+     * Get the maximum number of real (non-guest, non-managed profile) profiles that can be created
+     * on the device. This is a dynamic value and it decreases with the increase of the number of
+     * managed profiles on the device.
+     *
+     * <p> It excludes system profile in headless system profile model.
+     *
+     * @return Maximum number of real profiles that can be created.
+     */
+    public int getMaxSupportedRealProfiles() {
+        return getMaxSupportedProfiles() - getManagedProfilesCount();
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileIconProvider.java b/src/com/android/car/settings/profiles/ProfileIconProvider.java
new file mode 100644
index 0000000..82a8f48
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileIconProvider.java
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.annotation.UserIdInt;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.car.admin.ui.UserAvatarView;
+import com.android.internal.util.UserIcons;
+
+/**
+ * Simple class for providing icons for profiles in Settings.
+ */
+public class ProfileIconProvider {
+    // TODO (b/179802719) define this constant as MenuItem's attribute in 'Chassis' library
+    // Width of managed profile's badge in ratio to profile icon's width
+    private static final float BADGE_WIDTH_TO_ICON_RATIO = 0.15f;
+
+    /**
+     * Gets a scaled rounded icon for the given profile to use in settings.  If a profile does
+     * not have an icon saved, this method will default to a generic icon and update UserManager to
+     * use that icon.
+     *
+     * @param userInfo User for which the icon is requested.
+     * @param context Context to use for resources
+     * @return {@link Drawable} representing the icon for the user.
+     */
+    public Drawable getRoundedProfileIcon(UserInfo userInfo, Context context) {
+        UserManager userManager = UserManager.get(context);
+        Resources res = context.getResources();
+        Bitmap icon = userManager.getUserIcon(userInfo.id);
+
+        if (icon == null) {
+            icon = assignDefaultIcon(userManager, res, userInfo);
+        }
+
+        return new BitmapDrawable(res, icon);
+    }
+
+    /** Returns a scaled, rounded, default icon for the Guest profile */
+    public Drawable getRoundedGuestDefaultIcon(Resources resources) {
+        Bitmap icon = getGuestProfileDefaultIcon(resources);
+        return new BitmapDrawable(resources, icon);
+    }
+
+    /**
+     * Assigns a default icon to a profile according to the user's id. Handles Guest icon and
+     * non-guest profile icons.
+     *
+     * @param userManager {@link UserManager} to set user icon
+     * @param resources {@link Resources} to grab icons from
+     * @param userInfo User whose avatar is set to default icon.
+     * @return Bitmap of the profile icon.
+     */
+    public Bitmap assignDefaultIcon(
+            UserManager userManager, Resources resources, UserInfo userInfo) {
+        Bitmap bitmap = userInfo.isGuest()
+                ? getGuestProfileDefaultIcon(resources)
+                : getProfileDefaultIcon(resources, userInfo.id);
+        userManager.setUserIcon(userInfo.id, bitmap);
+        return bitmap;
+    }
+
+    // TODO (b/179802719): refactor this method into getRoundedUserIcon().
+    /**
+     * Gets badge to profile icon Drawable if the profile is managed.
+     *
+     * @param context to use for the avatar view
+     * @param userInfo User for which the icon is requested and badge is set
+     * @return {@link Drawable} with badge
+     */
+    public Drawable getDrawableWithBadge(Context context, UserInfo userInfo) {
+        Drawable userIcon = getRoundedProfileIcon(userInfo, context);
+        UserAvatarView userAvatarView = new UserAvatarView(context);
+        userAvatarView.setBadgeDiameter(userIcon.getIntrinsicWidth() * BADGE_WIDTH_TO_ICON_RATIO);
+        userAvatarView.setDrawableWithBadge(userIcon, userInfo.id);
+        return (Drawable) userAvatarView.getUserIconDrawable();
+    }
+
+    /**
+     * Gets a bitmap representing the profile's default avatar.
+     *
+     * @param resources The resources to pull from
+     * @param id The id of the user to get the icon for.  Pass {@link UserHandle#USER_NULL} for
+     *           Guest user.
+     * @return Default profile icon
+     */
+    private Bitmap getProfileDefaultIcon(Resources resources, @UserIdInt int id) {
+        return UserIcons.convertToBitmap(
+                UserIcons.getDefaultUserIcon(resources, id, /* light= */ false));
+    }
+
+    private Bitmap getGuestProfileDefaultIcon(Resources resources) {
+        return getProfileDefaultIcon(resources, UserHandle.USER_NULL);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileSwitcherActivity.java b/src/com/android/car/settings/profiles/ProfileSwitcherActivity.java
new file mode 100644
index 0000000..ce871b3
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileSwitcherActivity.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.profiles;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/** Entry into profile switcher activity. */
+public class ProfileSwitcherActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return new ProfileSwitcherFragment();
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileSwitcherFragment.java b/src/com/android/car/settings/profiles/ProfileSwitcherFragment.java
new file mode 100644
index 0000000..5bd50b9
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileSwitcherFragment.java
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.os.Bundle;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.BaseFragment;
+import com.android.car.settings.common.CarUxRestrictionsHelper;
+
+/**
+ * Shows a profile switcher for all profiles available on this device.
+ */
+public class ProfileSwitcherFragment extends BaseFragment {
+
+    private ProfileGridRecyclerView mProfileGridView;
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.profile_switcher;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.profiles_list_title;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        mProfileGridView = getView().findViewById(R.id.profile_grid);
+        GridLayoutManager layoutManager = new GridLayoutManager(getContext(),
+                getContext().getResources().getInteger(R.integer.user_switcher_num_col));
+        mProfileGridView.setFragment(this);
+        mProfileGridView.setLayoutManager(layoutManager);
+        mProfileGridView.buildAdapter();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+    /**
+     * Profile switcher fragment is distraction optimized, so is allowed at all times.
+     */
+    @Override
+    public boolean canBeShown(CarUxRestrictions carUxRestrictions) {
+        return true;
+    }
+
+
+    @Override
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+        applyRestriction(CarUxRestrictionsHelper.isNoSetup(restrictionInfo));
+    }
+
+    private void applyRestriction(boolean restricted) {
+        if (mProfileGridView != null) {
+            if (restricted) {
+                mProfileGridView.disableAddProfile();
+            } else {
+                mProfileGridView.enableAddProfile();
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfileUtils.java b/src/com/android/car/settings/profiles/ProfileUtils.java
new file mode 100644
index 0000000..b33f37c
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfileUtils.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.UserManager;
+
+import com.android.car.settings.R;
+
+/**
+ * Util class for providing basic, universally needed profile-related methods.
+ */
+public class ProfileUtils {
+    private ProfileUtils() {
+    }
+
+    /**
+     * Fetches the {@link UserInfo} from UserManager system service for the user ID.
+     *
+     * @param userId ID that corresponds to the returned UserInfo.
+     * @return {@link UserInfo} for the user ID.
+     */
+    public static UserInfo getUserInfo(Context context, int userId) {
+        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        return userManager.getUserInfo(userId);
+    }
+
+    /**
+     * Returns the profile name that should be displayed. The caller shouldn't use userInfo.name
+     * directly, because the display name is modified for the current process user.
+     */
+    public static String getProfileDisplayName(Context context, UserInfo userInfo) {
+        return ProfileHelper.getInstance(context).isCurrentProcessUser(userInfo)
+                ? context.getString(R.string.current_user_name, userInfo.name) : userInfo.name;
+    }
+
+    /**
+     * Returns whether or not the current profile is an admin and whether the profile info they are
+     * viewing is of a non-admin.
+     */
+    public static boolean isAdminViewingNonAdmin(UserManager userManager, UserInfo userInfo) {
+        return userManager.isAdminUser() && !userInfo.isAdmin();
+    }
+
+    /**
+     * Returns a {@link Drawable} for the given {@code icon} scaled to the appropriate size.
+     */
+    public static BitmapDrawable scaleProfileIcon(Resources res, Bitmap icon) {
+        int desiredSize = res.getDimensionPixelSize(R.dimen.icon_size);
+        Bitmap scaledIcon =
+                Bitmap.createScaledBitmap(icon, desiredSize, desiredSize, /*filter=*/true);
+        return new BitmapDrawable(res, scaledIcon);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesBasePreferenceController.java b/src/com/android/car/settings/profiles/ProfilesBasePreferenceController.java
new file mode 100644
index 0000000..7976bd9
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesBasePreferenceController.java
@@ -0,0 +1,138 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/** Shared business logic between {@link ProfilesListFragment} and
+ * {@link ChooseNewAdminFragment}.
+ */
+public abstract class ProfilesBasePreferenceController extends
+        PreferenceController<PreferenceGroup> {
+
+    private ProfilesPreferenceProvider mPreferenceProvider;
+    private List<Preference> mProfilesToDisplay = new ArrayList<>();
+
+    private final BroadcastReceiver mProfileUpdateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            /** Update screen when profiles list is updated. */
+            refreshUi();
+        }
+    };
+
+    public ProfilesBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        ProfilesPreferenceProvider.ProfileClickListener profileClickListener = this::profileClicked;
+        mPreferenceProvider = new ProfilesPreferenceProvider(context, profileClickListener);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Ensure that helper is set by the time onCreate is called. Register a listener to refresh
+     * screen on updates.
+     */
+    @Override
+    @CallSuper
+    protected void onCreateInternal() {
+        registerForProfileEvents();
+    }
+
+    /** Unregister listener to refresh screen on updates. */
+    @Override
+    @CallSuper
+    protected void onDestroyInternal() {
+        unregisterForProfileEvents();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        List<Preference> newProfiles = mPreferenceProvider.createProfileList();
+        if (profileListsAreDifferent(mProfilesToDisplay, newProfiles)) {
+            mProfilesToDisplay = newProfiles;
+            preferenceGroup.removeAll();
+
+            for (Preference preference : mProfilesToDisplay) {
+                preferenceGroup.addPreference(preference);
+            }
+        }
+    }
+
+    /** Handles the profile click on a preference for a certain profile. */
+    protected abstract void profileClicked(UserInfo userInfo);
+
+
+    /** Gets the preference provider to set additional arguments if necessary. */
+    protected ProfilesPreferenceProvider getPreferenceProvider() {
+        return mPreferenceProvider;
+    }
+
+    protected List<Preference> getProfilesToDisplay() {
+        return mProfilesToDisplay;
+    }
+
+    private boolean profileListsAreDifferent(List<Preference> currentList,
+            List<Preference> newList) {
+        if (currentList.size() != newList.size()) {
+            return true;
+        }
+
+        for (int i = 0; i < currentList.size(); i++) {
+            // Cannot use "compareTo" on preference, since it uses the order attribute to compare.
+            if (preferencesAreDifferent(currentList.get(i), newList.get(i))) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    private boolean preferencesAreDifferent(Preference lhs, Preference rhs) {
+        return !Objects.equals(lhs.getTitle(), rhs.getTitle())
+                || !Objects.equals(lhs.getSummary(), rhs.getSummary());
+    }
+
+    private void registerForProfileEvents() {
+        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_INFO_CHANGED);
+        getContext().registerReceiver(mProfileUpdateReceiver, filter);
+    }
+
+    private void unregisterForProfileEvents() {
+        getContext().unregisterReceiver(mProfileUpdateReceiver);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesDialogProvider.java b/src/com/android/car/settings/profiles/ProfilesDialogProvider.java
new file mode 100644
index 0000000..fad6224
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesDialogProvider.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+
+/**
+ * Provides common Profiles-related ConfirmationDialogFragments to ensure consistency
+ */
+public final class ProfilesDialogProvider {
+
+    /** Argument key to store the profile info that the device is trying to make an admin. */
+    static final String KEY_PROFILE_TO_MAKE_ADMIN = "PROFILE_TO_MAKE_ADMIN";
+    /** Argument key to store the profile type that the device is trying to remove. */
+    static final String KEY_PROFILE_TYPE = "PROFILE_TYPE";
+    /** {@link KEY_PROFILE_TYPE} value when removing the last admin on the device. */
+    static final String LAST_ADMIN = "LAST_ADMIN";
+    /** {@link KEY_PROFILE_TYPE} value when removing the last profile on the device. */
+    static final String LAST_PROFILE = "LAST_PROFILE";
+    /**
+     * Default {@link KEY_PROFILE_TYPE} value when removing a profile that is neither
+     * {@link LAST_ADMIN} nor {@link LAST_PROFILE}.
+     */
+    static final String ANY_PROFILE = "ANY_PROFILE";
+
+    private ProfilesDialogProvider() {
+    }
+
+    /** Gets a confirmation dialog fragment to confirm or reject adding a new profile. */
+    public static ConfirmationDialogFragment getConfirmCreateNewProfileDialogFragment(
+            Context context, @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        String message = context.getString(R.string.user_add_user_message_setup)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.user_add_user_message_update));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.user_add_user_title)
+                .setMessage(message)
+                .setPositiveButton(android.R.string.ok, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /** Gets a confirmation dialog fragment to confirm or reject exiting retail mode. */
+    public static ConfirmationDialogFragment getConfirmExitRetailModeDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+        return new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.exit_retail_mode_dialog_title)
+                .setMessage(R.string.exit_retail_mode_dialog_body)
+                .setPositiveButton(
+                        R.string.exit_retail_mode_dialog_confirmation_button_text, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .build();
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to indicate the maximum allowed number of profiles is
+     * reached.
+     */
+    public static ConfirmationDialogFragment getMaxProfilesLimitReachedDialogFragment(
+            Context context, int maxProfileLimit) {
+        return new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.user_limit_reached_title)
+                .setMessage(context.getResources().getQuantityString(
+                        R.plurals.user_limit_reached_message, maxProfileLimit, maxProfileLimit))
+                .setPositiveButton(android.R.string.ok, /* confirmListener= */ null)
+                .build();
+    }
+
+    /** Gets a confirmation dialog fragment to confirm or reject making a profile an admin. */
+    public static ConfirmationDialogFragment getConfirmGrantAdminDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener,
+            UserInfo userToMakeAdmin) {
+
+        String message = context.getString(R.string.grant_admin_permissions_message)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.action_not_reversible_message));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.grant_admin_permissions_title)
+                .setMessage(message)
+                .setPositiveButton(R.string.confirm_grant_admin, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentParcelable(KEY_PROFILE_TO_MAKE_ADMIN, userToMakeAdmin)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing the last profile on the
+     * device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveLastProfileDialogFragment(
+            Context context, @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        String message = context.getString(R.string.delete_last_user_delete_warning)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.delete_last_user_system_setup_required_message));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.delete_last_user_dialog_title)
+                .setMessage(message)
+                .setPositiveButton(R.string.delete_button, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_PROFILE_TYPE, LAST_PROFILE)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing the last admin profile on
+     * the device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveLastAdminDialogFragment(
+            Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.choose_new_admin_title)
+                .setMessage(R.string.choose_new_admin_message)
+                .setPositiveButton(R.string.choose_new_admin_label, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_PROFILE_TYPE, LAST_ADMIN)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing a profile that is neither
+     * the last admin nor the last profile on the device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveProfileDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.delete_user_dialog_title)
+                .setMessage(R.string.delete_user_dialog_message)
+                .setPositiveButton(R.string.delete_button, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_PROFILE_TYPE, ANY_PROFILE)
+                .build();
+
+        return dialogFragment;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesEntryPreferenceController.java b/src/com/android/car/settings/profiles/ProfilesEntryPreferenceController.java
new file mode 100644
index 0000000..24a9265
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesEntryPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.android.car.settings.common.TopLevelMenuFragment.FRAGMENT_MENU_PREFERENCE_KEY;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller for the top-level entry into Profile settings that open to the user's profile details
+ * page.
+ */
+public class ProfilesEntryPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(ProfilesEntryPreferenceController.class);
+
+    public ProfilesEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public boolean handlePreferenceClicked(Preference preference) {
+        Fragment fragment = ProfileDetailsFragment.newInstance(UserHandle.myUserId());
+
+        Bundle args = fragment.getArguments();
+        if (args == null) {
+            args = new Bundle();
+            fragment.setArguments(args);
+        }
+        args.putString(FRAGMENT_MENU_PREFERENCE_KEY, getPreferenceKey());
+        getFragmentController().launchFragment(fragment);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesListFragment.java b/src/com/android/car/settings/profiles/ProfilesListFragment.java
new file mode 100644
index 0000000..07c41c9
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesListFragment.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Lists all profiles available on this device.
+ */
+public class ProfilesListFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.profiles_list_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesListPreferenceController.java b/src/com/android/car/settings/profiles/ProfilesListPreferenceController.java
new file mode 100644
index 0000000..4d11cce
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesListPreferenceController.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for populating the profiles for the profiles list settings. */
+public class ProfilesListPreferenceController extends ProfilesBasePreferenceController {
+
+    public ProfilesListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void profileClicked(UserInfo userInfo) {
+        if (ProfileUtils.isAdminViewingNonAdmin(UserManager.get(getContext()), userInfo)) {
+            // Admin viewing non admin.
+            getFragmentController().launchFragment(
+                    ProfileDetailsPermissionsFragment.newInstance(userInfo.id));
+        } else {
+            getFragmentController().launchFragment(ProfileDetailsFragment.newInstance(userInfo.id));
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        super.updateState(preferenceGroup);
+
+        if (getProfilesToDisplay().isEmpty()) {
+            // Post the fragment navigation because FragmentManager may still be executing
+            // transactions
+            getContext().getMainExecutor().execute(() -> getFragmentController().goBack());
+        } else {
+            for (Preference preference : getProfilesToDisplay()) {
+                preference.setWidgetLayoutResource(R.layout.preference_settings_icon);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/profiles/ProfilesPreferenceProvider.java b/src/com/android/car/settings/profiles/ProfilesPreferenceProvider.java
new file mode 100644
index 0000000..1ab6723
--- /dev/null
+++ b/src/com/android/car/settings/profiles/ProfilesPreferenceProvider.java
@@ -0,0 +1,142 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiPreference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Constructs the preferences to be displayed in {@link ProfilesListFragment} and
+ * {@link ChooseNewAdminFragment}.
+ */
+public class ProfilesPreferenceProvider {
+
+    /**
+     * Interface for registering clicks on profiles.
+     */
+    public interface ProfileClickListener {
+        /**
+         * Invoked when profile is clicked.
+         *
+         * @param userInfo User for which the click is registered.
+         */
+        void onProfileClicked(UserInfo userInfo);
+    }
+
+    private final Context mContext;
+    private final ProfileClickListener mProfilePreferenceClickListener;
+    private boolean mIncludeCurrentProfile;
+    private boolean mIncludeGuest;
+
+    public ProfilesPreferenceProvider(Context context, ProfileClickListener listener) {
+        mContext = context;
+        mProfilePreferenceClickListener = listener;
+        mIncludeCurrentProfile = false;
+        mIncludeGuest = false;
+    }
+
+    /**
+     * Sets whether createProfileList should include an entry for the current profile. Default is
+     * {@code true}.
+     */
+    public void setIncludeCurrentProfile(boolean includeCurrentProfile) {
+        mIncludeCurrentProfile = includeCurrentProfile;
+    }
+
+    /**
+     * Sets whether createProfileList should include an entry for the guest profile. Default is
+     * {@code true}.
+     */
+    public void setIncludeGuest(boolean includeGuest) {
+        mIncludeGuest = includeGuest;
+    }
+
+    /**
+     * Creates the list of profiles (as preferences). The first profile will be the current profile
+     * (if requested) and the last profile will be the guest profile (if requested). Otherwise, the
+     * list is populated with all of the remaining switchable profiles.
+     */
+    public List<Preference> createProfileList() {
+        List<Preference> profiles = new ArrayList<>();
+        UserInfo currUserInfo = ProfileHelper.getInstance(mContext).getCurrentProcessUserInfo();
+
+        // Show current profile at the top of the list.
+        if (mIncludeCurrentProfile) {
+            profiles.add(createProfilePreference(currUserInfo));
+        }
+
+        // Display all profiles on the system, except: Guests and current profile who's displayed
+        // already.
+        List<UserInfo> infos = ProfileHelper.getInstance(mContext).getAllLivingProfiles(
+                userInfo -> !userInfo.isGuest() && userInfo.id != currUserInfo.id);
+        for (UserInfo userInfo : infos) {
+            profiles.add(createProfilePreference(userInfo));
+        }
+
+        // Display guest session option.
+        if (mIncludeGuest) {
+            profiles.add(createGuestProfilePreference());
+        }
+
+        return profiles;
+    }
+
+    private Preference createProfilePreference(UserInfo userInfo) {
+        CarUiPreference preference = new CarUiPreference(mContext);
+        preference.setIcon(
+                new ProfileIconProvider().getRoundedProfileIcon(userInfo, mContext));
+        preference.setTitle(ProfileUtils.getProfileDisplayName(mContext, userInfo));
+
+        if (!userInfo.isInitialized()) {
+            preference.setSummary(R.string.user_summary_not_set_up);
+        }
+        if (userInfo.isAdmin()) {
+            preference.setSummary(isCurrentProfile(userInfo)
+                    ? R.string.signed_in_admin_user : R.string.user_admin);
+        }
+
+        preference.setOnPreferenceClickListener(pref -> {
+            if (mProfilePreferenceClickListener == null) {
+                return false;
+            }
+            mProfilePreferenceClickListener.onProfileClicked(userInfo);
+            return true;
+        });
+
+        return preference;
+    }
+
+    private Preference createGuestProfilePreference() {
+        CarUiPreference preference = new CarUiPreference(mContext);
+        preference.setIcon(
+                new ProfileIconProvider().getRoundedGuestDefaultIcon(mContext.getResources()));
+        preference.setTitle(R.string.user_guest);
+        return preference;
+    }
+
+    private boolean isCurrentProfile(UserInfo userInfo) {
+        return ProfileHelper.getInstance(mContext).isCurrentProcessUser(userInfo);
+    }
+}
diff --git a/src/com/android/car/settings/profiles/RemoveProfileHandler.java b/src/com/android/car/settings/profiles/RemoveProfileHandler.java
new file mode 100644
index 0000000..b198a33
--- /dev/null
+++ b/src/com/android/car/settings/profiles/RemoveProfileHandler.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Consolidates profile removal logic into one handler so we can have consistent logic across
+ * various parts of the Settings app.
+ */
+public class RemoveProfileHandler {
+    @VisibleForTesting
+    static final String REMOVE_PROFILE_DIALOG_TAG = "RemoveProfileDialogFragment";
+
+    private final Context mContext;
+    private final ProfileHelper mProfileHelper;
+    private final UserManager mUserManager;
+    private final FragmentController mFragmentController;
+
+    private UserInfo mUserInfo;
+
+    @VisibleForTesting
+    ConfirmationDialogFragment.ConfirmListener mRemoveConfirmListener;
+
+    public RemoveProfileHandler(Context context, ProfileHelper profileHelper,
+            UserManager userManager, FragmentController fragmentController) {
+        mContext = context;
+        mProfileHelper = profileHelper;
+        mUserManager = userManager;
+        mFragmentController = fragmentController;
+    }
+
+    /**
+     * Sets the profile info to be handled for removal
+     * @param userInfo UserInfo of the profile to remove
+     */
+    public void setUserInfo(UserInfo userInfo) {
+        mUserInfo = userInfo;
+
+        mRemoveConfirmListener = arguments -> {
+            String profileType = arguments.getString(ProfilesDialogProvider.KEY_PROFILE_TYPE);
+            if (profileType.equals(ProfilesDialogProvider.LAST_ADMIN)) {
+                mFragmentController.launchFragment(
+                        ChooseNewAdminFragment.newInstance(userInfo));
+            } else {
+                int removeProfileResult = mProfileHelper.removeProfile(mContext, mUserInfo);
+                if (removeProfileResult == ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS) {
+                    mFragmentController.goBack();
+                } else {
+                    // If failed, need to show error dialog for users.
+                    mFragmentController.showDialog(
+                            ErrorDialog.newInstance(mProfileHelper.getErrorMessageForProfileResult(
+                                    removeProfileResult)), null);
+                }
+            }
+        };
+    }
+
+    /**
+     * Resets listeners as they can get unregistered with certain configuration changes.
+     */
+    public void resetListeners() {
+        ConfirmationDialogFragment removeProfileDialog =
+                (ConfirmationDialogFragment) mFragmentController.findDialogByTag(
+                        REMOVE_PROFILE_DIALOG_TAG);
+
+        ConfirmationDialogFragment.resetListeners(
+                removeProfileDialog,
+                mRemoveConfirmListener,
+                /* rejectListener= */ null,
+                /* neutralListener= */ null);
+    }
+
+    /**
+     * Checks to see if the current active profile can delete the requested profile.
+     * @param userInfo UserInfo of the profile to delete
+     * @return True if the profile can be deleted by the current active profile. False otherwise.
+     */
+    public boolean canRemoveProfile(UserInfo userInfo) {
+        return !mUserManager.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER)
+                && userInfo.id != UserHandle.USER_SYSTEM
+                && !mUserManager.isDemoUser();
+    }
+
+    /**
+     * Show the remove profile confirmation dialog. This will handle edge cases such as removing
+     * the last profile or removing the last admin profile.
+     */
+    public void showConfirmRemoveProfileDialog() {
+        boolean isLastProfile = mProfileHelper.getAllPersistentProfiles().size() == 1;
+        boolean isLastAdmin = mUserInfo.isAdmin()
+                && mProfileHelper.getAllAdminProfiles().size() == 1;
+
+        ConfirmationDialogFragment dialogFragment;
+
+        if (isLastProfile) {
+            dialogFragment = ProfilesDialogProvider.getConfirmRemoveLastProfileDialogFragment(
+                    mContext, mRemoveConfirmListener, /* rejectListener= */ null);
+        } else if (isLastAdmin) {
+            dialogFragment = ProfilesDialogProvider.getConfirmRemoveLastAdminDialogFragment(
+                    mContext, mRemoveConfirmListener, /* rejectListener= */ null);
+        } else {
+            dialogFragment = ProfilesDialogProvider.getConfirmRemoveProfileDialogFragment(mContext,
+                    mRemoveConfirmListener, /* rejectListener= */ null);
+        }
+        mFragmentController.showDialog(dialogFragment, REMOVE_PROFILE_DIALOG_TAG);
+    }
+
+}
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
index 3c7f25e..c3ca24b 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
@@ -39,10 +39,10 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.users.UserIconProvider;
-import com.android.car.settings.users.UserSwitcherActivity;
+import com.android.car.settings.profiles.ProfileIconProvider;
+import com.android.car.settings.profiles.ProfileSwitcherActivity;
 import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.NavButtonMode;
 
 import java.util.Arrays;
 import java.util.List;
@@ -56,11 +56,11 @@
     private static final long BUILD_INFO_REFRESH_TIME_MS = TimeUnit.SECONDS.toMillis(5);
 
     private UserManager mUserManager;
-    private UserIconProvider mUserIconProvider;
+    private ProfileIconProvider mProfileIconProvider;
     private QuickSettingGridAdapter mGridAdapter;
     private RecyclerView mListView;
     private MenuItem mFullSettingsBtn;
-    private MenuItem mUserSwitcherBtn;
+    private MenuItem mProfileSwitcherBtn;
     private TextView mBuildInfo;
 
     private ActivityResultLauncher<Intent> mStartForResult = registerForActivityResult(
@@ -83,15 +83,15 @@
         mUserManager = UserManager.get(getContext());
         Activity activity = requireActivity();
 
-        mUserIconProvider = new UserIconProvider();
-        mListView = activity.findViewById(R.id.list);
+        mProfileIconProvider = new ProfileIconProvider();
+        mListView = activity.findViewById(R.id.quick_settings_list);
         mGridAdapter = new QuickSettingGridAdapter(activity);
         mListView.setLayoutManager(mGridAdapter.getGridLayoutManager());
 
-        setupUserButton(activity);
+        setupProfileButton(activity);
 
         mGridAdapter
-                .addTile(new WifiTile(activity, mGridAdapter, getFragmentHost()))
+                .addTile(new WifiTile(activity, mGridAdapter, getLifecycle()))
                 .addTile(new BluetoothTile(activity, mGridAdapter, getFragmentHost()))
                 .addTile(new DayNightTile(activity, mGridAdapter, getFragmentHost()))
                 .addTile(new CelluarTile(activity, mGridAdapter, getFragmentHost()))
@@ -101,38 +101,33 @@
 
 
     @Override
-    protected Toolbar.NavButtonMode getToolbarNavButtonStyle() {
-        return Toolbar.NavButtonMode.CLOSE;
-    }
-
-    @Override
-    protected Toolbar.State getToolbarState() {
+    protected NavButtonMode getToolbarNavButtonStyle() {
         if (getContext().getResources().getBoolean(R.bool.config_is_quick_settings_root)
                 && !getContext().getResources()
                 .getBoolean(R.bool.config_show_settings_root_exit_icon)) {
-            return Toolbar.State.HOME;
+            return NavButtonMode.DISABLED;
         } else {
-            return Toolbar.State.SUBPAGE;
+            return NavButtonMode.CLOSE;
         }
     }
 
     @Override
     public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mUserSwitcherBtn, mFullSettingsBtn);
+        return Arrays.asList(mProfileSwitcherBtn, mFullSettingsBtn);
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mUserSwitcherBtn = new MenuItem.Builder(getContext())
+        mProfileSwitcherBtn = new MenuItem.Builder(getContext())
                 .setTitle(getString(R.string.user_switch))
                 .setOnClickListener(i ->
                         mStartForResult.launch(
-                                new Intent(getContext(), UserSwitcherActivity.class)))
-                .setIcon(R.drawable.ic_user)
+                                new Intent(getContext(), ProfileSwitcherActivity.class)))
+                .setIcon(R.drawable.ic_profile)
                 .setShowIconAndTitle(true)
-                .setVisible(showUserSwitcher())
+                .setVisible(showProfileSwitcher())
                 .setTinted(false)
                 .build();
         mFullSettingsBtn = new MenuItem.Builder(getContext())
@@ -199,14 +194,14 @@
         mGridAdapter.stop();
     }
 
-    private void setupUserButton(Context context) {
+    private void setupProfileButton(Context context) {
         UserInfo currentUserInfo = mUserManager.getUserInfo(ActivityManager.getCurrentUser());
-        Drawable userIcon = mUserIconProvider.getRoundedUserIcon(currentUserInfo, context);
-        mUserSwitcherBtn.setIcon(userIcon);
-        mUserSwitcherBtn.setTitle(currentUserInfo.name);
+        Drawable profileIcon = mProfileIconProvider.getDrawableWithBadge(context, currentUserInfo);
+        mProfileSwitcherBtn.setIcon(profileIcon);
+        mProfileSwitcherBtn.setTitle(currentUserInfo.name);
     }
 
-    private boolean showUserSwitcher() {
+    private boolean showProfileSwitcher() {
         return !UserManager.isDeviceInDemoMode(getContext())
                 && UserManager.supportsMultipleUsers()
                 && !UserManager.get(getContext()).hasUserRestriction(
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
index b3e8a19..0f45c84 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
@@ -21,6 +21,7 @@
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
@@ -31,6 +32,9 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.car.settings.R;
+import com.android.car.settings.common.rotary.DirectManipulationHandler;
+import com.android.car.settings.common.rotary.DirectManipulationState;
+import com.android.car.settings.common.rotary.SeekBarHelper;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -48,6 +52,7 @@
     private final List<Tile> mTiles = new ArrayList<>();
     private final List<SeekbarTile> mSeekbarTiles = new ArrayList<>();
     private final QsSpanSizeLookup mQsSpanSizeLookup = new QsSpanSizeLookup();
+    private final DirectManipulationState mDirectManipulationMode = new DirectManipulationState();
 
     public QuickSettingGridAdapter(Context context) {
         mContext = context;
@@ -169,11 +174,13 @@
     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
         switch (holder.getItemViewType()) {
             case SEEKBAR_VIEWTYPE:
+                BrightnessViewHolder bvh = (BrightnessViewHolder) holder;
                 SeekbarTile seekbarTile = mSeekbarTiles.get(position);
-                SeekBar seekbar = ((BrightnessViewHolder) holder).mSeekBar;
+                SeekBar seekbar = bvh.mSeekBar;
                 seekbar.setMax(seekbarTile.getMax());
                 seekbar.setProgress(seekbarTile.getCurrent());
                 seekbar.setOnSeekBarChangeListener(seekbarTile);
+                bvh.registerDirectManipulation();
                 break;
             case TILE_VIEWTYPE:
                 Tile tile = mTiles.get(position - mSeekbarTiles.size());
@@ -211,7 +218,32 @@
 
         BrightnessViewHolder(View view) {
             super(view);
-            mSeekBar = (SeekBar) view.findViewById(R.id.seekbar);
+            mSeekBar = view.findViewById(R.id.quick_settings_brightness_seekbar);
+        }
+
+        void registerDirectManipulation() {
+            DirectManipulationHandler.setDirectManipulationHandler(mSeekBar,
+                    new DirectManipulationHandler.Builder(mDirectManipulationMode)
+                            .setCenterButtonHandler(inDirectManipulationMode -> {
+                                mSeekBar.setSelected(!inDirectManipulationMode);
+                                return true;
+                            })
+                            .setBackHandler(inDirectManipulationMode -> {
+                                if (inDirectManipulationMode) {
+                                    mSeekBar.setSelected(false);
+                                    return true;
+                                }
+                                return false;
+                            })
+                            .setRotationHandler((v, event) -> {
+                                int scrollAmount = Math.round(
+                                        event.getAxisValue(MotionEvent.AXIS_SCROLL));
+                                mSeekBar.incrementProgressBy(
+                                        scrollAmount * SeekBarHelper.getScaledSeekBarIncrement(
+                                                mSeekBar));
+                                return true;
+                            })
+                            .build());
         }
     }
 
diff --git a/src/com/android/car/settings/quicksettings/WifiTile.java b/src/com/android/car/settings/quicksettings/WifiTile.java
index a613e54..d444d72 100644
--- a/src/com/android/car/settings/quicksettings/WifiTile.java
+++ b/src/com/android/car/settings/quicksettings/WifiTile.java
@@ -23,12 +23,13 @@
 import android.graphics.drawable.Drawable;
 import android.view.View;
 
+import androidx.lifecycle.Lifecycle;
+
 import com.android.car.settings.R;
 import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.common.FragmentHost;
 import com.android.car.settings.wifi.CarWifiManager;
 import com.android.car.settings.wifi.WifiUtil;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 /**
  * Controls Wifi tile on quick setting page.
@@ -50,17 +51,17 @@
     WifiTile(
             Context context,
             StateChangedListener stateChangedListener,
-            FragmentHost fragmentHost) {
+            Lifecycle lifecycle) {
         mContext = context;
         mLaunchWifiSettings = v -> {
             context.startActivity(new Intent(context,
                     CarSettingActivities.WifiSettingsActivity.class));
             return true;
         };
-        mCarWifiManager = new CarWifiManager(context);
+        mCarWifiManager = new CarWifiManager(context, lifecycle);
         mStateChangedListener = stateChangedListener;
         // init icon and text etc.
-        updateAccessPointSsid();
+        updateWifiEntrySsid();
         onWifiStateChanged(mCarWifiManager.getWifiState());
     }
 
@@ -93,19 +94,16 @@
     @Override
     public void start() {
         mCarWifiManager.addListener(this);
-        mCarWifiManager.start();
     }
 
     @Override
     public void stop() {
         mCarWifiManager.removeListener(this);
-        mCarWifiManager.stop();
-        mCarWifiManager.destroy();
     }
 
     @Override
-    public void onAccessPointsChanged() {
-        if (updateAccessPointSsid()) {
+    public void onWifiEntriesChanged() {
+        if (updateWifiEntrySsid()) {
             mStateChangedListener.onStateChanged();
         }
     }
@@ -116,7 +114,7 @@
         int stringId = WifiUtil.getStateDesc(state);
         if (stringId != 0) {
             mText = mContext.getString(stringId);
-        } else if (!updateAccessPointSsid()) {
+        } else if (!updateWifiEntrySsid()) {
             if (wifiEnabledNotConnected()) {
                 mText = mContext.getString(R.string.wifi_settings);
             }
@@ -131,18 +129,18 @@
     }
 
     private boolean wifiEnabledNotConnected() {
-        return mCarWifiManager.isWifiEnabled() && mCarWifiManager.getConnectedAccessPoint() == null;
+        return mCarWifiManager.isWifiEnabled() && mCarWifiManager.getConnectedWifiEntry() == null;
     }
 
     /**
-     * Updates the text with access point connected, if any
+     * Updates the text with Wi-Fi entry connected, if any
      *
-     * @return {@code true} if the text is updated, {@code false} other wise.
+     * @return {@code true} if the text was updated, {@code false} otherwise
      */
-    private boolean updateAccessPointSsid() {
-        AccessPoint accessPoint = mCarWifiManager.getConnectedAccessPoint();
-        if (accessPoint != null) {
-            mText = accessPoint.getConfigName();
+    private boolean updateWifiEntrySsid() {
+        WifiEntry wifiEntry = mCarWifiManager.getConnectedWifiEntry();
+        if (wifiEntry != null) {
+            mText = wifiEntry.getSsid();
             return true;
         }
         return false;
diff --git a/src/com/android/car/settings/security/ChooseLockBaseActivity.java b/src/com/android/car/settings/security/ChooseLockBaseActivity.java
new file mode 100644
index 0000000..1014cfa
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseLockBaseActivity.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Abstract base activity class for lock choosing activities.
+ */
+public abstract class ChooseLockBaseActivity extends BaseCarSettingsActivity {
+
+    /**
+     * Lock type fragment specified here will have {@link PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK}
+     * added as an argument and then opened as the initial fragment.
+     */
+    protected abstract Fragment getChooseLockFragment();
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        Intent intent = getIntent();
+        Fragment fragment = getChooseLockFragment();
+        Bundle args = fragment.getArguments();
+        if (args == null) {
+            args = new Bundle();
+        }
+        args.putParcelable(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK,
+                intent.getParcelableExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK));
+        fragment.setArguments(args);
+        return fragment;
+    }
+}
diff --git a/src/com/android/car/settings/security/ChooseLockPasswordActivity.java b/src/com/android/car/settings/security/ChooseLockPasswordActivity.java
new file mode 100644
index 0000000..53db78b
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseLockPasswordActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import androidx.fragment.app.Fragment;
+
+/**
+ * Activity for choosing a new screen lock password for the current user.
+ */
+public class ChooseLockPasswordActivity extends ChooseLockBaseActivity {
+    @Override
+    protected Fragment getChooseLockFragment() {
+        return ChooseLockPinPasswordFragment.newPasswordInstance();
+    }
+}
diff --git a/src/com/android/car/settings/security/ChooseLockPatternActivity.java b/src/com/android/car/settings/security/ChooseLockPatternActivity.java
new file mode 100644
index 0000000..9a54fc3
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseLockPatternActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import androidx.fragment.app.Fragment;
+
+/**
+ * Activity for choosing a new screen lock pattern for the current user.
+ */
+public class ChooseLockPatternActivity extends ChooseLockBaseActivity {
+    @Override
+    protected Fragment getChooseLockFragment() {
+        return ChooseLockPatternFragment.newInstance();
+    }
+}
diff --git a/src/com/android/car/settings/security/ChooseLockPatternFragment.java b/src/com/android/car/settings/security/ChooseLockPatternFragment.java
index bcf6057..bfb5e89 100644
--- a/src/com/android/car/settings/security/ChooseLockPatternFragment.java
+++ b/src/com/android/car/settings/security/ChooseLockPatternFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.car.settings.security;
 
+import android.app.Activity;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.view.View;
@@ -145,7 +146,7 @@
 
     @Override
     public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mPrimaryButton, mSecondaryButton);
+        return Arrays.asList(mSecondaryButton, mPrimaryButton);
     }
 
     @Override
@@ -191,7 +192,7 @@
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
 
-        mMessageText = view.findViewById(R.id.description_text);
+        mMessageText = view.findViewById(R.id.title_text);
         mMessageText.setText(getString(R.string.choose_lock_pattern_message));
 
         mLockPatternView = view.findViewById(R.id.lockPattern);
@@ -383,18 +384,13 @@
     // Update display message and proceed to next step according to the different mText on
     // the secondary button.
     private void handleSecondaryButtonClick() {
-        switch (mUiStage.mSecondaryButtonState) {
-            case Retry:
-                mChosenPattern = null;
-                mLockPatternView.clearPattern();
-                updateStage(Stage.Introduction);
-                break;
-            case Cancel:
-                getFragmentHost().goBack();
-                break;
-            default:
-                throw new IllegalStateException("secondary footer button pressed, but stage of "
-                        + mUiStage + " doesn't make sense");
+        if (mUiStage.mSecondaryButtonState == SecondaryButtonState.Retry) {
+            mChosenPattern = null;
+            mLockPatternView.clearPattern();
+            updateStage(Stage.Introduction);
+        } else {
+            throw new IllegalStateException("secondary button pressed, but stage of "
+                    + mUiStage + " doesn't make sense");
         }
     }
 
@@ -438,6 +434,7 @@
             mCurrentCredential.zeroize();
         }
 
+        getActivity().setResult(Activity.RESULT_OK);
         getActivity().finish();
     }
 
@@ -451,7 +448,7 @@
          */
         Introduction(
                 R.string.lockpattern_recording_intro_header,
-                SecondaryButtonState.Cancel,
+                SecondaryButtonState.Gone,
                 PrimaryButtonState.ContinueDisabled,
                 /* patternEnabled= */ true),
         /**
@@ -487,7 +484,7 @@
          */
         NeedToConfirm(
                 R.string.lockpattern_need_to_confirm,
-                SecondaryButtonState.Cancel,
+                SecondaryButtonState.Gone,
                 PrimaryButtonState.ConfirmDisabled,
                 /* patternEnabled= */ true),
         /**
@@ -496,7 +493,7 @@
          */
         ConfirmWrong(
                 R.string.lockpattern_pattern_wrong,
-                SecondaryButtonState.Cancel,
+                SecondaryButtonState.Gone,
                 PrimaryButtonState.ConfirmDisabled,
                 /* patternEnabled= */ true),
         /**
@@ -505,7 +502,7 @@
          */
         ChoiceConfirmed(
                 R.string.lockpattern_pattern_confirmed,
-                SecondaryButtonState.Cancel,
+                SecondaryButtonState.Gone,
                 PrimaryButtonState.Confirm,
                 /* patternEnabled= */ false),
 
@@ -515,7 +512,7 @@
          */
         SaveFailure(
                 R.string.error_saving_lockpattern,
-                SecondaryButtonState.Cancel,
+                SecondaryButtonState.Gone,
                 PrimaryButtonState.Retry,
                 /* patternEnabled= */ false);
 
@@ -569,10 +566,7 @@
      * The states of the secondary footer button.
      */
     enum SecondaryButtonState {
-        Cancel(R.string.lockpattern_cancel_button_text, true),
-        CancelDisabled(R.string.lockpattern_cancel_button_text, false),
         Retry(R.string.lockpattern_retry_button_text, true),
-        RetryDisabled(R.string.lockpattern_retry_button_text, false),
         Gone(ID_EMPTY_MESSAGE, false);
 
         final int mTextResId;
diff --git a/src/com/android/car/settings/security/ChooseLockPinActivity.java b/src/com/android/car/settings/security/ChooseLockPinActivity.java
new file mode 100644
index 0000000..7e315b7
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseLockPinActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import androidx.fragment.app.Fragment;
+
+/**
+ * Activity for choosing a new screen lock PIN for the current user.
+ */
+public class ChooseLockPinActivity extends ChooseLockBaseActivity {
+    @Override
+    protected Fragment getChooseLockFragment() {
+        return ChooseLockPinPasswordFragment.newPinInstance();
+    }
+}
diff --git a/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java b/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
index 4eedd9d..dd39b6c 100644
--- a/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
+++ b/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.car.settings.security;
 
+import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.os.Bundle;
@@ -79,7 +80,6 @@
 
     private PinPadView mPinPad;
     private TextView mHintMessage;
-    private MenuItem mSecondaryButton;
     private MenuItem mPrimaryButton;
     private EditText mPasswordField;
     private ProgressBarController mProgressBar;
@@ -113,7 +113,7 @@
 
     @Override
     public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mPrimaryButton, mSecondaryButton);
+        return Arrays.asList(mPrimaryButton);
     }
 
     @Override
@@ -157,9 +157,6 @@
         mPrimaryButton = new MenuItem.Builder(getContext())
                 .setOnClickListener(i -> handlePrimaryButtonClick())
                 .build();
-        mSecondaryButton = new MenuItem.Builder(getContext())
-                .setOnClickListener(i -> handleSecondaryButtonClick())
-                .build();
     }
 
     @Override
@@ -330,14 +327,6 @@
         mPrimaryButton.setTitle(textId);
     }
 
-    private void setSecondaryButtonEnabled(boolean enabled) {
-        mSecondaryButton.setEnabled(enabled);
-    }
-
-    private void setSecondaryButtonText(@StringRes int textId) {
-        mSecondaryButton.setTitle(textId);
-    }
-
     // Updates display message and proceed to next step according to the different text on
     // the primary button.
     private void handlePrimaryButtonClick() {
@@ -380,22 +369,6 @@
         }
     }
 
-    // Updates display message and proceed to next step according to the different text on
-    // the secondary button.
-    private void handleSecondaryButtonClick() {
-        if (mSaveLockWorker != null) {
-            return;
-        }
-
-        if (mUiStage.secondaryButtonText == R.string.lockpassword_clear_label) {
-            mPasswordField.setText("");
-            mUiStage = Stage.Introduction;
-            setSecondaryButtonText(mUiStage.secondaryButtonText);
-        } else {
-            getFragmentHost().goBack();
-        }
-    }
-
     @VisibleForTesting
     void onChosenLockSaveFinished(boolean isSaveSuccessful) {
         mProgressBar.setVisible(false);
@@ -437,10 +410,6 @@
 
         boolean inputAllowed = mSaveLockWorker == null || mSaveLockWorker.isFinished();
 
-        if (mUiStage != Stage.Introduction) {
-            setSecondaryButtonEnabled(inputAllowed);
-        }
-
         if (mIsPin) {
             mPinPad.setEnterKeyIcon(mUiStage.enterKeyIcon);
         }
@@ -465,7 +434,6 @@
         }
 
         setPrimaryButtonText(mUiStage.primaryButtonText);
-        setSecondaryButtonText(mUiStage.secondaryButtonText);
         mPasswordEntryInputDisabler.setInputEnabled(inputAllowed);
     }
 
@@ -500,6 +468,7 @@
 
         mPasswordField.setText("");
 
+        getActivity().setResult(Activity.RESULT_OK);
         getActivity().finish();
     }
 
@@ -510,52 +479,44 @@
                 R.string.choose_lock_password_hints,
                 R.string.choose_lock_pin_hints,
                 R.string.continue_button_text,
-                R.string.lockpassword_cancel_label,
                 R.drawable.ic_arrow_forward),
 
         PasswordInvalid(
                 R.string.lockpassword_invalid_password,
                 R.string.lockpin_invalid_pin,
                 R.string.continue_button_text,
-                R.string.lockpassword_clear_label,
                 R.drawable.ic_arrow_forward),
 
         NeedToConfirm(
                 R.string.confirm_your_password_header,
                 R.string.confirm_your_pin_header,
                 R.string.lockpassword_confirm_label,
-                R.string.lockpassword_cancel_label,
                 R.drawable.ic_check),
 
         ConfirmWrong(
                 R.string.confirm_passwords_dont_match,
                 R.string.confirm_pins_dont_match,
-                R.string.continue_button_text,
-                R.string.lockpassword_cancel_label,
+                R.string.lockpassword_confirm_label,
                 R.drawable.ic_check),
 
         SaveFailure(
                 R.string.error_saving_password,
                 R.string.error_saving_lockpin,
                 R.string.lockscreen_retry_button_text,
-                R.string.lockpassword_cancel_label,
                 R.drawable.ic_check);
 
         public final int alphaHint;
         public final int numericHint;
         public final int primaryButtonText;
-        public final int secondaryButtonText;
         public final int enterKeyIcon;
 
         Stage(@StringRes int hintInAlpha,
                 @StringRes int hintInNumeric,
                 @StringRes int primaryButtonText,
-                @StringRes int secondaryButtonText,
                 @DrawableRes int enterKeyIcon) {
             this.alphaHint = hintInAlpha;
             this.numericHint = hintInNumeric;
             this.primaryButtonText = primaryButtonText;
-            this.secondaryButtonText = secondaryButtonText;
             this.enterKeyIcon = enterKeyIcon;
         }
 
diff --git a/src/com/android/car/settings/security/ChooseLockTypePreferenceController.java b/src/com/android/car/settings/security/ChooseLockTypePreferenceController.java
new file mode 100644
index 0000000..b552bff
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseLockTypePreferenceController.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.widget.LockPatternUtils;
+
+/**
+ * Business logic for the choose lock type preference. This preference will launch a
+ * ScreenLockActivity to verify the current lock and then launch a new ChooseLockTypeFragment
+ * instance with the provided result data.
+ */
+public class ChooseLockTypePreferenceController extends PreferenceController<Preference>
+        implements ActivityResultCallback {
+
+    private static final Logger LOG = new Logger(ChooseLockTypePreferenceController.class);
+    @VisibleForTesting
+    static final int LOCK_CHECK = 1;
+
+    private final UserManager mUserManager;
+    private LockPatternUtils mLockPatternUtils;
+
+    public ChooseLockTypePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions, UserManager.get(context),
+                new LockPatternUtils(context));
+    }
+
+    @VisibleForTesting
+    ChooseLockTypePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            UserManager userManager, LockPatternUtils lockPatternUtils) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUserManager = userManager;
+        mLockPatternUtils = lockPatternUtils;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        int passwordQuality = mLockPatternUtils.getCredentialTypeForUser(UserHandle.myUserId());
+
+        switch (passwordQuality) {
+            case CREDENTIAL_TYPE_NONE:
+                preference.setSummary(R.string.security_lock_none);
+                break;
+            case CREDENTIAL_TYPE_PATTERN:
+                preference.setSummary(R.string.security_lock_pattern);
+                break;
+            case CREDENTIAL_TYPE_PIN:
+                preference.setSummary(R.string.security_lock_pin);
+                break;
+            case CREDENTIAL_TYPE_PASSWORD:
+                preference.setSummary(R.string.security_lock_password);
+                break;
+            default:
+                preference.setSummary("");
+                break;
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        Intent intent = new Intent(getContext(), VerifyLockChangeActivity.class);
+        getFragmentController().startActivityForResult(intent, LOCK_CHECK, this);
+        return true;
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode != LOCK_CHECK) {
+            LOG.e("Got unknown activity result");
+            return;
+        }
+        if (resultCode != RESULT_OK) {
+            return;
+        }
+        Fragment fragment = new ChooseLockTypeFragment();
+        Bundle bundle = fragment.getArguments();
+        if (bundle == null) {
+            bundle = new Bundle();
+        }
+        if (data != null) {
+            bundle.putParcelable(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK,
+                    data.getParcelableExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK));
+            bundle.putInt(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY,
+                    data.getIntExtra(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, -1));
+        }
+        fragment.setArguments(bundle);
+        getFragmentController().launchFragment(fragment);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mUserManager.isGuestUser() ? DISABLED_FOR_PROFILE : AVAILABLE;
+    }
+}
diff --git a/src/com/android/car/settings/security/CredentialStorageActivity.java b/src/com/android/car/settings/security/CredentialStorageActivity.java
index 22e7fd7..7b85583 100644
--- a/src/com/android/car/settings/security/CredentialStorageActivity.java
+++ b/src/com/android/car/settings/security/CredentialStorageActivity.java
@@ -41,6 +41,7 @@
 import com.android.car.settings.common.ConfirmationDialogFragment;
 import com.android.car.settings.common.Logger;
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
 
 import java.lang.ref.WeakReference;
 
@@ -66,6 +67,7 @@
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
         mUserManager = UserManager.get(getApplicationContext());
         mUtils = new LockPatternUtils(this);
 
diff --git a/src/com/android/car/settings/security/CredentialsResetPreferenceController.java b/src/com/android/car/settings/security/CredentialsResetPreferenceController.java
index a31257b..3eb3a84 100644
--- a/src/com/android/car/settings/security/CredentialsResetPreferenceController.java
+++ b/src/com/android/car/settings/security/CredentialsResetPreferenceController.java
@@ -46,6 +46,6 @@
     @Override
     public int getAvailabilityStatus() {
         return mUserManager.hasUserRestriction(DISALLOW_CONFIG_CREDENTIALS)
-                ? DISABLED_FOR_USER : AVAILABLE;
+                ? DISABLED_FOR_PROFILE : AVAILABLE;
     }
 }
diff --git a/src/com/android/car/settings/security/LockTypeBasePreferenceController.java b/src/com/android/car/settings/security/LockTypeBasePreferenceController.java
index e1d5247..f7bc36d 100644
--- a/src/com/android/car/settings/security/LockTypeBasePreferenceController.java
+++ b/src/com/android/car/settings/security/LockTypeBasePreferenceController.java
@@ -16,16 +16,23 @@
 
 package com.android.car.settings.security;
 
+import static android.app.Activity.RESULT_OK;
+
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.os.Bundle;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.Looper;
 import android.os.UserManager;
 
-import androidx.fragment.app.Fragment;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
 import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
 import com.android.internal.widget.LockscreenCredential;
 
@@ -33,11 +40,18 @@
  * Business Logic for security lock preferences. It can be extended to change which fragment should
  * be opened when clicked.
  */
-public abstract class LockTypeBasePreferenceController extends PreferenceController<Preference> {
+public abstract class LockTypeBasePreferenceController extends PreferenceController<Preference>
+        implements ActivityResultCallback {
 
-    private final UserManager mUserManager;
+    private static final Logger LOG = new Logger(LockTypeBasePreferenceController.class);
+    @VisibleForTesting
+    static final int CHOOSE_LOCK_REQUEST = 90;
+
+    @VisibleForTesting
+    UserManager mUserManager;
     private LockscreenCredential mCurrentPassword;
     private int mCurrentPasswordQuality;
+    private boolean mHasPendingBack = false;
 
     public LockTypeBasePreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
@@ -51,10 +65,10 @@
     }
 
     /**
-     * Fragment specified here will be opened when the Preference is clicked. Return null to prevent
-     * navigation.
+     * Intent specified here will determine which activity is started when the Preference is
+     * clicked. Return null to prevent navigation.
      */
-    protected abstract Fragment fragmentToOpen();
+    protected abstract Intent activityToOpen();
 
     /**
      * If the current password quality is one of the values returned by this function, the
@@ -102,20 +116,13 @@
 
     @Override
     protected boolean handlePreferenceClicked(Preference preference) {
-        Fragment fragment = fragmentToOpen();
-        if (fragment != null) {
-            if (mCurrentPassword != null) {
-                Bundle args = fragment.getArguments();
-                if (args == null) {
-                    args = new Bundle();
-                }
-                args.putParcelable(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, mCurrentPassword);
-                fragment.setArguments(args);
-            }
-            getFragmentController().launchFragment(fragment);
-            return true;
+        Intent intent = activityToOpen();
+        if (intent == null) {
+            return false;
         }
-        return false;
+        intent.putExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, mCurrentPassword);
+        getFragmentController().startActivityForResult(intent, CHOOSE_LOCK_REQUEST, this);
+        return true;
     }
 
     /**
@@ -132,8 +139,35 @@
     }
 
     @Override
+    protected void onStartInternal() {
+        if (mHasPendingBack) {
+            mHasPendingBack = false;
+
+            // Post the fragment navigation because FragmentManager may still be executing
+            // transactions during onStart.
+            new Handler(Looper.getMainLooper()).post(() -> getFragmentController().goBack());
+        }
+    }
+
+    @Override
     public int getAvailabilityStatus() {
-        return mUserManager.isGuestUser() ? DISABLED_FOR_USER : AVAILABLE;
+        return mUserManager.isGuestUser() ? DISABLED_FOR_PROFILE : AVAILABLE;
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode != CHOOSE_LOCK_REQUEST) {
+            return;
+        }
+        if (resultCode != RESULT_OK) {
+            LOG.d("Lock was not updated. Result code: " + resultCode);
+            return;
+        }
+        if (isStarted()) {
+            getFragmentController().goBack();
+        } else {
+            mHasPendingBack = true;
+        }
     }
 
     private CharSequence getSummary() {
diff --git a/src/com/android/car/settings/security/NoLockPreferenceController.java b/src/com/android/car/settings/security/NoLockPreferenceController.java
index 8a57b17..a4b3abd 100644
--- a/src/com/android/car/settings/security/NoLockPreferenceController.java
+++ b/src/com/android/car/settings/security/NoLockPreferenceController.java
@@ -19,10 +19,10 @@
 import android.app.admin.DevicePolicyManager;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
+import android.content.Intent;
 import android.os.UserHandle;
 
 import androidx.annotation.VisibleForTesting;
-import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
 
 import com.android.car.settings.R;
@@ -83,8 +83,8 @@
     }
 
     @Override
-    protected Fragment fragmentToOpen() {
-        // Selecting this preference does not open a new fragment. Instead it opens a dialog to
+    protected Intent activityToOpen() {
+        // Selecting this preference does not open a new activity. Instead it opens a dialog to
         // confirm the removal of the existing lock screen.
         return null;
     }
diff --git a/src/com/android/car/settings/security/PasswordHelper.java b/src/com/android/car/settings/security/PasswordHelper.java
index 0a6e075..35a2aae 100644
--- a/src/com/android/car/settings/security/PasswordHelper.java
+++ b/src/com/android/car/settings/security/PasswordHelper.java
@@ -137,7 +137,7 @@
 
     private int validatePin(byte[] pin) {
         int errorCode = NO_ERROR;
-        PasswordMetrics metrics = PasswordMetrics.computeForPassword(pin);
+        PasswordMetrics metrics = PasswordMetrics.computeForPasswordOrPin(pin, /* isPin */ true);
         int passwordQuality = getPasswordQuality();
 
         if (metrics.length < MIN_LENGTH) {
diff --git a/src/com/android/car/settings/security/PasswordLockPreferenceController.java b/src/com/android/car/settings/security/PasswordLockPreferenceController.java
index 77d105c..c331a1e 100644
--- a/src/com/android/car/settings/security/PasswordLockPreferenceController.java
+++ b/src/com/android/car/settings/security/PasswordLockPreferenceController.java
@@ -19,8 +19,7 @@
 import android.app.admin.DevicePolicyManager;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-
-import androidx.fragment.app.Fragment;
+import android.content.Intent;
 
 import com.android.car.settings.common.FragmentController;
 
@@ -38,8 +37,8 @@
     }
 
     @Override
-    protected Fragment fragmentToOpen() {
-        return ChooseLockPinPasswordFragment.newPasswordInstance();
+    protected Intent activityToOpen() {
+        return new Intent(getContext(), ChooseLockPasswordActivity.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/security/PatternLockPreferenceController.java b/src/com/android/car/settings/security/PatternLockPreferenceController.java
index 1266bd7..c4f62e8 100644
--- a/src/com/android/car/settings/security/PatternLockPreferenceController.java
+++ b/src/com/android/car/settings/security/PatternLockPreferenceController.java
@@ -19,8 +19,7 @@
 import android.app.admin.DevicePolicyManager;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-
-import androidx.fragment.app.Fragment;
+import android.content.Intent;
 
 import com.android.car.settings.common.FragmentController;
 
@@ -36,8 +35,8 @@
     }
 
     @Override
-    protected Fragment fragmentToOpen() {
-        return ChooseLockPatternFragment.newInstance();
+    protected Intent activityToOpen() {
+        return new Intent(getContext(), ChooseLockPatternActivity.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/security/PinLockPreferenceController.java b/src/com/android/car/settings/security/PinLockPreferenceController.java
index d8169c0..a29e092 100644
--- a/src/com/android/car/settings/security/PinLockPreferenceController.java
+++ b/src/com/android/car/settings/security/PinLockPreferenceController.java
@@ -19,8 +19,7 @@
 import android.app.admin.DevicePolicyManager;
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-
-import androidx.fragment.app.Fragment;
+import android.content.Intent;
 
 import com.android.car.settings.common.FragmentController;
 
@@ -38,8 +37,8 @@
     }
 
     @Override
-    protected Fragment fragmentToOpen() {
-        return ChooseLockPinPasswordFragment.newPinInstance();
+    protected Intent activityToOpen() {
+        return new Intent(getContext(), ChooseLockPinActivity.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/security/SecurityEntryPreferenceController.java b/src/com/android/car/settings/security/SecurityEntryPreferenceController.java
index b8d000c..d60f4b3 100644
--- a/src/com/android/car/settings/security/SecurityEntryPreferenceController.java
+++ b/src/com/android/car/settings/security/SecurityEntryPreferenceController.java
@@ -46,6 +46,6 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return mUserManager.isGuestUser() ? DISABLED_FOR_USER : AVAILABLE;
+        return mUserManager.isGuestUser() ? DISABLED_FOR_PROFILE : AVAILABLE;
     }
 }
diff --git a/src/com/android/car/settings/security/SettingsScreenLockActivity.java b/src/com/android/car/settings/security/SettingsScreenLockActivity.java
index 5bcac43..13c3e2d 100644
--- a/src/com/android/car/settings/security/SettingsScreenLockActivity.java
+++ b/src/com/android/car/settings/security/SettingsScreenLockActivity.java
@@ -16,92 +16,60 @@
 
 package com.android.car.settings.security;
 
+import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
+import android.content.Intent;
 import android.os.Bundle;
-import android.os.UserHandle;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 
-import com.android.car.settings.R;
 import com.android.car.settings.common.BaseCarSettingsActivity;
-import com.android.car.settings.common.Logger;
-import com.android.internal.widget.LockPatternUtils;
-import com.android.internal.widget.LockscreenCredential;
 
 /**
- * Activity for setting screen locks
+ * Full screen wrapper activity for setting screen locks. Intended to be used by external intents
+ * to set up or change the user's screen lock (not used by settings itself).
  */
-public class SettingsScreenLockActivity extends BaseCarSettingsActivity implements
-        CheckLockListener {
+public class SettingsScreenLockActivity extends BaseCarSettingsActivity {
 
-    private static final Logger LOG = new Logger(SettingsScreenLockActivity.class);
-
-    private int mPasswordQuality;
+    private static final int LOCK_CHECK = 14;
 
     @Override
     @Nullable
     protected Fragment getInitialFragment() {
-        Fragment currentFragment = getCurrentFragment();
-        if (currentFragment != null) {
-            return currentFragment;
-        }
-
-        mPasswordQuality = new LockPatternUtils(this).getKeyguardStoredPasswordQuality(
-                UserHandle.myUserId());
-
-        Fragment fragment;
-        switch (mPasswordQuality) {
-            case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
-                fragment = new ChooseLockTypeFragment();
-                break;
-            case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
-                fragment = new ConfirmLockPatternFragment();
-                break;
-            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
-            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
-                fragment = ConfirmLockPinPasswordFragment.newPinInstance();
-                break;
-            case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
-            case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
-                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
-                break;
-            default:
-                LOG.e("Unexpected password quality: " + String.valueOf(mPasswordQuality));
-                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
-        }
-
-        Bundle bundle = fragment.getArguments();
-        if (bundle == null) {
-            bundle = new Bundle();
-        }
-        bundle.putInt(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
-        fragment.setArguments(bundle);
-        return fragment;
+        return null;
     }
 
     @Override
-    public void onLockVerified(LockscreenCredential lock) {
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Intent intent = new Intent(this, VerifyLockChangeActivity.class);
+        startActivityForResult(intent, LOCK_CHECK);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode != LOCK_CHECK) {
+            return;
+        }
+        if (resultCode != Activity.RESULT_OK) {
+            finish();
+            return;
+        }
         Fragment fragment = new ChooseLockTypeFragment();
         Bundle bundle = fragment.getArguments();
         if (bundle == null) {
             bundle = new Bundle();
         }
-        bundle.putParcelable(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, lock);
-        bundle.putInt(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
+        if (data != null) {
+            bundle.putParcelable(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK,
+                    data.getParcelableExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK));
+            bundle.putInt(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY,
+                    data.getIntExtra(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY,
+                            DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED));
+        }
         fragment.setArguments(bundle);
-
-        // Intentionally not using launchFragment(), since we do not want to add to the back stack.
-        getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.fragment_container, fragment)
-                .commit();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        PasswordHelper.zeroizeCredentials();
+        launchFragment(fragment);
     }
 }
diff --git a/src/com/android/car/settings/security/VerifyLockChangeActivity.java b/src/com/android/car/settings/security/VerifyLockChangeActivity.java
new file mode 100644
index 0000000..d5c2639
--- /dev/null
+++ b/src/com/android/car/settings/security/VerifyLockChangeActivity.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import android.content.Intent;
+import android.os.UserHandle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockscreenCredential;
+
+/**
+ * Activity for verifying current screen lock before allowing it to be changed.
+ *
+ * This activity differs from {@link CheckLockActivity}, as it provides screen lock data to the
+ * caller. Because of this sensitive data passing, this activity should not be externally
+ * accessible - external applications should use either {@link CheckLockActivity} or
+ * {@link SettingsScreenLockActivity} (depending on their use case).
+ */
+public class VerifyLockChangeActivity extends BaseCarSettingsActivity implements CheckLockListener {
+    private int mPasswordQuality;
+
+    @Override
+    @Nullable
+    protected Fragment getInitialFragment() {
+        Fragment currentFragment = getCurrentFragment();
+        if (currentFragment != null) {
+            return currentFragment;
+        }
+
+        mPasswordQuality = new LockPatternUtils(this).getKeyguardStoredPasswordQuality(
+                UserHandle.myUserId());
+
+        Fragment lockFragment = ConfirmPasswordFragmentFactory.getFragment(/* context= */ this);
+        if (lockFragment == null) {
+            // User has not set a password
+            setResult(RESULT_OK);
+            finish();
+        }
+        return lockFragment;
+    }
+
+    @Override
+    public void onLockVerified(LockscreenCredential lock) {
+        Intent data = new Intent();
+        data.putExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, lock);
+        data.putExtra(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
+        setResult(RESULT_OK, data);
+        finish();
+    }
+
+    @Override
+    public void onDestroy() {
+        PasswordHelper.zeroizeCredentials();
+        super.onDestroy();
+    }
+}
diff --git a/src/com/android/car/settings/sound/RingtonePickerFragment.java b/src/com/android/car/settings/sound/RingtonePickerFragment.java
index e2ba2b8..83fbd89 100644
--- a/src/com/android/car/settings/sound/RingtonePickerFragment.java
+++ b/src/com/android/car/settings/sound/RingtonePickerFragment.java
@@ -22,12 +22,15 @@
 import android.view.View;
 import android.view.ViewTreeObserver;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.XmlRes;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.ui.toolbar.MenuItem;
+import com.android.car.ui.toolbar.ToolbarController;
 
 import java.util.Collections;
 import java.util.List;
@@ -66,15 +69,15 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
 
-        getToolbar().setTitle(getArguments().getCharSequence(RingtoneManager.EXTRA_RINGTONE_TITLE));
+        toolbar.setTitle(getArguments().getCharSequence(RingtoneManager.EXTRA_RINGTONE_TITLE));
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
 
         // Logic to scroll to the selected item. This needs to be done in a global layout listener
         // so that it can be triggered after the sound items added dynamically in the
@@ -83,7 +86,7 @@
                 new ViewTreeObserver.OnGlobalLayoutListener() {
                     @Override
                     public void onGlobalLayout() {
-                        // This should only be triggered once per resume.
+                        // This should only be triggered once per onViewCreated.
                         getListView().getViewTreeObserver().removeOnGlobalLayoutListener(this);
 
                         // There are various methods on the PreferenceFragment and RecyclerView
diff --git a/src/com/android/car/settings/sound/RingtonePreference.java b/src/com/android/car/settings/sound/RingtonePreference.java
index 21c36a5..5338734 100644
--- a/src/com/android/car/settings/sound/RingtonePreference.java
+++ b/src/com/android/car/settings/sound/RingtonePreference.java
@@ -17,7 +17,6 @@
 package com.android.car.settings.sound;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.res.TypedArray;
 import android.media.RingtoneManager;
 import android.util.AttributeSet;
@@ -48,7 +47,6 @@
                 RingtoneManager.TYPE_RINGTONE);
         mShowSilent = a.getBoolean(com.android.internal.R.styleable.RingtonePreference_showSilent,
                 true);
-        setIntent(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER));
         a.recycle();
     }
 
diff --git a/src/com/android/car/settings/sound/RingtonePreferenceController.java b/src/com/android/car/settings/sound/RingtonePreferenceController.java
index b3529c7..ca576b6 100644
--- a/src/com/android/car/settings/sound/RingtonePreferenceController.java
+++ b/src/com/android/car/settings/sound/RingtonePreferenceController.java
@@ -18,13 +18,14 @@
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
-import android.content.Intent;
 import android.media.AudioAttributes;
 import android.media.Ringtone;
 import android.media.RingtoneManager;
 import android.net.Uri;
+import android.os.Bundle;
 
-import com.android.car.settings.common.CarSettingActivities;
+import androidx.fragment.app.Fragment;
+
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
 
@@ -64,29 +65,30 @@
 
     @Override
     protected boolean handlePreferenceClicked(RingtonePreference preference) {
-        onPrepareRingtonePickerIntent(preference, preference.getIntent());
-        getContext().startActivity(preference.getIntent());
+        getFragmentController().launchFragment(createRingtonePickerFragment(preference));
         return true;
     }
 
     /**
-     * Prepares the intent to launch the ringtone picker. This can be modified
+     * Prepares the fragment to launch the ringtone picker. This can be modified
      * to adjust the parameters of the ringtone picker.
      */
-    private void onPrepareRingtonePickerIntent(RingtonePreference ringtonePreference,
-            Intent ringtonePickerIntent) {
-        ringtonePickerIntent.setClass(getContext(),
-                CarSettingActivities.RingtonePickerActivity.class);
-
-        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
-                ringtonePreference.getTitle());
-        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
-                ringtonePreference.getRingtoneType());
-        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,
+    private Fragment createRingtonePickerFragment(RingtonePreference ringtonePreference) {
+        Fragment fragment = new RingtonePickerFragment();
+        Bundle args = fragment.getArguments();
+        if (args == null) {
+            args = new Bundle();
+            fragment.setArguments(args);
+        }
+        args.putCharSequence(RingtoneManager.EXTRA_RINGTONE_TITLE, ringtonePreference.getTitle());
+        args.putInt(RingtoneManager.EXTRA_RINGTONE_TYPE, ringtonePreference.getRingtoneType());
+        args.putBoolean(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,
                 ringtonePreference.getShowSilent());
 
         // Allow playback in external activity.
-        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_AUDIO_ATTRIBUTES_FLAGS,
+        args.putInt(RingtoneManager.EXTRA_RINGTONE_AUDIO_ATTRIBUTES_FLAGS,
                 AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY);
+
+        return fragment;
     }
 }
diff --git a/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java b/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java
index 5470825..5ea34a5 100644
--- a/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java
+++ b/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java
@@ -22,12 +22,9 @@
 import android.car.CarNotConnectedException;
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.media.CarAudioManager;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.IBinder;
 import android.os.Looper;
 import android.util.SparseArray;
 
@@ -99,48 +96,42 @@
                 }
             };
 
-    private final ServiceConnection mServiceConnection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            try {
-                mCarAudioManager = (CarAudioManager) mCar.getCarManager(Car.AUDIO_SERVICE);
-                int volumeGroupCount = mCarAudioManager.getVolumeGroupCount();
-                cleanUpVolumePreferences();
-                // Populates volume slider items from volume groups to UI.
-                for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
-                    VolumeItem volumeItem = getVolumeItemForUsages(
-                            mCarAudioManager.getUsagesForVolumeGroupId(groupId));
-                    SeekBarPreference volumePreference = createVolumeSeekBarPreference(
-                            groupId, volumeItem.getUsage(), volumeItem.getIcon(),
-                            volumeItem.getTitle());
-                    mVolumePreferences.add(volumePreference);
-                }
-                mCarAudioManager.registerCarVolumeCallback(mVolumeChangeCallback);
-
-                refreshUi();
-            } catch (CarNotConnectedException e) {
-                LOG.e("Car is not connected!", e);
-            }
-        }
-
-        /** Cleanup audio related fields when car is disconnected. */
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            cleanupAudioManager();
-        }
-    };
-
     private Car mCar;
     private CarAudioManager mCarAudioManager;
 
     public VolumeSettingsPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController,
             CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions, Car.createCar(context),
+                new VolumeSettingsRingtoneManager(context));
+    }
+
+    @VisibleForTesting
+    VolumeSettingsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions, Car car,
+            VolumeSettingsRingtoneManager ringtoneManager) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mCar = Car.createCar(getContext(), mServiceConnection);
+        mCar = car;
+        mRingtoneManager = ringtoneManager;
         mVolumeItems = VolumeItemParser.loadAudioUsageItems(context, carVolumeItemsXml());
-        mRingtoneManager = new VolumeSettingsRingtoneManager(getContext());
         mUiHandler = new Handler(Looper.getMainLooper());
+
+        mCarAudioManager = (CarAudioManager) mCar.getCarManager(Car.AUDIO_SERVICE);
+        if (mCarAudioManager != null) {
+            int volumeGroupCount = mCarAudioManager.getVolumeGroupCount();
+            cleanUpVolumePreferences();
+            // Populates volume slider items from volume groups to UI.
+            for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
+                VolumeItem volumeItem = getVolumeItemForUsages(
+                        mCarAudioManager.getUsagesForVolumeGroupId(groupId));
+                SeekBarPreference volumePreference = createVolumeSeekBarPreference(
+                        groupId, volumeItem.getUsage(), volumeItem.getIcon(),
+                        volumeItem.getTitle());
+                mVolumePreferences.add(volumePreference);
+            }
+            mCarAudioManager.registerCarVolumeCallback(mVolumeChangeCallback);
+        }
     }
 
     @Override
@@ -148,16 +139,11 @@
         return PreferenceGroup.class;
     }
 
-    /** Connect to car on create. */
-    @Override
-    protected void onCreateInternal() {
-        mCar.connect();
-    }
-
     /** Disconnect from car on destroy. */
     @Override
     protected void onDestroyInternal() {
         mCar.disconnect();
+        cleanupAudioManager();
     }
 
     @Override
diff --git a/src/com/android/car/settings/storage/StorageAsyncLoader.java b/src/com/android/car/settings/storage/StorageAsyncLoader.java
index e98a7f7..5d71d99 100644
--- a/src/com/android/car/settings/storage/StorageAsyncLoader.java
+++ b/src/com/android/car/settings/storage/StorageAsyncLoader.java
@@ -32,7 +32,7 @@
 
 import com.android.car.settings.common.AsyncLoader;
 import com.android.car.settings.common.Logger;
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.settingslib.applications.StorageStatsSource;
 
 import java.io.IOException;
@@ -50,20 +50,20 @@
 
     private final StorageStatsSource mStatsManager;
     private final PackageManager mPackageManager;
-    private final UserHelper mUserHelper;
+    private final ProfileHelper mProfileHelper;
 
     public StorageAsyncLoader(Context context, StorageStatsSource source) {
         super(context);
         mStatsManager = source;
         mPackageManager = context.getPackageManager();
-        mUserHelper = UserHelper.getInstance(context);
+        mProfileHelper = ProfileHelper.getInstance(context);
     }
 
     @Override
     public SparseArray<AppsStorageResult> loadInBackground() {
         ArraySet<String> seenPackages = new ArraySet<>();
         SparseArray<AppsStorageResult> result = new SparseArray<>();
-        List<UserInfo> infos = mUserHelper.getAllUsers();
+        List<UserInfo> infos = mProfileHelper.getAllProfiles();
         for (int i = 0, userCount = infos.size(); i < userCount; i++) {
             UserInfo info = infos.get(i);
             result.put(info.id, getStorageResultForUser(info.id, seenPackages));
diff --git a/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java b/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java
index e26db97..6799d96 100644
--- a/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java
+++ b/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.common.FragmentController;
@@ -34,8 +35,16 @@
 
     public BluetoothMacAddressPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        this(context, preferenceKey, fragmentController, uxRestrictions,
+                BluetoothAdapter.getDefaultAdapter());
+    }
+
+    @VisibleForTesting
+    BluetoothMacAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions,
+            BluetoothAdapter bluetoothAdapter) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        mBluetoothAdapter = bluetoothAdapter;
     }
 
     @Override
diff --git a/src/com/android/car/settings/system/FactoryResetAccountsPreferenceController.java b/src/com/android/car/settings/system/FactoryResetAccountsPreferenceController.java
new file mode 100644
index 0000000..3cf1f99
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetAccountsPreferenceController.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.system;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiPreference;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Displays the currently signed in accounts on the vehicle to inform the user that they will be
+ * removed during a factory reset.
+ */
+public class FactoryResetAccountsPreferenceController
+        extends PreferenceController<PreferenceGroup> {
+
+    private static final Logger LOG = new Logger(FactoryResetAccountsPreferenceController.class);
+
+    private final Map<Account, Preference> mAccountPreferenceMap = new ArrayMap<>();
+
+    public FactoryResetAccountsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().addPreference(
+                createPreference(getContext().getString(R.string.factory_reset_accounts),
+                        /* icon= */ null));
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        // Refresh the accounts in the off chance an account was added or removed while stopped.
+        Set<Account> accountsToRemove = new HashSet<>(mAccountPreferenceMap.keySet());
+        List<UserInfo> profiles = UserManager.get(getContext()).getProfiles(UserHandle.myUserId());
+        for (UserInfo profile : profiles) {
+            UserHandle userHandle = new UserHandle(profile.id);
+            AuthenticatorDescription[] descriptions = AccountManager.get(
+                    getContext()).getAuthenticatorTypesAsUser(profile.id);
+            Account[] accounts = AccountManager.get(getContext()).getAccountsAsUser(profile.id);
+            for (Account account : accounts) {
+                AuthenticatorDescription description = null;
+                for (AuthenticatorDescription desc : descriptions) {
+                    if (account.type.equals(desc.type)) {
+                        description = desc;
+                        break;
+                    }
+                }
+                if (description == null) {
+                    LOG.w("No descriptor for account name=" + account.name + " type="
+                            + account.type);
+                    continue;
+                }
+
+                accountsToRemove.remove(account);
+                if (!mAccountPreferenceMap.containsKey(account)) {
+                    Preference accountPref = createPreference(account.name,
+                            getAccountIcon(description, userHandle));
+                    mAccountPreferenceMap.put(account, accountPref);
+                    preferenceGroup.addPreference(accountPref);
+                }
+            }
+        }
+
+        for (Account accountToRemove : accountsToRemove) {
+            preferenceGroup.removePreference(mAccountPreferenceMap.get(accountToRemove));
+        }
+
+        // If the only preference is the title, hide the group.
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 1);
+    }
+
+    private Drawable getAccountIcon(AuthenticatorDescription description, UserHandle userHandle) {
+        Drawable icon = null;
+        try {
+            if (description.iconId != 0) {
+                Context authContext = getContext().createPackageContextAsUser(
+                        description.packageName, /* flags= */ 0, userHandle);
+                icon = getContext().getPackageManager().getUserBadgedIcon(
+                        authContext.getDrawable(description.iconId), userHandle);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.w("Bad package name for account type " + description.type, e);
+        } catch (Resources.NotFoundException e) {
+            LOG.w("Invalid icon id for account type " + description.type, e);
+        }
+        if (icon == null) {
+            icon = getContext().getPackageManager().getDefaultActivityIcon();
+        }
+        return icon;
+    }
+
+    private Preference createPreference(String title, @Nullable Drawable icon) {
+        CarUiPreference preference = new CarUiPreference(getContext());
+        preference.setTitle(title);
+        preference.setIcon(icon);
+        preference.setSelectable(false);
+        preference.setSingleLineTitle(false);
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/system/FactoryResetConfirmFragment.java b/src/com/android/car/settings/system/FactoryResetConfirmFragment.java
new file mode 100644
index 0000000..7a1e2b1
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetConfirmFragment.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.system;
+
+import android.app.ActivityManager;
+import android.app.ProgressDialog;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.service.oemlock.OemLockManager;
+import android.service.persistentdata.PersistentDataBlockManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.ui.toolbar.MenuItem;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Presents the user with a final warning before issuing the request to reset the head unit to its
+ * default "factory" state.
+ */
+public class FactoryResetConfirmFragment extends SettingsFragment {
+
+    private MenuItem mClearConfirmButton;
+    @VisibleForTesting
+    AsyncTask<Void, Void, Void> mPersistentDataWipeTask;
+
+    private MenuItem.OnClickListener mFinalClickListener = i -> {
+        if (ActivityManager.isUserAMonkey()) {
+            return;
+        }
+
+        PersistentDataBlockManager pdbManager = requireContext().getSystemService(
+                PersistentDataBlockManager.class);
+        OemLockManager oemLockManager = requireContext().getSystemService(OemLockManager.class);
+        if (pdbManager != null && !oemLockManager.isOemUnlockAllowed()
+                && isDeviceProvisioned()) {
+            // If OEM unlock is allowed, the persistent data block will be wiped during the factory
+            // reset process. If disabled, it will be wiped here, unless the device is still being
+            // provisioned, in which case the persistent data block will be preserved.
+            mPersistentDataWipeTask = new WipePersistentDataBlockAsyncTask(pdbManager);
+            mPersistentDataWipeTask.execute();
+        } else {
+            resetEverything();
+        }
+    };
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.factory_reset_confirm_fragment;
+    }
+
+    @Override
+    protected List<MenuItem> getToolbarMenuItems() {
+        return Collections.singletonList(mClearConfirmButton);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mClearConfirmButton = new MenuItem.Builder(getContext())
+                .setTitle(R.string.factory_reset_confirm_button_text)
+                .setOnClickListener(mFinalClickListener)
+                .build();
+    }
+
+    @VisibleForTesting
+    ProgressDialog getProgressDialog() {
+        ProgressDialog progressDialog = new ProgressDialog(requireContext());
+        progressDialog.setIndeterminate(true);
+        progressDialog.setCancelable(false);
+        progressDialog.setTitle(requireContext().getString(R.string.factory_reset_progress_title));
+        progressDialog.setMessage(requireContext().getString(R.string.factory_reset_progress_text));
+        return progressDialog;
+    }
+
+    private boolean isDeviceProvisioned() {
+        return Settings.Global.getInt(requireContext().getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+    }
+
+    private void resetEverything() {
+        Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
+        intent.setPackage("android");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        intent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");
+        intent.putExtra(Intent.EXTRA_WIPE_ESIMS, shouldResetEsim());
+        requireActivity().sendBroadcast(intent);
+    }
+
+    private boolean shouldResetEsim() {
+        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(
+                requireContext());
+        return sharedPreferences.getBoolean(
+                requireContext().getString(R.string.pk_factory_reset_reset_esim), false);
+    }
+
+    private class WipePersistentDataBlockAsyncTask extends AsyncTask<Void, Void, Void> {
+        private final PersistentDataBlockManager mPdbManager;
+        private ProgressDialog mProgressDialog;
+
+        WipePersistentDataBlockAsyncTask(PersistentDataBlockManager pdbManager) {
+            mPdbManager = pdbManager;
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            mPdbManager.wipe();
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void aVoid) {
+            mProgressDialog.hide();
+            if (getActivity() != null) {
+                resetEverything();
+            }
+        }
+
+        @Override
+        protected void onPreExecute() {
+            mProgressDialog = getProgressDialog();
+            mProgressDialog.show();
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/FactoryResetEntryPreferenceController.java b/src/com/android/car/settings/system/FactoryResetEntryPreferenceController.java
new file mode 100644
index 0000000..2c814d2
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetEntryPreferenceController.java
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_FACTORY_RESET;
+
+import static com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment.DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.widget.Toast;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment;
+
+/**
+ * Controller which determines if factory clear (aka "factory reset") should be displayed based on
+ * user status.
+ */
+public class FactoryResetEntryPreferenceController
+        extends PreferenceController<ClickableWhileDisabledPreference> {
+
+    private final UserManager mUserManager;
+
+    public FactoryResetEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUserManager = UserManager.get(context);
+    }
+
+    @Override
+    protected Class<ClickableWhileDisabledPreference> getPreferenceType() {
+        return ClickableWhileDisabledPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        getPreference().setDisabledClickListener(p ->
+                Toast.makeText(getContext(), getContext().getString(R.string.action_unavailable),
+                        Toast.LENGTH_LONG).show());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ClickableWhileDisabledPreference preference) {
+        if (mUserManager.hasUserRestriction(DISALLOW_FACTORY_RESET)) {
+            getFragmentController().showDialog(ActionDisabledByAdminDialogFragment.newInstance(
+                    DISALLOW_FACTORY_RESET, UserHandle.USER_SYSTEM),
+                    DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG);
+            return true;
+        }
+        return super.handlePreferenceClicked(preference);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return shouldDisable() ? AVAILABLE_FOR_VIEWING : AVAILABLE;
+    }
+
+    private boolean shouldDisable() {
+        if (!mUserManager.isAdminUser() && !isDemoUser()) {
+            // Disable for non-admin and non-demo users.
+            return true;
+        }
+        UserHandle userHandle = UserHandle.of(getContext().getUserId());
+        return mUserManager.hasBaseUserRestriction(DISALLOW_FACTORY_RESET, userHandle);
+    }
+
+    private boolean isDemoUser() {
+        return UserManager.isDeviceInDemoMode(getContext()) && mUserManager.isDemoUser();
+    }
+}
diff --git a/src/com/android/car/settings/system/FactoryResetEsimPreferenceController.java b/src/com/android/car/settings/system/FactoryResetEsimPreferenceController.java
new file mode 100644
index 0000000..772bf04
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetEsimPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Factory reset specific version of {@link ResetEsimPreferenceController} that is only available if
+ * the system property {@code masterclear.allow_retain_esim_profiles_after_fdr} is also true.
+ */
+public class FactoryResetEsimPreferenceController extends ResetEsimPreferenceController {
+
+    @VisibleForTesting
+    static final String KEY_SHOW_ESIM_RESET_CHECKBOX =
+            "masterclear.allow_retain_esim_profiles_after_fdr";
+
+    public FactoryResetEsimPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        int status = super.getAvailabilityStatus();
+        if (status == AVAILABLE) {
+            return SystemProperties.get(KEY_SHOW_ESIM_RESET_CHECKBOX,
+                    Boolean.FALSE.toString()).equals(Boolean.TRUE.toString()) ? AVAILABLE
+                    : UNSUPPORTED_ON_DEVICE;
+        }
+        return status;
+    }
+}
diff --git a/src/com/android/car/settings/system/FactoryResetFragment.java b/src/com/android/car/settings/system/FactoryResetFragment.java
new file mode 100644
index 0000000..0fdc362
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetFragment.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewTreeObserver;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.security.CheckLockActivity;
+import com.android.car.ui.toolbar.MenuItem;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Presents the user with the option to reset the head unit to its default "factory" state. If a
+ * user confirms, the user is first required to authenticate and then presented with a secondary
+ * confirmation: {@link FactoryResetConfirmFragment}. The user must scroll to the bottom of the page
+ * before proceeding.
+ */
+public class FactoryResetFragment extends SettingsFragment implements ActivityResultCallback {
+
+    // Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
+    @VisibleForTesting
+    static final int CHECK_LOCK_REQUEST_CODE = 88;
+
+    private MenuItem mFactoryResetButton;
+
+    @Override
+    public List<MenuItem> getToolbarMenuItems() {
+        return Collections.singletonList(mFactoryResetButton);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mFactoryResetButton = new MenuItem.Builder(getContext())
+                .setTitle(R.string.factory_reset_button_text)
+                .setEnabled(false)
+                .setOnClickListener(i ->
+                        startActivityForResult(new Intent(getContext(), CheckLockActivity.class),
+                                CHECK_LOCK_REQUEST_CODE, /* callback= */ FactoryResetFragment.this))
+                .build();
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.factory_reset_fragment;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        RecyclerView recyclerView = getListView();
+        recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(
+                new ViewTreeObserver.OnGlobalLayoutListener() {
+                    @Override
+                    public void onGlobalLayout() {
+                        mFactoryResetButton.setEnabled(isAtEnd());
+                        recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                    }
+                });
+        recyclerView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
+            if (isAtEnd()) {
+                mFactoryResetButton.setEnabled(true);
+            }
+        });
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode == CHECK_LOCK_REQUEST_CODE && resultCode == RESULT_OK) {
+            launchFragment(new FactoryResetConfirmFragment());
+        }
+    }
+
+    /** Returns {@code true} if the RecyclerView is completely displaying the last item. */
+    private boolean isAtEnd() {
+        RecyclerView recyclerView = getListView();
+        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
+        if (layoutManager == null || layoutManager.getChildCount() == 0) {
+            return true;
+        }
+
+        int childCount = layoutManager.getChildCount();
+        View lastVisibleChild = layoutManager.getChildAt(childCount - 1);
+
+        // The list has reached the bottom if the last child that is visible is the last item
+        // in the list and it's fully shown.
+        return layoutManager.getPosition(lastVisibleChild) == (layoutManager.getItemCount() - 1)
+                && layoutManager.getDecoratedBottom(lastVisibleChild) <= layoutManager.getHeight();
+    }
+}
diff --git a/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceController.java b/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceController.java
new file mode 100644
index 0000000..bc2fce8
--- /dev/null
+++ b/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceController.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.profiles.ProfileHelper;
+
+/**
+ * Displays a warning message on the factory reset screen when multiple switchable profiles
+ * are present on the vehicle.
+ */
+public class FactoryResetOtherProfilesPresentPreferenceController extends
+        PreferenceController<Preference> {
+
+    public FactoryResetOtherProfilesPresentPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        ProfileHelper profileHelper = ProfileHelper.getInstance(getContext());
+        preference.setVisible(!profileHelper.getAllSwitchableProfiles().isEmpty());
+    }
+}
diff --git a/src/com/android/car/settings/system/HardwareInfoPreferenceController.java b/src/com/android/car/settings/system/HardwareInfoPreferenceController.java
index 55cb95f..ac6ef2e 100644
--- a/src/com/android/car/settings/system/HardwareInfoPreferenceController.java
+++ b/src/com/android/car/settings/system/HardwareInfoPreferenceController.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.os.Build;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.car.settings.R;
@@ -52,8 +53,8 @@
                 getContext().getString(R.string.hardware_info_summary, getDeviceModel()));
     }
 
-    private static String getDeviceModel() {
-        FutureTask<String> msvSuffixTask = new FutureTask<>(() -> DeviceInfoUtils.getMsvSuffix());
+    private String getDeviceModel() {
+        FutureTask<String> msvSuffixTask = createMsvSuffixTask();
 
         msvSuffixTask.run();
         try {
@@ -69,4 +70,9 @@
         // it's better to return model name.
         return Build.MODEL;
     }
+
+    @VisibleForTesting
+    FutureTask<String> createMsvSuffixTask() {
+        return new FutureTask<>(() -> DeviceInfoUtils.getMsvSuffix());
+    }
 }
diff --git a/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java b/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java
deleted file mode 100644
index 5297a21..0000000
--- a/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.util.ArrayMap;
-
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.ui.preference.CarUiPreference;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Displays the currently signed in accounts on the vehicle to inform the user that they will be
- * removed during a factory reset.
- */
-public class MasterClearAccountsPreferenceController extends PreferenceController<PreferenceGroup> {
-
-    private static final Logger LOG = new Logger(MasterClearAccountsPreferenceController.class);
-
-    private final Map<Account, Preference> mAccountPreferenceMap = new ArrayMap<>();
-
-    public MasterClearAccountsPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<PreferenceGroup> getPreferenceType() {
-        return PreferenceGroup.class;
-    }
-
-    @Override
-    protected void onCreateInternal() {
-        getPreference().addPreference(
-                createPreference(getContext().getString(R.string.master_clear_accounts), /* icon= */
-                        null));
-    }
-
-    @Override
-    protected void updateState(PreferenceGroup preferenceGroup) {
-        // Refresh the accounts in the off chance an account was added or removed while stopped.
-        Set<Account> accountsToRemove = new HashSet<>(mAccountPreferenceMap.keySet());
-        List<UserInfo> profiles = UserManager.get(getContext()).getProfiles(UserHandle.myUserId());
-        for (UserInfo profile : profiles) {
-            UserHandle userHandle = new UserHandle(profile.id);
-            AuthenticatorDescription[] descriptions = AccountManager.get(
-                    getContext()).getAuthenticatorTypesAsUser(profile.id);
-            Account[] accounts = AccountManager.get(getContext()).getAccountsAsUser(profile.id);
-            for (Account account : accounts) {
-                AuthenticatorDescription description = null;
-                for (AuthenticatorDescription desc : descriptions) {
-                    if (account.type.equals(desc.type)) {
-                        description = desc;
-                        break;
-                    }
-                }
-                if (description == null) {
-                    LOG.w("No descriptor for account name=" + account.name + " type="
-                            + account.type);
-                    continue;
-                }
-
-                accountsToRemove.remove(account);
-                if (!mAccountPreferenceMap.containsKey(account)) {
-                    Preference accountPref = createPreference(account.name,
-                            getAccountIcon(description, userHandle));
-                    mAccountPreferenceMap.put(account, accountPref);
-                    preferenceGroup.addPreference(accountPref);
-                }
-            }
-        }
-
-        for (Account accountToRemove : accountsToRemove) {
-            preferenceGroup.removePreference(mAccountPreferenceMap.get(accountToRemove));
-        }
-
-        // If the only preference is the title, hide the group.
-        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 1);
-    }
-
-    private Drawable getAccountIcon(AuthenticatorDescription description, UserHandle userHandle) {
-        Drawable icon = null;
-        try {
-            if (description.iconId != 0) {
-                Context authContext = getContext().createPackageContextAsUser(
-                        description.packageName, /* flags= */ 0, userHandle);
-                icon = getContext().getPackageManager().getUserBadgedIcon(
-                        authContext.getDrawable(description.iconId), userHandle);
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            LOG.w("Bad package name for account type " + description.type, e);
-        } catch (Resources.NotFoundException e) {
-            LOG.w("Invalid icon id for account type " + description.type, e);
-        }
-        if (icon == null) {
-            icon = getContext().getPackageManager().getDefaultActivityIcon();
-        }
-        return icon;
-    }
-
-    private Preference createPreference(String title, @Nullable Drawable icon) {
-        CarUiPreference preference = new CarUiPreference(getContext());
-        preference.setTitle(title);
-        preference.setIcon(icon);
-        preference.setSelectable(false);
-        preference.setSingleLineTitle(false);
-        return preference;
-    }
-}
diff --git a/src/com/android/car/settings/system/MasterClearConfirmFragment.java b/src/com/android/car/settings/system/MasterClearConfirmFragment.java
deleted file mode 100644
index e09085d..0000000
--- a/src/com/android/car/settings/system/MasterClearConfirmFragment.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import android.app.ActivityManager;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.service.oemlock.OemLockManager;
-import android.service.persistentdata.PersistentDataBlockManager;
-
-import androidx.preference.PreferenceManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Presents the user with a final warning before issuing the request to reset the head unit to its
- * default "factory" state.
- */
-public class MasterClearConfirmFragment extends SettingsFragment {
-
-    private MenuItem mClearConfirmButton;
-
-    private MenuItem.OnClickListener mFinalClickListener = i -> {
-        if (ActivityManager.isUserAMonkey()) {
-            return;
-        }
-
-        PersistentDataBlockManager pdbManager =
-                (PersistentDataBlockManager) requireContext().getSystemService(
-                        Context.PERSISTENT_DATA_BLOCK_SERVICE);
-        OemLockManager oemLockManager = (OemLockManager) requireContext().getSystemService(
-                Context.OEM_LOCK_SERVICE);
-        if (pdbManager != null && !oemLockManager.isOemUnlockAllowed()
-                && isDeviceProvisioned()) {
-            // If OEM unlock is allowed, the persistent data block will be wiped during the factory
-            // reset process. If disabled, it will be wiped here, unless the device is still being
-            // provisioned, in which case the persistent data block will be preserved.
-            new AsyncTask<Void, Void, Void>() {
-                private ProgressDialog mProgressDialog;
-
-                @Override
-                protected Void doInBackground(Void... params) {
-                    pdbManager.wipe();
-                    return null;
-                }
-
-                @Override
-                protected void onPostExecute(Void aVoid) {
-                    mProgressDialog.hide();
-                    if (getActivity() != null) {
-                        resetEverything();
-                    }
-                }
-
-                @Override
-                protected void onPreExecute() {
-                    mProgressDialog = getProgressDialog();
-                    mProgressDialog.show();
-                }
-            }.execute();
-        } else {
-            resetEverything();
-        }
-    };
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.master_clear_confirm_fragment;
-    }
-
-    @Override
-    protected List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mClearConfirmButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mClearConfirmButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.master_clear_confirm_button_text)
-                .setOnClickListener(mFinalClickListener)
-                .build();
-    }
-
-    private boolean isDeviceProvisioned() {
-        return Settings.Global.getInt(requireContext().getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
-    }
-
-    private ProgressDialog getProgressDialog() {
-        ProgressDialog progressDialog = new ProgressDialog(requireContext());
-        progressDialog.setIndeterminate(true);
-        progressDialog.setCancelable(false);
-        progressDialog.setTitle(requireContext().getString(R.string.master_clear_progress_title));
-        progressDialog.setMessage(requireContext().getString(R.string.master_clear_progress_text));
-        return progressDialog;
-    }
-
-    private void resetEverything() {
-        Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
-        intent.setPackage("android");
-        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        intent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");
-        intent.putExtra(Intent.EXTRA_WIPE_ESIMS, shouldResetEsim());
-        requireActivity().sendBroadcast(intent);
-    }
-
-    private boolean shouldResetEsim() {
-        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(
-                requireContext());
-        return sharedPreferences.getBoolean(
-                requireContext().getString(R.string.pk_master_clear_reset_esim), false);
-    }
-}
diff --git a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
deleted file mode 100644
index 13607a0..0000000
--- a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
+++ /dev/null
@@ -1,63 +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.
- */
-
-package com.android.car.settings.system;
-
-import static android.os.UserManager.DISALLOW_FACTORY_RESET;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.os.UserManager;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-
-/**
- * Controller which determines if master clear (aka "factory reset") should be displayed based on
- * user status.
- */
-public class MasterClearEntryPreferenceController extends PreferenceController<Preference> {
-
-    private final UserManager mUserManager;
-
-    public MasterClearEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mUserManager = UserManager.get(context);
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
-    }
-
-    private boolean isUserRestricted() {
-        return !(mUserManager.isAdminUser() || isDemoUser())
-                || mUserManager.hasUserRestriction(DISALLOW_FACTORY_RESET);
-    }
-
-    private boolean isDemoUser() {
-        return UserManager.isDeviceInDemoMode(getContext())
-                && mUserManager.isDemoUser();
-    }
-}
diff --git a/src/com/android/car/settings/system/MasterClearFragment.java b/src/com/android/car/settings/system/MasterClearFragment.java
deleted file mode 100644
index 0a49b9a..0000000
--- a/src/com/android/car/settings/system/MasterClearFragment.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static android.app.Activity.RESULT_OK;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.view.ViewTreeObserver;
-
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-import androidx.annotation.XmlRes;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ActivityResultCallback;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.security.CheckLockActivity;
-import com.android.car.ui.toolbar.MenuItem;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Presents the user with the option to reset the head unit to its default "factory" state. If a
- * user confirms, the user is first required to authenticate and then presented with a secondary
- * confirmation: {@link MasterClearConfirmFragment}. The user must scroll to the bottom of the page
- * before proceeding.
- */
-public class MasterClearFragment extends SettingsFragment implements ActivityResultCallback {
-
-    // Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
-    @VisibleForTesting
-    static final int CHECK_LOCK_REQUEST_CODE = 88;
-
-    private MenuItem mMasterClearButton;
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mMasterClearButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mMasterClearButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.master_clear_button_text)
-                .setEnabled(false)
-                .setOnClickListener(i ->
-                        startActivityForResult(new Intent(getContext(), CheckLockActivity.class),
-                                CHECK_LOCK_REQUEST_CODE, /* callback= */ MasterClearFragment.this))
-                .build();
-    }
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.master_clear_fragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        RecyclerView recyclerView = getListView();
-        recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(
-                new ViewTreeObserver.OnGlobalLayoutListener() {
-                    @Override
-                    public void onGlobalLayout() {
-                        mMasterClearButton.setEnabled(isAtEnd());
-                        recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-                    }
-                });
-        recyclerView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
-            if (isAtEnd()) {
-                mMasterClearButton.setEnabled(true);
-            }
-        });
-    }
-
-    @Override
-    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
-        if (requestCode == CHECK_LOCK_REQUEST_CODE && resultCode == RESULT_OK) {
-            launchFragment(new MasterClearConfirmFragment());
-        }
-    }
-
-    /** Returns {@code true} if the RecyclerView is completely displaying the last item. */
-    private boolean isAtEnd() {
-        RecyclerView recyclerView = getListView();
-        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
-        if (layoutManager == null || layoutManager.getChildCount() == 0) {
-            return true;
-        }
-
-        int childCount = layoutManager.getChildCount();
-        View lastVisibleChild = layoutManager.getChildAt(childCount - 1);
-
-        // The list has reached the bottom if the last child that is visible is the last item
-        // in the list and it's fully shown.
-        return layoutManager.getPosition(lastVisibleChild) == (layoutManager.getItemCount() - 1)
-                && layoutManager.getDecoratedBottom(lastVisibleChild) <= layoutManager.getHeight();
-    }
-}
diff --git a/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java b/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java
deleted file mode 100644
index 65297e3..0000000
--- a/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.settings.users.UserHelper;
-
-/**
- * Displays a warning message on the factory reset screen when multiple switchable users are present
- * on the vehicle.
- */
-public class MasterClearOtherUsersPresentPreferenceController extends
-        PreferenceController<Preference> {
-
-    public MasterClearOtherUsersPresentPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
-    }
-
-    @Override
-    protected void updateState(Preference preference) {
-        UserHelper userHelper = UserHelper.getInstance(getContext());
-        preference.setVisible(!userHelper.getAllSwitchableUsers().isEmpty());
-    }
-}
diff --git a/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java b/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java
deleted file mode 100644
index 7a695d0..0000000
--- a/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.os.SystemProperties;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.car.settings.common.FragmentController;
-
-/**
- * Factory reset specific version of {@link ResetEsimPreferenceController} that is only available if
- * the system property {@code masterclear.allow_retain_esim_profiles_after_fdr} is also true.
- */
-public class MasterClearResetEsimPreferenceController extends ResetEsimPreferenceController {
-
-    @VisibleForTesting
-    static final String KEY_SHOW_ESIM_RESET_CHECKBOX =
-            "masterclear.allow_retain_esim_profiles_after_fdr";
-
-    public MasterClearResetEsimPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected int getAvailabilityStatus() {
-        int status = super.getAvailabilityStatus();
-        if (status == AVAILABLE) {
-            return SystemProperties.get(KEY_SHOW_ESIM_RESET_CHECKBOX,
-                    Boolean.FALSE.toString()).equals(Boolean.TRUE.toString()) ? AVAILABLE
-                    : UNSUPPORTED_ON_DEVICE;
-        }
-        return status;
-    }
-}
diff --git a/src/com/android/car/settings/system/ResetAppPrefFragment.java b/src/com/android/car/settings/system/ResetAppPrefFragment.java
index 2985f4c..b332f0e 100644
--- a/src/com/android/car/settings/system/ResetAppPrefFragment.java
+++ b/src/com/android/car/settings/system/ResetAppPrefFragment.java
@@ -30,6 +30,7 @@
 import android.os.ServiceManager;
 import android.widget.Toast;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
@@ -49,6 +50,8 @@
     private static final Logger LOG = new Logger(ResetAppPrefFragment.class);
 
     private MenuItem mResetButton;
+    @VisibleForTesting
+    AsyncTask<Void, Void, Void> mResetTask;
 
     @Override
     @XmlRes
@@ -72,7 +75,8 @@
     }
 
     private void resetAppPreferences() {
-        new ResetTask(requireContext().getApplicationContext()).execute();
+        mResetTask = new ResetTask(requireContext().getApplicationContext());
+        mResetTask.execute();
     }
 
     private static class ResetTask extends AsyncTask<Void, Void, Void> {
@@ -139,7 +143,7 @@
             }
 
             // Cleanup.
-            ((AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE)).resetAllModes();
+            context.getSystemService(AppOpsManager.class).resetAllModes();
 
             return null;
         }
diff --git a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
index 349c2ae..8b4f817 100644
--- a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
@@ -57,6 +57,8 @@
     // Copied from com.android.settings.network.ApnSettings.
     @VisibleForTesting
     static final String RESTORE_CARRIERS_URI = "content://telephony/carriers/restore";
+    @VisibleForTesting
+    AsyncTask<Void, Void, Boolean> mEraseEsimAsyncTask;
 
     private MenuItem mResetButton;
 
@@ -86,7 +88,7 @@
             return;
         }
 
-        Context context = requireActivity().getApplicationContext();
+        Context context = getApplicationContext();
 
         ConnectivityManager connectivityManager = (ConnectivityManager)
                 context.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -132,7 +134,9 @@
         cleanUpSmsRawTable(context);
 
         if (shouldResetEsim()) {
-            new EraseEsimAsyncTask(getContext(), context.getPackageName(), this).execute();
+            mEraseEsimAsyncTask = new EraseEsimAsyncTask(getContext(), context.getPackageName(),
+                    this);
+            mEraseEsimAsyncTask.execute();
         } else {
             showCompletionToast(getContext());
         }
@@ -178,6 +182,11 @@
                 Toast.LENGTH_SHORT).show();
     }
 
+    @VisibleForTesting
+    Context getApplicationContext() {
+        return requireActivity().getApplicationContext();
+    }
+
     private static class EraseEsimAsyncTask extends AsyncTask<Void, Void, Boolean> {
 
         private final Context mContext;
diff --git a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
index ea6ff60..bf8b9fd 100644
--- a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
@@ -45,7 +45,7 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+        return isUserRestricted() ? DISABLED_FOR_PROFILE : AVAILABLE;
     }
 
     private boolean isUserRestricted() {
diff --git a/src/com/android/car/settings/system/ResetNetworkFragment.java b/src/com/android/car/settings/system/ResetNetworkFragment.java
index 2f6d403..59f3dd2 100644
--- a/src/com/android/car/settings/system/ResetNetworkFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkFragment.java
@@ -21,6 +21,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
@@ -39,7 +40,8 @@
 public class ResetNetworkFragment extends SettingsFragment {
 
     // Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
-    private static final int REQUEST_CODE = 123;
+    @VisibleForTesting
+    static final int REQUEST_CODE = 123;
 
     private MenuItem mResetButton;
 
diff --git a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
index fab9b03..2a076b9 100644
--- a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
@@ -44,8 +44,7 @@
     public ResetNetworkSubscriptionPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mSubscriptionManager = (SubscriptionManager) context.getSystemService(
-                Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
     }
 
     @Override
diff --git a/src/com/android/car/settings/system/SystemUpdatePreferenceController.java b/src/com/android/car/settings/system/SystemUpdatePreferenceController.java
index 09200f5..7841a2b 100644
--- a/src/com/android/car/settings/system/SystemUpdatePreferenceController.java
+++ b/src/com/android/car/settings/system/SystemUpdatePreferenceController.java
@@ -16,8 +16,6 @@
 
 package com.android.car.settings.system;
 
-import static android.content.Context.CARRIER_CONFIG_SERVICE;
-
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.content.Intent;
@@ -68,7 +66,7 @@
         if (!getContext().getResources().getBoolean(R.bool.config_show_system_update_settings)) {
             return UNSUPPORTED_ON_DEVICE;
         }
-        return mUserManager.isAdminUser() ? AVAILABLE : DISABLED_FOR_USER;
+        return mUserManager.isAdminUser() ? AVAILABLE : DISABLED_FOR_PROFILE;
     }
 
     @Override
@@ -103,8 +101,8 @@
 
     @Override
     protected boolean handlePreferenceClicked(Preference preference) {
-        CarrierConfigManager configManager = (CarrierConfigManager) getContext().getSystemService(
-                CARRIER_CONFIG_SERVICE);
+        CarrierConfigManager configManager = getContext().getSystemService(
+                CarrierConfigManager.class);
         PersistableBundle b = configManager.getConfig();
         if (b != null && b.getBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL)) {
             ciActionOnSysUpdate(b);
diff --git a/src/com/android/car/settings/system/TEST_MAPPING b/src/com/android/car/settings/system/TEST_MAPPING
deleted file mode 100644
index 61d8e3f..0000000
--- a/src/com/android/car/settings/system/TEST_MAPPING
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "auto-end-to-end-postsubmit": [
-    {
-      "name": "AndroidAutoUiTests",
-      "options" : [
-        {
-          "include-filter": "android.test.functional.auto.apps.SystemSettingTest"
-        },
-        // TODO b/142750988
-        {
-          "exclude-filter": "android.test.functional.auto.apps.SystemSettingTest#testResetAppsPreference"
-        }
-      ]
-    }
-  ]
-}
diff --git a/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java b/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java
index 571e7b7..ab1177a 100644
--- a/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java
+++ b/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java
@@ -32,6 +32,7 @@
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.Logger;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
 
 import java.io.File;
 
@@ -50,6 +51,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
         final String licenseHtmlPath =
                 SystemProperties.get(PROPERTY_LICENSE_PATH, DEFAULT_LICENSE_PATH);
diff --git a/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java b/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java
index 731f275..e726356 100644
--- a/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java
+++ b/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java
@@ -25,6 +25,7 @@
 import android.speech.tts.TtsEngines;
 import android.text.TextUtils;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceGroup;
 
 import com.android.car.settings.R;
@@ -41,14 +42,12 @@
 
     private final TtsEngines mEnginesHelper;
     private String mPreviousEngine;
-    private boolean mIsStarted;
     private TextToSpeech mTts;
 
     public PreferredEngineOptionsPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
-        mEnginesHelper = new TtsEngines(getContext());
-        mIsStarted = false;
+        mEnginesHelper = createEnginesHelper();
     }
 
     @Override
@@ -62,7 +61,7 @@
      */
     @Override
     protected void onCreateInternal() {
-        mTts = new TextToSpeech(getContext(), /* listener= */ null);
+        mTts = createTts(/* listener= */ null, /* engine= */ null);
 
         for (TextToSpeech.EngineInfo engine : mEnginesHelper.getEngines()) {
             CarUiPreference preference = new CarUiPreference(getContext());
@@ -72,7 +71,7 @@
             preference.setOnPreferenceClickListener(pref -> {
                 TextToSpeech.EngineInfo current = mEnginesHelper.getEngineInfo(
                         mTts.getCurrentEngine());
-                if (TextUtils.equals(engine.label, current.label)) {
+                if (areEnginesEqual(current, engine)) {
                     return false;
                 }
                 updateDefaultEngine(engine.name);
@@ -82,18 +81,6 @@
         }
     }
 
-    /** Note that the preference controller was started. */
-    @Override
-    protected void onStartInternal() {
-        mIsStarted = true;
-    }
-
-    /** Note that the preference controller was stopped. */
-    @Override
-    protected void onStopInternal() {
-        mIsStarted = false;
-    }
-
     /** Cleans up the TTS object and clears the preferences representing the TTS engines. */
     @Override
     protected void onDestroyInternal() {
@@ -108,7 +95,7 @@
         TextToSpeech.EngineInfo current = mEnginesHelper.getEngineInfo(mTts.getCurrentEngine());
         for (int i = 0; i < preference.getPreferenceCount(); i++) {
             CarUiPreference pref = (CarUiPreference) preference.getPreference(i);
-            if (pref.getTitle().equals(current.label)) {
+            if (areEnginesEqual(current, pref.getKey(), pref.getTitle())) {
                 pref.setSummary(R.string.text_to_speech_current_engine);
             } else {
                 pref.setSummary("");
@@ -116,6 +103,16 @@
         }
     }
 
+    private boolean areEnginesEqual(TextToSpeech.EngineInfo engine1,
+            TextToSpeech.EngineInfo engine2) {
+        return areEnginesEqual(engine1, engine2.name, engine2.label);
+    }
+
+    private boolean areEnginesEqual(TextToSpeech.EngineInfo engine, CharSequence name,
+            CharSequence label) {
+        return TextUtils.equals(engine.name, name) && TextUtils.equals(engine.label, label);
+    }
+
     private void updateDefaultEngine(String engineName) {
         LOG.d("Updating default synth to : " + engineName);
 
@@ -136,8 +133,8 @@
         // Step 3 is continued on #onUpdateEngine (below) which is called when
         // the app binds successfully to the engine.
         LOG.i("Updating engine : Attempting to connect to engine: " + engineName);
-        mTts = new TextToSpeech(getContext(), status -> {
-            if (mIsStarted) {
+        mTts = createTts(status -> {
+            if (isStarted()) {
                 onUpdateEngine(status);
                 refreshUi();
             }
@@ -150,7 +147,8 @@
      * for the engine if we successfully bound to it, or revert to the previous engine if we
      * didn't.
      */
-    private void onUpdateEngine(int status) {
+    @VisibleForTesting
+    void onUpdateEngine(int status) {
         if (status == TextToSpeech.SUCCESS) {
             LOG.d("Updating engine: Successfully bound to the engine: "
                     + mTts.getCurrentEngine());
@@ -161,9 +159,19 @@
             if (mPreviousEngine != null) {
                 // This is guaranteed to at least bind, since mPreviousEngine would be
                 // null if the previous bind to this engine failed.
-                mTts = new TextToSpeech(getContext(), /* listener= */ null, mPreviousEngine);
+                mTts = createTts(/* listener= */ null, mPreviousEngine);
             }
             mPreviousEngine = null;
         }
     }
+
+    @VisibleForTesting
+    TtsEngines createEnginesHelper() {
+        return new TtsEngines(getContext());
+    }
+
+    @VisibleForTesting
+    TextToSpeech createTts(TextToSpeech.OnInitListener listener, String engine) {
+        return new TextToSpeech(getContext(), listener, engine);
+    }
 }
diff --git a/src/com/android/car/settings/units/CarUnitsManager.java b/src/com/android/car/settings/units/CarUnitsManager.java
index 112faf3..af60a99 100644
--- a/src/com/android/car/settings/units/CarUnitsManager.java
+++ b/src/com/android/car/settings/units/CarUnitsManager.java
@@ -22,10 +22,7 @@
 import android.car.VehicleUnit;
 import android.car.hardware.CarPropertyConfig;
 import android.car.hardware.property.CarPropertyManager;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.ServiceConnection;
-import android.os.IBinder;
 import android.util.ArraySet;
 
 import com.android.car.settings.common.Logger;
@@ -38,24 +35,6 @@
     private static final Logger LOG = new Logger(CarUnitsManager.class);
     private static final int AREA_ID = 0;
 
-    private final ServiceConnection mServiceConnection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            try {
-                mCarPropertyManager =
-                        (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
-                mCarServiceListener.handleServiceConnected(mCarPropertyManager);
-            } catch (CarNotConnectedException e) {
-                LOG.e("Car is not connected!", e);
-            }
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            mCarServiceListener.handleServiceDisconnected();
-        }
-    };
-
     private Context mContext;
     private Car mCar;
     private CarPropertyManager mCarPropertyManager;
@@ -63,7 +42,9 @@
 
     public CarUnitsManager(Context context) {
         mContext = context;
-        mCar = Car.createCar(mContext, mServiceConnection);
+        mCar = Car.createCar(mContext);
+        mCarPropertyManager =
+                (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
     }
 
     /**
@@ -72,6 +53,7 @@
      */
     public void registerCarServiceListener(OnCarServiceListener listener) {
         mCarServiceListener = listener;
+        mCarServiceListener.handleServiceConnected(mCarPropertyManager);
     }
 
     /**
@@ -82,12 +64,11 @@
         mCarServiceListener = null;
     }
 
-    protected void connect() {
-        mCar.connect();
-    }
-
     protected void disconnect() {
         mCar.disconnect();
+        if (mCarServiceListener != null) {
+            mCarServiceListener.handleServiceDisconnected();
+        }
     }
 
     protected boolean isPropertyAvailable(int propertyId) {
diff --git a/src/com/android/car/settings/units/UnitsBasePreferenceController.java b/src/com/android/car/settings/units/UnitsBasePreferenceController.java
index 0563a73..1822326 100644
--- a/src/com/android/car/settings/units/UnitsBasePreferenceController.java
+++ b/src/com/android/car/settings/units/UnitsBasePreferenceController.java
@@ -102,8 +102,7 @@
     @CallSuper
     protected void onCreateInternal() {
         super.onCreateInternal();
-        mCarUnitsManager = new CarUnitsManager(getContext());
-        mCarUnitsManager.connect();
+        mCarUnitsManager = createCarUnitsManager();
         mCarUnitsManager.registerCarServiceListener(mOnCarServiceListener);
     }
 
@@ -173,6 +172,11 @@
         return mCarUnitsManager;
     }
 
+    @VisibleForTesting
+    CarUnitsManager createCarUnitsManager() {
+        return new CarUnitsManager(getContext());
+    }
+
     private Unit getUnitUsedByThisProperty() {
         Unit savedUnit = mCarUnitsManager.getUnitUsedByProperty(getPropertyId());
         if (savedUnit == null) {
diff --git a/src/com/android/car/settings/users/AddNewUserTask.java b/src/com/android/car/settings/users/AddNewUserTask.java
deleted file mode 100644
index 82ded0c..0000000
--- a/src/com/android/car/settings/users/AddNewUserTask.java
+++ /dev/null
@@ -1,101 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.user.CarUserManager;
-import android.car.user.UserCreationResult;
-import android.car.userlib.UserHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.AsyncTask;
-
-import com.android.car.settings.common.Logger;
-import com.android.internal.infra.AndroidFuture;
-
-import java.util.concurrent.ExecutionException;
-
-/**
- * Task to add a new user to the device
- */
-public class AddNewUserTask extends AsyncTask<String, Void, UserInfo> {
-    private static final Logger LOG = new Logger(AddNewUserTask.class);
-
-    private final Context mContext;
-    private final CarUserManager mCarUserManager;
-    private final AddNewUserListener mAddNewUserListener;
-
-    public AddNewUserTask(Context context, CarUserManager carUserManager,
-            AddNewUserListener addNewUserListener) {
-        mContext = context;
-        mCarUserManager = carUserManager;
-        mAddNewUserListener = addNewUserListener;
-    }
-
-    @Override
-    protected UserInfo doInBackground(String... userNames) {
-        AndroidFuture<UserCreationResult> future = mCarUserManager.createUser(userNames[0],
-                /* flags= */ 0);
-        try {
-            UserCreationResult result = future.get();
-            if (result.isSuccess()) {
-                UserInfo user = result.getUser();
-                if (user != null) {
-                    UserHelper.setDefaultNonAdminRestrictions(mContext, user, /* enable= */ true);
-                    UserHelper.assignDefaultIcon(mContext, user);
-                } else {
-                    LOG.wtf("Inconsistent state: successful future with null user - "
-                            + result.toString());
-                }
-                return user;
-            }
-        } catch (InterruptedException | ExecutionException e) {
-            if (e instanceof InterruptedException) {
-                Thread.currentThread().interrupt();
-            }
-            LOG.e("Error creating new user: ", e);
-        }
-        return null;
-    }
-
-    @Override
-    protected void onPreExecute() { }
-
-    @Override
-    protected void onPostExecute(UserInfo user) {
-        if (user != null) {
-            mAddNewUserListener.onUserAddedSuccess();
-            mCarUserManager.switchUser(user.id);
-        } else {
-            mAddNewUserListener.onUserAddedFailure();
-        }
-    }
-
-    /**
-     * Interface for getting notified when AddNewUserTask has been completed.
-     */
-    public interface AddNewUserListener {
-        /**
-         * Invoked in AddNewUserTask.onPostExecute after the user has been created successfully.
-         */
-        void onUserAddedSuccess();
-
-        /**
-         * Invoked in AddNewUserTask.onPostExecute if new user creation failed.
-         */
-        void onUserAddedFailure();
-    }
-}
diff --git a/src/com/android/car/settings/users/ChooseNewAdminFragment.java b/src/com/android/car/settings/users/ChooseNewAdminFragment.java
deleted file mode 100644
index 5bba3d3..0000000
--- a/src/com/android/car/settings/users/ChooseNewAdminFragment.java
+++ /dev/null
@@ -1,91 +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.
- */
-
-package com.android.car.settings.users;
-
-import static java.util.Objects.requireNonNull;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * This screen appears after the last admin on the device tries to delete themselves. (but only if
- * there are other users on the device)
- *
- * <p> It lets the Admin see a list of non-Admins on the device and choose a user from the list to
- * upgrade to Admin.
- *
- * <p> After new admin has been selected and upgraded, the old Admin is removed.
- */
-public class ChooseNewAdminFragment extends SettingsFragment {
-
-    private MenuItem mCancelButton;
-
-    /**
-     * Creates a new instance of {@link ChooseNewAdminFragment} that enables the last remaining
-     * admin to choose a new Admin from a list of Non-Admins.
-     *
-     * @param adminInfo Admin that will get removed after new admin has been designated.
-     */
-    public static ChooseNewAdminFragment newInstance(UserInfo adminInfo) {
-        ChooseNewAdminFragment usersListFragment = new ChooseNewAdminFragment();
-        Bundle bundle = new Bundle();
-        bundle.putParcelable(Intent.EXTRA_USER, adminInfo);
-        usersListFragment.setArguments(bundle);
-        return usersListFragment;
-    }
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mCancelButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mCancelButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.cancel)
-                .setOnClickListener(i -> requireActivity().onBackPressed())
-                .build();
-    }
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.choose_new_admin_fragment;
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        UserInfo adminInfo = requireNonNull(getArguments()).getParcelable(
-                Intent.EXTRA_USER);
-        use(ChooseNewAdminPreferenceController.class, R.string.pk_choose_new_admin).setAdminInfo(
-                adminInfo);
-    }
-}
diff --git a/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java b/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java
deleted file mode 100644
index 794e2e4..0000000
--- a/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java
+++ /dev/null
@@ -1,100 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.car.settings.common.FragmentController;
-
-/**
- * Business logic for when the last admin is about to be removed from the device and a new
- * administrator needs to be chosen.
- */
-public class ChooseNewAdminPreferenceController extends UsersBasePreferenceController {
-
-    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
-        UserInfo userToMakeAdmin = (UserInfo) arguments.get(
-                UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN);
-        assignNewAdminAndRemoveOldAdmin(userToMakeAdmin);
-        getFragmentController().goBack();
-    };
-
-    private UserInfo mAdminInfo;
-
-    public ChooseNewAdminPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        getPreferenceProvider().setIncludeCurrentUser(false);
-        getPreferenceProvider().setIncludeGuest(false);
-    }
-
-    /** Setter for the user info of the admin we're deleting. */
-    public void setAdminInfo(UserInfo adminInfo) {
-        mAdminInfo = adminInfo;
-    }
-
-    @Override
-    protected void checkInitialized() {
-        if (mAdminInfo == null) {
-            throw new IllegalStateException("Admin info should be set by this point");
-        }
-    }
-
-    @Override
-    protected void onCreateInternal() {
-        super.onCreateInternal();
-        ConfirmationDialogFragment dialogFragment =
-                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
-                        ConfirmationDialogFragment.TAG);
-
-        ConfirmationDialogFragment.resetListeners(
-                dialogFragment,
-                mConfirmListener,
-                /* rejectListener= */ null,
-                /* neutralListener= */ null);
-    }
-
-    @Override
-    protected void userClicked(UserInfo userToMakeAdmin) {
-        ConfirmationDialogFragment dialogFragment =
-                UsersDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
-                        mConfirmListener, /* rejectListener= */ null, userToMakeAdmin);
-        getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
-    }
-
-    @VisibleForTesting
-    void assignNewAdminAndRemoveOldAdmin(UserInfo userToMakeAdmin) {
-        getCarUserManagerHelper().grantAdminPermissions(userToMakeAdmin);
-        removeOldAdmin();
-    }
-
-    private void removeOldAdmin() {
-        Context context = getContext();
-        if (!UserHelper.getInstance(context).removeUser(context, mAdminInfo)) {
-            // If failed, need to show error dialog for users.
-            getFragmentController().showDialog(
-                    ErrorDialog.newInstance(R.string.delete_user_error_title), /* tag= */ null);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java b/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java
deleted file mode 100644
index 4d00fd9..0000000
--- a/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java
+++ /dev/null
@@ -1,71 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.ui.preference.CarUiTwoActionIconPreference;
-
-/** Business logic for the preference which opens the EditUserNameFragment. */
-public class EditUserNameEntryPreferenceController extends
-        UserDetailsBasePreferenceController<CarUiTwoActionIconPreference> {
-
-    private final UserHelper mUserHelper;
-
-    public EditUserNameEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mUserHelper = UserHelper.getInstance(getContext());
-    }
-
-    @Override
-    protected Class<CarUiTwoActionIconPreference> getPreferenceType() {
-        return CarUiTwoActionIconPreference.class;
-    }
-
-    @Override
-    protected void updateState(CarUiTwoActionIconPreference preference) {
-        preference.setOnSecondaryActionClickListener(() -> {
-            getFragmentController().launchFragment(EditUsernameFragment.newInstance(getUserInfo()));
-        });
-
-        Drawable icon = new UserIconProvider().getRoundedUserIcon(getUserInfo(), getContext());
-        preference.setIcon(icon);
-        preference.setTitle(UserUtils.getUserDisplayName(getContext(), getUserInfo()));
-
-        if (!mUserHelper.isCurrentProcessUser(getUserInfo())) {
-            preference.setSecondaryActionVisible(false);
-        }
-        preference.setSummary(getSummary());
-    }
-
-    private CharSequence getSummary() {
-        if (!getUserInfo().isInitialized()) {
-            return getContext().getString(R.string.user_summary_not_set_up);
-        }
-        if (getUserInfo().isAdmin()) {
-            return mUserHelper.isCurrentProcessUser(getUserInfo())
-                    ? getContext().getString(R.string.signed_in_admin_user)
-                    : getContext().getString(R.string.user_admin);
-        }
-        return null;
-    }
-}
diff --git a/src/com/android/car/settings/users/EditUsernameFragment.java b/src/com/android/car/settings/users/EditUsernameFragment.java
deleted file mode 100644
index 8674f9f..0000000
--- a/src/com/android/car/settings/users/EditUsernameFragment.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.car.settings.users;
-
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.View;
-import android.widget.EditText;
-
-import androidx.annotation.LayoutRes;
-import androidx.annotation.StringRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Enables user to edit their username.
- */
-public class EditUsernameFragment extends BaseFragment {
-
-    private static final String USER_NAME_SET = "user_name_set";
-
-    private UserInfo mUserInfo;
-
-    private EditText mUserNameEditText;
-    @VisibleForTesting UserManager mUserManager;
-    private MenuItem mOkButton;
-    private MenuItem mCancelButton;
-
-    /**
-     * Creates instance of EditUsernameFragment.
-     */
-    public static EditUsernameFragment newInstance(UserInfo userInfo) {
-        EditUsernameFragment
-                userSettingsFragment = new EditUsernameFragment();
-        Bundle bundle = new Bundle();
-        bundle.putParcelable(Intent.EXTRA_USER, userInfo);
-        userSettingsFragment.setArguments(bundle);
-        return userSettingsFragment;
-    }
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mCancelButton, mOkButton);
-    }
-
-    @Override
-    @LayoutRes
-    protected int getLayoutId() {
-        return R.layout.edit_username_fragment;
-    }
-
-    @Override
-    @StringRes
-    protected int getTitleId() {
-        return R.string.edit_user_name_title;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mUserInfo = getArguments().getParcelable(Intent.EXTRA_USER);
-
-        mCancelButton = new MenuItem.Builder(getContext())
-                .setTitle(android.R.string.cancel)
-                .setOnClickListener(i -> getActivity().onBackPressed())
-                .build();
-        mOkButton = new MenuItem.Builder(getContext())
-                .setTitle(android.R.string.ok)
-                .setOnClickListener(i -> {
-                    // Save new user's name.
-                    mUserManager.setUserName(mUserInfo.id,
-                            mUserNameEditText.getText().toString());
-                    Settings.Secure.putInt(getActivity().getContentResolver(),
-                            USER_NAME_SET, 1);
-                    getActivity().onBackPressed();
-                })
-                .build();
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-        mUserNameEditText = view.findViewById(R.id.user_name_text_edit);
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        if (mUserManager == null) {
-            mUserManager = UserManager.get(getContext());
-        }
-
-        configureUsernameEditing();
-    }
-
-    private void configureUsernameEditing() {
-        // Set the User's name.
-        mUserNameEditText.setText(mUserInfo.name);
-        mUserNameEditText.setEnabled(true);
-        mUserNameEditText.setSelectAllOnFocus(true);
-        mUserNameEditText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                if (TextUtils.isEmpty(s)) {
-                    mOkButton.setEnabled(false);
-                    mUserNameEditText.setError(getString(R.string.name_input_blank_error));
-                } else if (!TextUtils.isGraphic(s)) {
-                    mOkButton.setEnabled(false);
-                    mUserNameEditText.setError(getString(R.string.name_input_invalid_error));
-                } else {
-                    mOkButton.setEnabled(true);
-                    mUserNameEditText.setError(null);
-                }
-            }
-
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-            }
-        });
-    }
-}
diff --git a/src/com/android/car/settings/users/MakeAdminPreferenceController.java b/src/com/android/car/settings/users/MakeAdminPreferenceController.java
deleted file mode 100644
index c8027cb..0000000
--- a/src/com/android/car/settings/users/MakeAdminPreferenceController.java
+++ /dev/null
@@ -1,83 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.graphics.drawable.Drawable;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.ui.preference.CarUiTwoActionTextPreference;
-
-/** Business Logic for preference which promotes a regular user to an admin user. */
-public class MakeAdminPreferenceController extends
-        UserDetailsBasePreferenceController<CarUiTwoActionTextPreference> {
-
-    @VisibleForTesting
-    final ConfirmationDialogFragment.ConfirmListener mConfirmListener =
-            arguments -> {
-                UserInfo userToMakeAdmin = (UserInfo) arguments.get(
-                        UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN);
-                getCarUserManagerHelper().grantAdminPermissions(userToMakeAdmin);
-                getFragmentController().goBack();
-            };
-
-    public MakeAdminPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<CarUiTwoActionTextPreference> getPreferenceType() {
-        return CarUiTwoActionTextPreference.class;
-    }
-
-
-    /** Ensure that the listener is reset if the dialog was open during a configuration change. */
-    @Override
-    protected void onCreateInternal() {
-        super.onCreateInternal();
-        ConfirmationDialogFragment dialog =
-                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
-                        ConfirmationDialogFragment.TAG);
-
-        ConfirmationDialogFragment.resetListeners(
-                dialog,
-                mConfirmListener,
-                /* rejectListener= */ null,
-                /* neutralListener= */ null);
-    }
-
-    @Override
-    protected void updateState(CarUiTwoActionTextPreference preference) {
-        preference.setOnSecondaryActionClickListener(() -> {
-
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
-                            mConfirmListener, /* rejectListener= */ null, getUserInfo());
-
-            getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
-        });
-
-        Drawable icon = new UserIconProvider().getRoundedUserIcon(getUserInfo(), getContext());
-        preference.setIcon(icon);
-    }
-}
diff --git a/src/com/android/car/settings/users/PermissionsPreferenceController.java b/src/com/android/car/settings/users/PermissionsPreferenceController.java
deleted file mode 100644
index 422530c..0000000
--- a/src/com/android/car/settings/users/PermissionsPreferenceController.java
+++ /dev/null
@@ -1,128 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.userlib.CarUserManagerHelper;
-import android.content.Context;
-import android.os.UserManager;
-
-import androidx.annotation.StringRes;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.ui.preference.CarUiSwitchPreference;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Constructs and populates the permissions toggles for non admin users.
- *
- * <p>In order to add a new permission, it needs to be added to {@link
- * CarUserManagerHelper#OPTIONAL_NON_ADMIN_RESTRICTIONS} and the appropriate label needs to be added
- * to {@link #PERMISSIONS_LIST}.
- */
-public class PermissionsPreferenceController extends
-        UserDetailsBasePreferenceController<PreferenceGroup> {
-
-    private static class UserPermission {
-        private final String mPermissionKey;
-        @StringRes
-        private final int mPermissionTitle;
-
-        UserPermission(String key, int title) {
-            mPermissionKey = key;
-            mPermissionTitle = title;
-        }
-
-        public String getPermissionKey() {
-            return mPermissionKey;
-        }
-
-        public int getPermissionTitle() {
-            return mPermissionTitle;
-        }
-    }
-
-    @VisibleForTesting
-    static final String PERMISSION_TYPE_KEY = "permission_type_key";
-    private static final List<UserPermission> PERMISSIONS_LIST = new ArrayList<>();
-
-    // Add additional preferences to show here (in the order they should appear).
-    static {
-        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_ADD_USER,
-                R.string.create_user_permission_title));
-        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_OUTGOING_CALLS,
-                R.string.outgoing_calls_permission_title));
-        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_SMS,
-                R.string.sms_messaging_permission_title));
-        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_INSTALL_APPS,
-                R.string.install_apps_permission_title));
-        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_UNINSTALL_APPS,
-                R.string.uninstall_apps_permission_title));
-    }
-
-    private final List<SwitchPreference> mPermissionPreferences = new ArrayList<>();
-
-    public PermissionsPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-
-        for (UserPermission permission : PERMISSIONS_LIST) {
-            SwitchPreference preference = new CarUiSwitchPreference(context);
-            preference.setTitle(permission.getPermissionTitle());
-            preference.getExtras().putString(PERMISSION_TYPE_KEY, permission.getPermissionKey());
-            preference.setOnPreferenceChangeListener((pref, newValue) -> {
-                boolean granted = (boolean) newValue;
-                UserManager.get(context).setUserRestriction(
-                        pref.getExtras().getString(PERMISSION_TYPE_KEY),
-                        !granted,
-                        getUserInfo().getUserHandle());
-                return true;
-            });
-            mPermissionPreferences.add(preference);
-        }
-    }
-
-    @Override
-    protected Class<PreferenceGroup> getPreferenceType() {
-        return PreferenceGroup.class;
-    }
-
-    @Override
-    protected void onCreateInternal() {
-        super.onCreateInternal();
-        for (SwitchPreference switchPreference : mPermissionPreferences) {
-            getPreference().addPreference(switchPreference);
-        }
-    }
-
-    @Override
-    protected void updateState(PreferenceGroup preferenceGroup) {
-        for (SwitchPreference switchPreference : mPermissionPreferences) {
-            UserManager userManager = UserManager.get(getContext());
-            switchPreference.setChecked(
-                    !userManager.hasUserRestriction(
-                            switchPreference.getExtras().getString(PERMISSION_TYPE_KEY),
-                            getUserInfo().getUserHandle()));
-        }
-    }
-}
diff --git a/src/com/android/car/settings/users/UserDetailsBaseFragment.java b/src/com/android/car/settings/users/UserDetailsBaseFragment.java
deleted file mode 100644
index 0b98a79..0000000
--- a/src/com/android/car/settings/users/UserDetailsBaseFragment.java
+++ /dev/null
@@ -1,143 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.MenuItem;
-
-import java.util.Collections;
-import java.util.List;
-
-/** Common logic shared for controlling the action bar which contains a button to delete a user. */
-public abstract class UserDetailsBaseFragment extends SettingsFragment {
-    private UserManager mUserManager;
-    private UserInfo mUserInfo;
-    private MenuItem mDeleteButton;
-
-    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
-        String userType = arguments.getString(UsersDialogProvider.KEY_USER_TYPE);
-        if (userType.equals(UsersDialogProvider.LAST_ADMIN)) {
-            launchFragment(ChooseNewAdminFragment.newInstance(mUserInfo));
-        } else {
-            Context context = getContext();
-            if (UserHelper.getInstance(context).removeUser(context, mUserInfo)) {
-                getActivity().onBackPressed();
-            } else {
-                // If failed, need to show error dialog for users.
-                ErrorDialog.show(this, R.string.delete_user_error_title);
-            }
-        }
-    };
-
-    /** Adds user id to fragment arguments. */
-    protected static UserDetailsBaseFragment addUserIdToFragmentArguments(
-            UserDetailsBaseFragment fragment, int userId) {
-        Bundle bundle = new Bundle();
-        bundle.putInt(Intent.EXTRA_USER_ID, userId);
-        fragment.setArguments(bundle);
-        return fragment;
-    }
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mDeleteButton);
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        int userId = getArguments().getInt(Intent.EXTRA_USER_ID);
-        mUserManager = UserManager.get(getContext());
-        mUserInfo = UserUtils.getUserInfo(getContext(), userId);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        ConfirmationDialogFragment dialogFragment =
-                (ConfirmationDialogFragment) findDialogByTag(ConfirmationDialogFragment.TAG);
-        ConfirmationDialogFragment.resetListeners(
-                dialogFragment,
-                mConfirmListener,
-                /* rejectListener= */ null,
-                /* neutralListener= */ null);
-
-        // If the current user is not allowed to remove users, the user trying to be removed
-        // cannot be removed, or the current user is a demo user, do not show delete button.
-        boolean isVisible = !mUserManager.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER)
-                && mUserInfo.id != UserHandle.USER_SYSTEM
-                && !mUserManager.isDemoUser();
-        mDeleteButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.delete_button)
-                .setOnClickListener(i -> showConfirmRemoveUserDialog())
-                .setVisible(isVisible)
-                .build();
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        getToolbar().setTitle(getTitleText());
-    }
-
-    /** Make UserInfo available to subclasses. */
-    protected UserInfo getUserInfo() {
-        return mUserInfo;
-    }
-
-    /** Refresh UserInfo in case it becomes invalid. */
-    protected void refreshUserInfo() {
-        mUserInfo = UserUtils.getUserInfo(getContext(), mUserInfo.id);
-    }
-
-    /** Defines the text that should be shown in the action bar. */
-    protected abstract String getTitleText();
-
-    private void showConfirmRemoveUserDialog() {
-        UserHelper userHelper = UserHelper.getInstance(getContext());
-        boolean isLastUser = userHelper.getAllPersistentUsers().size() == 1;
-        boolean isLastAdmin = mUserInfo.isAdmin()
-                && userHelper.getAllAdminUsers().size() == 1;
-
-        ConfirmationDialogFragment dialogFragment;
-
-        if (isLastUser) {
-            dialogFragment = UsersDialogProvider.getConfirmRemoveLastUserDialogFragment(
-                    getContext(), mConfirmListener, /* rejectListener= */ null);
-        } else if (isLastAdmin) {
-            dialogFragment = UsersDialogProvider.getConfirmRemoveLastAdminDialogFragment(
-                    getContext(), mConfirmListener, /* rejectListener= */ null);
-        } else {
-            dialogFragment = UsersDialogProvider.getConfirmRemoveUserDialogFragment(getContext(),
-                    mConfirmListener, /* rejectListener= */ null);
-        }
-
-        dialogFragment.show(getFragmentManager(), ConfirmationDialogFragment.TAG);
-    }
-}
diff --git a/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java b/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java
deleted file mode 100644
index 6559a87..0000000
--- a/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java
+++ /dev/null
@@ -1,105 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.userlib.CarUserManagerHelper;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.UserInfo;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-
-/**
- * Common setup of all preference controllers related to user details.
- *
- * @param <V> the upper bound on the type of {@link Preference} on which the controller
- *            expects to operate.
- */
-public abstract class UserDetailsBasePreferenceController<V extends Preference> extends
-        PreferenceController<V> {
-
-    private final CarUserManagerHelper mCarUserManagerHelper;
-    private UserInfo mUserInfo;
-
-    private final BroadcastReceiver mUserUpdateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            refreshUserInfo();
-            refreshUi();
-        }
-    };
-
-    public UserDetailsBasePreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-    }
-
-    /** Sets the user info for which this preference controller operates. */
-    public void setUserInfo(UserInfo userInfo) {
-        mUserInfo = userInfo;
-    }
-
-    /** Gets the current user info. */
-    public UserInfo getUserInfo() {
-        return mUserInfo;
-    }
-
-    /** Refreshes the user info, since it might have changed. */
-    protected void refreshUserInfo() {
-        mUserInfo = UserUtils.getUserInfo(getContext(), mUserInfo.id);
-    }
-
-    @Override
-    protected void checkInitialized() {
-        if (mUserInfo == null) {
-            throw new IllegalStateException("UserInfo should be non-null by this point");
-        }
-    }
-
-    /** Registers a listener which updates the displayed user name when a user is modified. */
-    @Override
-    protected void onCreateInternal() {
-        registerForUserEvents();
-    }
-
-    /** Unregisters a listener which updates the displayed user name when a user is modified. */
-    @Override
-    protected void onDestroyInternal() {
-        unregisterForUserEvents();
-    }
-
-    private void registerForUserEvents() {
-        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_INFO_CHANGED);
-        getContext().registerReceiver(mUserUpdateReceiver, filter);
-    }
-
-    private void unregisterForUserEvents() {
-        getContext().unregisterReceiver(mUserUpdateReceiver);
-    }
-
-    /** Gets the car user manager helper. */
-    protected CarUserManagerHelper getCarUserManagerHelper() {
-        return mCarUserManagerHelper;
-    }
-}
diff --git a/src/com/android/car/settings/users/UserDetailsFragment.java b/src/com/android/car/settings/users/UserDetailsFragment.java
deleted file mode 100644
index 3306f22..0000000
--- a/src/com/android/car/settings/users/UserDetailsFragment.java
+++ /dev/null
@@ -1,107 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.internal.annotations.VisibleForTesting;
-
-/**
- * Shows details for a user with the ability to remove user and edit current user.
- */
-public class UserDetailsFragment extends UserDetailsBaseFragment {
-
-    private boolean mIsStarted;
-
-    /** Creates instance of UserDetailsFragment. */
-    public static UserDetailsFragment newInstance(int userId) {
-        return (UserDetailsFragment) UserDetailsBaseFragment.addUserIdToFragmentArguments(
-                new UserDetailsFragment(), userId);
-    }
-
-    @VisibleForTesting
-    final BroadcastReceiver mUserUpdateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            // Update the user info value, as it may have changed.
-            refreshUserInfo();
-            if (mIsStarted) {
-                // Update the text in the action bar when there is a user update.
-                getToolbar().setTitle(getTitleText());
-            }
-        }
-    };
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.user_details_fragment;
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        use(EditUserNameEntryPreferenceController.class,
-                R.string.pk_edit_user_name_entry).setUserInfo(getUserInfo());
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        registerForUserEvents();
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mIsStarted = true;
-        getToolbar().setTitle(getTitleText());
-    }
-
-    @Override
-    public void onStop() {
-        mIsStarted = false;
-        super.onStop();
-    }
-
-    @Override
-    public void onDestroy() {
-        unregisterForUserEvents();
-        super.onDestroy();
-    }
-
-    @Override
-    protected String getTitleText() {
-        return UserUtils.getUserDisplayName(getContext(), getUserInfo());
-    }
-
-    private void registerForUserEvents() {
-        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_INFO_CHANGED);
-        getContext().registerReceiver(mUserUpdateReceiver, filter);
-    }
-
-    private void unregisterForUserEvents() {
-        getContext().unregisterReceiver(mUserUpdateReceiver);
-    }
-}
diff --git a/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java b/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java
deleted file mode 100644
index 9671650..0000000
--- a/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java
+++ /dev/null
@@ -1,61 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.content.Context;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-
-/**
- * Business logic for the permissions fragment. This fragment is used when an admin user views the
- * user details of a non-admin user.
- */
-public class UserDetailsPermissionsFragment extends UserDetailsBaseFragment {
-
-    /**
-     * Creates instance of UserDetailsPermissionsFragment.
-     */
-    public static UserDetailsPermissionsFragment newInstance(int userId) {
-        return (UserDetailsPermissionsFragment) UserDetailsBaseFragment
-                .addUserIdToFragmentArguments(
-                new UserDetailsPermissionsFragment(), userId);
-    }
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.user_details_permissions_fragment;
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        use(MakeAdminPreferenceController.class, R.string.pk_make_user_admin).setUserInfo(
-                getUserInfo());
-        use(PermissionsPreferenceController.class, R.string.pk_user_permissions).setUserInfo(
-                getUserInfo());
-    }
-
-    @Override
-    protected String getTitleText() {
-        return getContext().getString(R.string.user_details_admin_title,
-                UserUtils.getUserDisplayName(getContext(), getUserInfo()));
-    }
-}
-
diff --git a/src/com/android/car/settings/users/UserGridRecyclerView.java b/src/com/android/car/settings/users/UserGridRecyclerView.java
deleted file mode 100644
index dbc6a3e..0000000
--- a/src/com/android/car/settings/users/UserGridRecyclerView.java
+++ /dev/null
@@ -1,572 +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.
- */
-
-package com.android.car.settings.users;
-
-import static android.os.UserManager.DISALLOW_ADD_USER;
-import static android.os.UserManager.SWITCHABILITY_STATUS_OK;
-
-import android.annotation.IntDef;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.car.Car;
-import android.car.user.CarUserManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.graphics.drawable.RoundedBitmapDrawable;
-import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.internal.util.UserIcons;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * Displays a GridLayout with icons for the users in the system to allow switching between users.
- * One of the uses of this is for the lock screen in auto.
- */
-public class UserGridRecyclerView extends RecyclerView {
-
-    private static final String MAX_USERS_LIMIT_REACHED_DIALOG_TAG =
-            "com.android.car.settings.users.MaxUsersLimitReachedDialog";
-    private static final String CONFIRM_CREATE_NEW_USER_DIALOG_TAG =
-            "com.android.car.settings.users.ConfirmCreateNewUserDialog";
-
-    private UserAdapter mAdapter;
-    private UserManager mUserManager;
-    private Context mContext;
-    private BaseFragment mBaseFragment;
-    private AddNewUserTask mAddNewUserTask;
-    private boolean mEnableAddUserButton;
-    private UserIconProvider mUserIconProvider;
-    private Car mCar;
-    private CarUserManager mCarUserManager;
-
-    private final BroadcastReceiver mUserUpdateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            onUsersUpdate();
-        }
-    };
-
-    public UserGridRecyclerView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        mContext = context;
-        mUserManager = UserManager.get(mContext);
-        mUserIconProvider = new UserIconProvider();
-        mEnableAddUserButton = true;
-        mCar = Car.createCar(mContext);
-        mCarUserManager = (CarUserManager) mCar.getCarManager(Car.CAR_USER_SERVICE);
-
-        addItemDecoration(new ItemSpacingDecoration(context.getResources().getDimensionPixelSize(
-                R.dimen.user_switcher_vertical_spacing_between_users)));
-    }
-
-    /**
-     * Register listener for any update to the users
-     */
-    @Override
-    public void onFinishInflate() {
-        super.onFinishInflate();
-        registerForUserEvents();
-    }
-
-    /**
-     * Unregisters listener checking for any change to the users
-     */
-    @Override
-    public void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        unregisterForUserEvents();
-        if (mAddNewUserTask != null) {
-            mAddNewUserTask.cancel(/* mayInterruptIfRunning= */ false);
-        }
-        if (mCar != null) {
-            mCar.disconnect();
-        }
-    }
-
-    /**
-     * Initializes the adapter that populates the grid layout
-     */
-    public void buildAdapter() {
-        List<UserRecord> userRecords = createUserRecords(getUsersForUserGrid());
-        mAdapter = new UserAdapter(mContext, userRecords);
-        super.setAdapter(mAdapter);
-    }
-
-    private List<UserRecord> createUserRecords(List<UserInfo> userInfoList) {
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserHandle fgUserHandle = UserHandle.of(fgUserId);
-        List<UserRecord> userRecords = new ArrayList<>();
-
-        // If the foreground user CANNOT switch to other users, only display the foreground user.
-        if (mUserManager.getUserSwitchability(fgUserHandle) != SWITCHABILITY_STATUS_OK) {
-            userRecords.add(createForegroundUserRecord());
-            return userRecords;
-        }
-
-        // If the foreground user CAN switch to other users, iterate through all users.
-        for (UserInfo userInfo : userInfoList) {
-            boolean isForeground = fgUserId == userInfo.id;
-
-            if (!isForeground && userInfo.isGuest()) {
-                // Don't display temporary running background guests in the switcher.
-                continue;
-            }
-
-            UserRecord record = new UserRecord(userInfo,
-                    isForeground ? UserRecord.FOREGROUND_USER : UserRecord.BACKGROUND_USER);
-            userRecords.add(record);
-        }
-
-        // Add start guest user record if the system is not logged in as guest already.
-        if (!getCurrentForegroundUserInfo().isGuest()) {
-            userRecords.add(createStartGuestUserRecord());
-        }
-
-        // Add "add user" record if the foreground user can add users
-        if (!mUserManager.hasUserRestriction(DISALLOW_ADD_USER, fgUserHandle)) {
-            userRecords.add(createAddUserRecord());
-        }
-
-        return userRecords;
-    }
-
-    private UserRecord createForegroundUserRecord() {
-        return new UserRecord(getCurrentForegroundUserInfo(), UserRecord.FOREGROUND_USER);
-    }
-
-    private UserInfo getCurrentForegroundUserInfo() {
-        return mUserManager.getUserInfo(ActivityManager.getCurrentUser());
-    }
-
-    /**
-     * Show the "Add User" Button
-     */
-    public void enableAddUser() {
-        mEnableAddUserButton = true;
-        onUsersUpdate();
-    }
-
-    /**
-     * Hide the "Add User" Button
-     */
-    public void disableAddUser() {
-        mEnableAddUserButton = false;
-        onUsersUpdate();
-    }
-
-    /**
-     * Create guest user record
-     */
-    private UserRecord createStartGuestUserRecord() {
-        return new UserRecord(/* userInfo= */ null, UserRecord.START_GUEST);
-    }
-
-    /**
-     * Create add user record
-     */
-    private UserRecord createAddUserRecord() {
-        return new UserRecord(/* userInfo= */ null, UserRecord.ADD_USER);
-    }
-
-    public void setFragment(BaseFragment fragment) {
-        mBaseFragment = fragment;
-    }
-
-    private void onUsersUpdate() {
-        // If you can show the add user button, there is no restriction
-        mAdapter.setAddUserRestricted(!mEnableAddUserButton);
-        mAdapter.clearUsers();
-        mAdapter.updateUsers(createUserRecords(getUsersForUserGrid()));
-        mAdapter.notifyDataSetChanged();
-    }
-
-    private List<UserInfo> getUsersForUserGrid() {
-        List<UserInfo> users = UserManager.get(mContext).getUsers(/* excludeDying= */ true);
-        return users.stream()
-                .filter(UserInfo::supportsSwitchToByUser)
-                .collect(Collectors.toList());
-    }
-
-    private void registerForUserEvents() {
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(Intent.ACTION_USER_REMOVED);
-        filter.addAction(Intent.ACTION_USER_ADDED);
-        filter.addAction(Intent.ACTION_USER_INFO_CHANGED);
-        filter.addAction(Intent.ACTION_USER_SWITCHED);
-        filter.addAction(Intent.ACTION_USER_STOPPED);
-        filter.addAction(Intent.ACTION_USER_UNLOCKED);
-        mContext.registerReceiverAsUser(
-                mUserUpdateReceiver,
-                UserHandle.ALL,
-                filter,
-                /* broadcastPermission= */ null,
-                /* scheduler= */ null);
-    }
-
-    private void unregisterForUserEvents() {
-        mContext.unregisterReceiver(mUserUpdateReceiver);
-    }
-
-    /**
-     * Adapter to populate the grid layout with the available user profiles
-     */
-    public final class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserAdapterViewHolder>
-            implements AddNewUserTask.AddNewUserListener {
-
-        private final Resources mRes;
-        private final String mGuestName;
-
-        private Context mContext;
-        private List<UserRecord> mUsers;
-        private String mNewUserName;
-        // View that holds the add user button.  Used to enable/disable the view
-        private View mAddUserView;
-        private float mOpacityDisabled;
-        private float mOpacityEnabled;
-        private boolean mIsAddUserRestricted;
-
-        private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
-            mAddNewUserTask = new AddNewUserTask(mContext,
-                    mCarUserManager, /* addNewUserListener= */this);
-            mAddNewUserTask.execute(mNewUserName);
-        };
-
-        /**
-         * Enable the "add user" button if the user cancels adding an user
-         */
-        private final ConfirmationDialogFragment.RejectListener mRejectListener =
-                arguments -> enableAddView();
-
-
-        public UserAdapter(Context context, List<UserRecord> users) {
-            mRes = context.getResources();
-            mContext = context;
-            updateUsers(users);
-            mGuestName = mRes.getString(R.string.user_guest);
-            mNewUserName = mRes.getString(R.string.user_new_user_name);
-            mOpacityDisabled = mRes.getFloat(R.dimen.opacity_disabled);
-            mOpacityEnabled = mRes.getFloat(R.dimen.opacity_enabled);
-            resetDialogListeners();
-        }
-
-        /**
-         * Removes all the users from the User Grid.
-         */
-        public void clearUsers() {
-            mUsers.clear();
-        }
-
-        /**
-         * Refreshes the User Grid with the new List of users.
-         */
-        public void updateUsers(List<UserRecord> users) {
-            mUsers = users;
-        }
-
-        @Override
-        public UserAdapterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            View view = LayoutInflater.from(mContext)
-                    .inflate(R.layout.user_switcher_pod, parent, false);
-            view.setAlpha(mOpacityEnabled);
-            view.bringToFront();
-            return new UserAdapterViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(UserAdapterViewHolder holder, int position) {
-            UserRecord userRecord = mUsers.get(position);
-            RoundedBitmapDrawable circleIcon = getCircularUserRecordIcon(userRecord);
-            holder.mUserAvatarImageView.setImageDrawable(circleIcon);
-            holder.mUserNameTextView.setText(getUserRecordName(userRecord));
-
-            // Defaults to 100% opacity and no circle around the icon.
-            holder.mView.setAlpha(mOpacityEnabled);
-            holder.mFrame.setBackgroundResource(0);
-
-            // Foreground user record.
-            switch (userRecord.mType) {
-                case UserRecord.FOREGROUND_USER:
-                    // Add a circle around the icon.
-                    holder.mFrame.setBackgroundResource(R.drawable.user_avatar_bg_circle);
-                    // Go back to quick settings if user selected is already the foreground user.
-                    holder.mView.setOnClickListener(v
-                            -> mBaseFragment.getActivity().onBackPressed());
-                    break;
-
-                case UserRecord.START_GUEST:
-                    holder.mView.setOnClickListener(v -> handleGuestSessionClicked());
-                    break;
-
-                case UserRecord.ADD_USER:
-                    if (mIsAddUserRestricted) {
-                        // If there are restrictions, show a 50% opaque "add user" view
-                        holder.mView.setAlpha(mOpacityDisabled);
-                        holder.mView.setOnClickListener(
-                                v -> mBaseFragment.getFragmentHost().showBlockingMessage());
-                    } else {
-                        holder.mView.setOnClickListener(v -> handleAddUserClicked(v));
-                    }
-                    break;
-
-                default:
-                    // User record;
-                    holder.mView.setOnClickListener(v -> handleUserSwitch(userRecord.mInfo));
-            }
-        }
-
-        /**
-         * Specify if adding a user should be restricted.
-         *
-         * @param isAddUserRestricted should adding a user be restricted
-         */
-        public void setAddUserRestricted(boolean isAddUserRestricted) {
-            mIsAddUserRestricted = isAddUserRestricted;
-        }
-
-        /** Resets listeners for shown dialog fragments. */
-        private void resetDialogListeners() {
-            if (mBaseFragment != null) {
-                ConfirmationDialogFragment dialog =
-                        (ConfirmationDialogFragment) mBaseFragment
-                                .getFragmentManager()
-                                .findFragmentByTag(CONFIRM_CREATE_NEW_USER_DIALOG_TAG);
-                ConfirmationDialogFragment.resetListeners(
-                        dialog,
-                        mConfirmListener,
-                        mRejectListener,
-                        /* neutralListener= */ null);
-            }
-        }
-
-        private void handleUserSwitch(UserInfo userInfo) {
-            mCarUserManager.switchUser(userInfo.id).thenRun(() -> {
-                // Successful switch, close Settings app.
-                closeSettingsTask();
-            });
-        }
-
-        private void handleGuestSessionClicked() {
-            UserInfo guest =
-                    UserHelper.getInstance(mContext).createNewOrFindExistingGuest(mContext);
-            if (guest != null) {
-                mCarUserManager.switchUser(guest.id).thenRun(() -> {
-                    // Successful start, will switch to guest now. Close Settings app.
-                    closeSettingsTask();
-                });
-            }
-        }
-
-        private void handleAddUserClicked(View addUserView) {
-            if (!mUserManager.canAddMoreUsers()) {
-                showMaxUsersLimitReachedDialog();
-            } else {
-                mAddUserView = addUserView;
-                // Disable button so it cannot be clicked multiple times
-                mAddUserView.setEnabled(false);
-                showConfirmCreateNewUserDialog();
-            }
-        }
-
-        private void showMaxUsersLimitReachedDialog() {
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getMaxUsersLimitReachedDialogFragment(getContext(),
-                            UserHelper.getInstance(mContext).getMaxSupportedRealUsers());
-            dialogFragment.show(
-                    mBaseFragment.getFragmentManager(), MAX_USERS_LIMIT_REACHED_DIALOG_TAG);
-        }
-
-        private void showConfirmCreateNewUserDialog() {
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getConfirmCreateNewUserDialogFragment(getContext(),
-                            mConfirmListener, mRejectListener);
-            dialogFragment.show(
-                    mBaseFragment.getFragmentManager(), CONFIRM_CREATE_NEW_USER_DIALOG_TAG);
-        }
-
-        private RoundedBitmapDrawable getCircularUserRecordIcon(UserRecord userRecord) {
-            Resources resources = mContext.getResources();
-            RoundedBitmapDrawable circleIcon;
-            switch (userRecord.mType) {
-                case UserRecord.START_GUEST:
-                    circleIcon = mUserIconProvider.getRoundedGuestDefaultIcon(resources);
-                    break;
-                case UserRecord.ADD_USER:
-                    circleIcon = getCircularAddUserIcon();
-                    break;
-                default:
-                    circleIcon = mUserIconProvider.getRoundedUserIcon(userRecord.mInfo, mContext);
-            }
-            return circleIcon;
-        }
-
-        private RoundedBitmapDrawable getCircularAddUserIcon() {
-            RoundedBitmapDrawable circleIcon =
-                    RoundedBitmapDrawableFactory.create(mRes, UserIcons.convertToBitmap(
-                            mContext.getDrawable(R.drawable.user_add_circle)));
-            circleIcon.setCircular(true);
-            return circleIcon;
-        }
-
-        private String getUserRecordName(UserRecord userRecord) {
-            String recordName;
-            switch (userRecord.mType) {
-                case UserRecord.START_GUEST:
-                    recordName = mContext.getString(R.string.start_guest_session);
-                    break;
-                case UserRecord.ADD_USER:
-                    recordName = mContext.getString(R.string.user_add_user_menu);
-                    break;
-                default:
-                    recordName = userRecord.mInfo.name;
-            }
-            return recordName;
-        }
-
-        @Override
-        public void onUserAddedSuccess() {
-            enableAddView();
-            // New user added. Will switch to new user, therefore close the app.
-            closeSettingsTask();
-        }
-
-        @Override
-        public void onUserAddedFailure() {
-            enableAddView();
-            // Display failure dialog.
-            if (mBaseFragment != null) {
-                ErrorDialog.show(mBaseFragment, R.string.add_user_error_title);
-            }
-        }
-
-        /**
-         * When we switch users, we also want to finish the QuickSettingActivity, so we send back a
-         * result telling the QuickSettingActivity to finish.
-         */
-        private void closeSettingsTask() {
-            mBaseFragment.getActivity().setResult(Activity.FINISH_TASK_WITH_ACTIVITY, new Intent());
-            mBaseFragment.getActivity().finish();
-        }
-
-        @Override
-        public int getItemCount() {
-            return mUsers.size();
-        }
-
-        /**
-         * Layout for each individual pod in the Grid RecyclerView
-         */
-        public class UserAdapterViewHolder extends RecyclerView.ViewHolder {
-
-            public ImageView mUserAvatarImageView;
-            public TextView mUserNameTextView;
-            public View mView;
-            public FrameLayout mFrame;
-
-            public UserAdapterViewHolder(View view) {
-                super(view);
-                mView = view;
-                mUserAvatarImageView = view.findViewById(R.id.user_avatar);
-                mUserNameTextView = view.findViewById(R.id.user_name);
-                mFrame = view.findViewById(R.id.current_user_frame);
-            }
-        }
-
-        private void enableAddView() {
-            if (mAddUserView != null) {
-                mAddUserView.setEnabled(true);
-            }
-        }
-    }
-
-    /**
-     * Object wrapper class for the userInfo.  Use it to distinguish if a profile is a
-     * guest profile, add user profile, or the foreground user.
-     */
-    public static final class UserRecord {
-
-        public final UserInfo mInfo;
-        public final @UserRecordType int mType;
-
-        public static final int START_GUEST = 0;
-        public static final int ADD_USER = 1;
-        public static final int FOREGROUND_USER = 2;
-        public static final int BACKGROUND_USER = 3;
-
-        @IntDef({START_GUEST, ADD_USER, FOREGROUND_USER, BACKGROUND_USER})
-        @Retention(RetentionPolicy.SOURCE)
-        public @interface UserRecordType {}
-
-        public UserRecord(@Nullable UserInfo userInfo, @UserRecordType int recordType) {
-            mInfo = userInfo;
-            mType = recordType;
-        }
-    }
-
-    /**
-     * A {@link RecyclerView.ItemDecoration} that will add spacing between each item in the
-     * RecyclerView that it is added to.
-     */
-    private static class ItemSpacingDecoration extends RecyclerView.ItemDecoration {
-        private int mItemSpacing;
-
-        private ItemSpacingDecoration(int itemSpacing) {
-            mItemSpacing = itemSpacing;
-        }
-
-        @Override
-        public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
-                RecyclerView.State state) {
-            super.getItemOffsets(outRect, view, parent, state);
-            int position = parent.getChildAdapterPosition(view);
-
-            // Skip offset for last item except for GridLayoutManager.
-            if (position == state.getItemCount() - 1
-                    && !(parent.getLayoutManager() instanceof GridLayoutManager)) {
-                return;
-            }
-
-            outRect.bottom = mItemSpacing;
-        }
-    }
-}
diff --git a/src/com/android/car/settings/users/UserHelper.java b/src/com/android/car/settings/users/UserHelper.java
deleted file mode 100644
index 06bab45..0000000
--- a/src/com/android/car/settings/users/UserHelper.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.car.settings.users;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.UserIdInt;
-import android.app.ActivityManager;
-import android.car.Car;
-import android.car.user.CarUserManager;
-import android.car.user.UserCreationResult;
-import android.car.user.UserRemovalResult;
-import android.car.user.UserSwitchResult;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.sysprop.CarProperties;
-import android.util.Log;
-
-import com.android.car.settings.R;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.infra.AndroidFuture;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * Helper class for providing basic user logic that applies across the Settings app for Cars.
- */
-public class UserHelper {
-    private static final String TAG = "UserHelper";
-    private static final int TIMEOUT_MS = CarProperties.user_hal_timeout().orElse(5_000) + 500;
-    private static UserHelper sInstance;
-
-    private final UserManager mUserManager;
-    private final CarUserManager mCarUserManager;
-    private final Resources mResources;
-    private final String mDefaultAdminName;
-    private final String mDefaultGuestName;
-
-    /**
-     * Returns an instance of UserHelper.
-     */
-    public static UserHelper getInstance(Context context) {
-        if (sInstance == null) {
-            Context appContext = context.getApplicationContext();
-            Resources resources = appContext.getResources();
-            sInstance = new UserHelper(UserManager.get(appContext), resources,
-                    resources.getString(com.android.internal.R.string.owner_name),
-                    resources.getString(R.string.user_guest),
-                    getCarUserManager(appContext));
-        }
-        return sInstance;
-    }
-
-    @VisibleForTesting
-    UserHelper(UserManager userManager, Resources resources, String defaultAdminName,
-            String defaultGuestName, CarUserManager carUserManager) {
-        mUserManager = userManager;
-        mResources = resources;
-        mDefaultAdminName = defaultAdminName;
-        mDefaultGuestName = defaultGuestName;
-        mCarUserManager = carUserManager;
-    }
-
-    private static CarUserManager getCarUserManager(@NonNull Context context) {
-        Car car = Car.createCar(context);
-        CarUserManager carUserManager = (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
-        return carUserManager;
-    }
-
-    /**
-     * Tries to remove the user that's passed in. System user cannot be removed.
-     * If the user to be removed is user currently running the process, it switches to the guest
-     * user first, and then removes the user.
-     * If the user being removed is the last admin user, this will create a new admin user.
-     *
-     * @param context An application context
-     * @param userInfo User to be removed
-     * @return {@code true} if user is successfully removed, {@code false} otherwise.
-     */
-    public boolean removeUser(Context context, UserInfo userInfo) {
-        if (userInfo.id == UserHandle.USER_SYSTEM) {
-            Log.w(TAG, "User " + userInfo.id + " is system user, could not be removed.");
-            return false;
-        }
-
-        // Try to create a new admin before deleting the current one.
-        if (userInfo.isAdmin() && getAllAdminUsers().size() <= 1) {
-            return removeLastAdmin(userInfo);
-        }
-
-        if (!mUserManager.isAdminUser() && !isCurrentProcessUser(userInfo)) {
-            // If the caller is non-admin, they can only delete themselves.
-            Log.e(TAG, "Non-admins cannot remove other users.");
-            return false;
-        }
-
-        // If the ID being removed is the current foreground user, we need to handle switching to
-        // another user first
-        if (userInfo.id == ActivityManager.getCurrentUser()) {
-            if (mUserManager.getUserSwitchability() != UserManager.SWITCHABILITY_STATUS_OK) {
-                // If we can't switch to a different user, we can't exit this one and therefore
-                // can't delete it.
-                Log.w(TAG, "User switching is not allowed. Current user cannot be deleted");
-                return false;
-            }
-            UserInfo guestUser = createNewOrFindExistingGuest(context);
-            if (guestUser == null) {
-                Log.e(TAG, "Could not create a Guest user.");
-                return false;
-            }
-            if (!switchUser(guestUser.id)) {
-                return false;
-            }
-        }
-
-        return removeUser(userInfo.id);
-    }
-
-    private boolean removeUser(@UserIdInt int userId) {
-        UserRemovalResult userRemovalResult = mCarUserManager.removeUser(userId);
-        if (userRemovalResult == null || !userRemovalResult.isSuccess()) {
-            Log.w(TAG, "Could not remove user. " + userRemovalResult);
-            return false;
-        }
-        return true;
-    }
-
-    private boolean switchUser(@UserIdInt int userId) {
-        AndroidFuture<UserSwitchResult> userSwitchResultFuture =
-                mCarUserManager.switchUser(userId);
-        try {
-            UserSwitchResult userSwitchResult =
-                    userSwitchResultFuture.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-            if (userSwitchResult == null || !userSwitchResult.isSuccess()) {
-                Log.w(TAG, "Could not switch user. " + userSwitchResult);
-                return false;
-            }
-        } catch (Exception e) {
-            Log.w(TAG, "Could not switch user.", e);
-            return false;
-        }
-        return true;
-    }
-
-    @Nullable
-    private UserInfo getUserInfo(AndroidFuture<UserCreationResult> future) {
-        UserCreationResult userCreationResult = null;
-        try {
-            userCreationResult = future.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        } catch (Exception e) {
-            Log.w(TAG, "Could not create user.", e);
-            return null;
-        }
-
-        if (userCreationResult == null || !userCreationResult.isSuccess()
-                || userCreationResult.getUser() == null) {
-            Log.w(TAG, "Could not create user. " + userCreationResult);
-            return null;
-        }
-
-        return userCreationResult.getUser();
-    }
-
-    private boolean removeLastAdmin(UserInfo userInfo) {
-        if (Log.isLoggable(TAG, Log.INFO)) {
-            Log.i(TAG, "User " + userInfo.id
-                    + " is the last admin user on device. Creating a new admin.");
-        }
-
-        UserInfo newAdmin = createNewAdminUser(mDefaultAdminName);
-        if (newAdmin == null) {
-            Log.w(TAG, "Couldn't create another admin, cannot delete current user.");
-            return false;
-        }
-
-        if (!switchUser(newAdmin.id)) {
-            return false;
-        }
-
-        return removeUser(userInfo.id);
-    }
-
-    /**
-     * Creates a new user on the system, the created user would be granted admin role.
-     * Only admins can create other admins.
-     *
-     * @param userName Name to give to the newly created user.
-     * @return Newly created admin user, null if failed to create a user.
-     */
-    @Nullable
-    private UserInfo createNewAdminUser(String userName) {
-        if (!(mUserManager.isAdminUser() || mUserManager.isSystemUser())) {
-            // Only Admins or System user can create other privileged users.
-            Log.e(TAG, "Only admin users and system user can create other admins.");
-            return null;
-        }
-        AndroidFuture<UserCreationResult> future =
-                mCarUserManager.createUser(userName, UserInfo.FLAG_ADMIN);
-        UserInfo user = getUserInfo(future);
-
-        if (user == null) return null;
-
-        new UserIconProvider().assignDefaultIcon(mUserManager, mResources, user);
-        return user;
-    }
-
-    /**
-     * Creates and returns a new guest user or returns the existing one.
-     * Returns null if it fails to create a new guest.
-     *
-     * @param context an application context
-     * @return The UserInfo representing the Guest, or null if it failed
-     */
-    @Nullable
-    public UserInfo createNewOrFindExistingGuest(Context context) {
-        // CreateGuest will return null if a guest already exists.
-        AndroidFuture<UserCreationResult> future = mCarUserManager.createGuest(mDefaultGuestName);
-        UserInfo newGuest = getUserInfo(future);
-
-        if (newGuest != null) {
-            new UserIconProvider().assignDefaultIcon(mUserManager, mResources, newGuest);
-            return newGuest;
-        }
-
-        return mUserManager.findCurrentGuestUser();
-    }
-
-    /**
-     * Checks if the current process user can modify accounts. Demo and Guest users cannot modify
-     * accounts even if the DISALLOW_MODIFY_ACCOUNTS restriction is not applied.
-     */
-    public boolean canCurrentProcessModifyAccounts() {
-        return !mUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)
-                && !mUserManager.isDemoUser()
-                && !mUserManager.isGuestUser();
-    }
-
-    /**
-     * Returns a list of {@code UserInfo} representing all users that can be brought to the
-     * foreground.
-     */
-    public List<UserInfo> getAllUsers() {
-        return getAllLivingUsers(/* filter= */ null);
-    }
-
-    /**
-     * Returns a list of {@code UserInfo} representing all users that can be swapped with the
-     * current user into the foreground.
-     */
-    public List<UserInfo> getAllSwitchableUsers() {
-        final int foregroundUserId = ActivityManager.getCurrentUser();
-        return getAllLivingUsers(userInfo -> userInfo.id != foregroundUserId);
-    }
-
-    /**
-     * Returns a list of {@code UserInfo} representing all users that are non-ephemeral and are
-     * valid to have in the foreground.
-     */
-    public List<UserInfo> getAllPersistentUsers() {
-        return getAllLivingUsers(userInfo -> !userInfo.isEphemeral());
-    }
-
-    /**
-     * Returns a list of {@code UserInfo} representing all admin users and are
-     * valid to have in the foreground.
-     */
-    public List<UserInfo> getAllAdminUsers() {
-        return getAllLivingUsers(UserInfo::isAdmin);
-    }
-
-    /**
-     * Gets all users that are not dying.  This method will handle
-     * {@link UserManager#isHeadlessSystemUserMode} and ensure the system user is not
-     * part of the return list when the flag is on.
-     * @param filter Optional filter to apply to the list of users.  Pass null to skip.
-     * @return An optionally filtered list containing all living users
-     */
-    public List<UserInfo> getAllLivingUsers(@Nullable Predicate<? super UserInfo> filter) {
-        Stream<UserInfo> filteredListStream =
-                mUserManager.getUsers(/* excludeDying= */ true).stream();
-
-        if (filter != null) {
-            filteredListStream = filteredListStream.filter(filter);
-        }
-
-        if (UserManager.isHeadlessSystemUserMode()) {
-            filteredListStream =
-                    filteredListStream.filter(userInfo -> userInfo.id != UserHandle.USER_SYSTEM);
-        }
-        return filteredListStream.collect(Collectors.toList());
-    }
-
-    /**
-     * Checks whether passed in user is the user that's running the current process.
-     *
-     * @param userInfo User to check.
-     * @return {@code true} if user running the process, {@code false} otherwise.
-     */
-    public boolean isCurrentProcessUser(UserInfo userInfo) {
-        return UserHandle.myUserId() == userInfo.id;
-    }
-
-    /**
-     * Gets UserInfo for the user running the caller process.
-     *
-     * <p>Differentiation between foreground user and current process user is relevant for
-     * multi-user deployments.
-     *
-     * <p>Some multi-user aware components (like SystemUI) needs to run a singleton component
-     * in system user. Current process user is always the same for that component, even when
-     * the foreground user changes.
-     *
-     * @return {@link UserInfo} for the user running the current process.
-     */
-    public UserInfo getCurrentProcessUserInfo() {
-        return mUserManager.getUserInfo(UserHandle.myUserId());
-    }
-
-    /**
-     * Maximum number of users allowed on the device. This includes real users, managed profiles
-     * and restricted users, but excludes guests.
-     *
-     * <p> It excludes system user in headless system user model.
-     *
-     * @return Maximum number of users that can be present on the device.
-     */
-    private int getMaxSupportedUsers() {
-        int maxSupportedUsers = UserManager.getMaxSupportedUsers();
-        if (UserManager.isHeadlessSystemUserMode()) {
-            maxSupportedUsers -= 1;
-        }
-        return maxSupportedUsers;
-    }
-
-    private int getManagedProfilesCount() {
-        List<UserInfo> users = getAllUsers();
-
-        // Count all users that are managed profiles of another user.
-        int managedProfilesCount = 0;
-        for (UserInfo user : users) {
-            if (user.isManagedProfile()) {
-                managedProfilesCount++;
-            }
-        }
-        return managedProfilesCount;
-    }
-
-    /**
-     * Get the maximum number of real (non-guest, non-managed profile) users that can be created on
-     * the device. This is a dynamic value and it decreases with the increase of the number of
-     * managed profiles on the device.
-     *
-     * <p> It excludes system user in headless system user model.
-     *
-     * @return Maximum number of real users that can be created.
-     */
-    public int getMaxSupportedRealUsers() {
-        return getMaxSupportedUsers() - getManagedProfilesCount();
-    }
-}
diff --git a/src/com/android/car/settings/users/UserIconProvider.java b/src/com/android/car/settings/users/UserIconProvider.java
deleted file mode 100644
index f5df99a..0000000
--- a/src/com/android/car/settings/users/UserIconProvider.java
+++ /dev/null
@@ -1,105 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.annotation.UserIdInt;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.core.graphics.drawable.RoundedBitmapDrawable;
-import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
-
-import com.android.internal.util.UserIcons;
-
-/**
- * Simple class for providing icons for users in Settings.
- */
-public class UserIconProvider {
-    /**
-     * Gets a scaled rounded icon for the given user to use in settings.  If a user does
-     * not have an icon saved, this method will default to a generic icon and update UserManager to
-     * use that icon.
-     *
-     * @param userInfo User for which the icon is requested.
-     * @param context Context to use for resources
-     * @return {@link RoundedBitmapDrawable} representing the icon for the user.
-     */
-    public RoundedBitmapDrawable getRoundedUserIcon(UserInfo userInfo, Context context) {
-        UserManager userManager = UserManager.get(context);
-        Resources res = context.getResources();
-        Bitmap icon = userManager.getUserIcon(userInfo.id);
-
-        if (icon == null) {
-            icon = assignDefaultIcon(userManager, res, userInfo);
-        }
-
-        return createScaledRoundIcon(res, icon);
-    }
-
-    /** Returns a scaled, rounded, default icon for the Guest user */
-    public RoundedBitmapDrawable getRoundedGuestDefaultIcon(Resources resources) {
-        return createScaledRoundIcon(resources, getGuestUserDefaultIcon(resources));
-    }
-
-    private RoundedBitmapDrawable createScaledRoundIcon(Resources resources, Bitmap icon) {
-        BitmapDrawable scaledIcon = UserUtils.scaleUserIcon(resources, icon);
-        RoundedBitmapDrawable circleIcon =
-                RoundedBitmapDrawableFactory.create(resources, scaledIcon.getBitmap());
-        circleIcon.setCircular(true);
-        return circleIcon;
-    }
-
-    /**
-     * Assigns a default icon to a user according to the user's id. Handles Guest icon and non-guest
-     * user icons.
-     *
-     * @param userManager {@link UserManager} to set user icon
-     * @param resources {@link Resources} to grab icons from
-     * @param userInfo User whose avatar is set to default icon.
-     * @return Bitmap of the user icon.
-     */
-    public Bitmap assignDefaultIcon(
-            UserManager userManager, Resources resources, UserInfo userInfo) {
-        Bitmap bitmap = userInfo.isGuest()
-                ? getGuestUserDefaultIcon(resources)
-                : getUserDefaultIcon(resources, userInfo.id);
-        userManager.setUserIcon(userInfo.id, bitmap);
-        return bitmap;
-    }
-
-    /**
-     * Gets a bitmap representing the user's default avatar.
-     *
-     * @param resources The resources to pull from
-     * @param id The id of the user to get the icon for.  Pass {@link UserHandle#USER_NULL} for
-     *           Guest user.
-     * @return Default user icon
-     */
-    private Bitmap getUserDefaultIcon(Resources resources, @UserIdInt int id) {
-        return UserIcons.convertToBitmap(
-                UserIcons.getDefaultUserIcon(resources, id, /* light= */ false));
-    }
-
-    private Bitmap getGuestUserDefaultIcon(Resources resources) {
-        return getUserDefaultIcon(resources, UserHandle.USER_NULL);
-    }
-}
diff --git a/src/com/android/car/settings/users/UserSwitcherActivity.java b/src/com/android/car/settings/users/UserSwitcherActivity.java
deleted file mode 100644
index 02143ed..0000000
--- a/src/com/android/car/settings/users/UserSwitcherActivity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.users;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.common.BaseCarSettingsActivity;
-
-/** Entry into user switcher activity. */
-public class UserSwitcherActivity extends BaseCarSettingsActivity {
-
-    @Nullable
-    @Override
-    protected Fragment getInitialFragment() {
-        return new UserSwitcherFragment();
-    }
-}
diff --git a/src/com/android/car/settings/users/UserSwitcherFragment.java b/src/com/android/car/settings/users/UserSwitcherFragment.java
deleted file mode 100644
index f66534a..0000000
--- a/src/com/android/car/settings/users/UserSwitcherFragment.java
+++ /dev/null
@@ -1,89 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.os.Bundle;
-
-import androidx.annotation.LayoutRes;
-import androidx.annotation.StringRes;
-import androidx.recyclerview.widget.GridLayoutManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.CarUxRestrictionsHelper;
-
-/**
- * Shows a user switcher for all Users available on this device.
- */
-public class UserSwitcherFragment extends BaseFragment {
-
-    private UserGridRecyclerView mUserGridView;
-
-    @Override
-    @LayoutRes
-    protected int getLayoutId() {
-        return R.layout.user_switcher;
-    }
-
-    @Override
-    @StringRes
-    protected int getTitleId() {
-        return R.string.users_list_title;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mUserGridView = getView().findViewById(R.id.user_grid);
-        GridLayoutManager layoutManager = new GridLayoutManager(getContext(),
-                getContext().getResources().getInteger(R.integer.user_switcher_num_col));
-        mUserGridView.setFragment(this);
-        mUserGridView.setLayoutManager(layoutManager);
-        mUserGridView.buildAdapter();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-    /**
-     * User switcher fragment is distraction optimized, so is allowed at all times.
-     */
-    @Override
-    public boolean canBeShown(CarUxRestrictions carUxRestrictions) {
-        return true;
-    }
-
-
-    @Override
-    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
-        applyRestriction(CarUxRestrictionsHelper.isNoSetup(restrictionInfo));
-    }
-
-    private void applyRestriction(boolean restricted) {
-        if (mUserGridView != null) {
-            if (restricted) {
-                mUserGridView.disableAddUser();
-            } else {
-                mUserGridView.enableAddUser();
-            }
-        }
-    }
-}
diff --git a/src/com/android/car/settings/users/UserUtils.java b/src/com/android/car/settings/users/UserUtils.java
deleted file mode 100644
index f6e71a3..0000000
--- a/src/com/android/car/settings/users/UserUtils.java
+++ /dev/null
@@ -1,73 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.UserManager;
-
-import com.android.car.settings.R;
-
-/**
- * Util class for providing basic, universally needed user-related methods.
- */
-public class UserUtils {
-    private UserUtils() {
-    }
-
-    /**
-     * Fetches the {@link UserInfo} from UserManager system service for the user ID.
-     *
-     * @param userId ID that corresponds to the returned UserInfo.
-     * @return {@link UserInfo} for the user ID.
-     */
-    public static UserInfo getUserInfo(Context context, int userId) {
-        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
-        return userManager.getUserInfo(userId);
-    }
-
-    /**
-     * Returns the user name that should be displayed. The caller shouldn't use userInfo.name
-     * directly, because the display name is modified for the current process user.
-     */
-    public static String getUserDisplayName(Context context, UserInfo userInfo) {
-        return UserHelper.getInstance(context).isCurrentProcessUser(userInfo) ? context.getString(
-                R.string.current_user_name, userInfo.name) : userInfo.name;
-    }
-
-    /**
-     * Returns whether or not the current user is an admin and whether the user info they are
-     * viewing is of a non-admin.
-     */
-    public static boolean isAdminViewingNonAdmin(UserManager userManager, UserInfo userInfo) {
-        return userManager.isAdminUser() && !userInfo.isAdmin();
-    }
-
-    /**
-     * Returns a {@link Drawable} for the given {@code icon} scaled to the appropriate size.
-     */
-    public static BitmapDrawable scaleUserIcon(Resources res, Bitmap icon) {
-        int desiredSize = res.getDimensionPixelSize(R.dimen.icon_size);
-        Bitmap scaledIcon =
-                Bitmap.createScaledBitmap(icon, desiredSize, desiredSize, /*filter=*/true);
-        return new BitmapDrawable(res, scaledIcon);
-    }
-}
diff --git a/src/com/android/car/settings/users/UsersBasePreferenceController.java b/src/com/android/car/settings/users/UsersBasePreferenceController.java
deleted file mode 100644
index d03de49..0000000
--- a/src/com/android/car/settings/users/UsersBasePreferenceController.java
+++ /dev/null
@@ -1,139 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.userlib.CarUserManagerHelper;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.UserInfo;
-
-import androidx.annotation.CallSuper;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/** Shared business logic between {@link UsersListFragment} and {@link ChooseNewAdminFragment}. */
-public abstract class UsersBasePreferenceController extends PreferenceController<PreferenceGroup> {
-
-    private UsersPreferenceProvider mPreferenceProvider;
-    private CarUserManagerHelper mCarUserManagerHelper;
-    private List<Preference> mUsersToDisplay = new ArrayList<>();
-
-    private final BroadcastReceiver mUserUpdateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            /** Update screen when users list is updated. */
-            refreshUi();
-        }
-    };
-
-    public UsersBasePreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-        mCarUserManagerHelper = new CarUserManagerHelper(context);
-        UsersPreferenceProvider.UserClickListener userClickListener = this::userClicked;
-        mPreferenceProvider = new UsersPreferenceProvider(context, userClickListener);
-    }
-
-    @Override
-    protected Class<PreferenceGroup> getPreferenceType() {
-        return PreferenceGroup.class;
-    }
-
-    /**
-     * Ensure that helper is set by the time onCreate is called. Register a listener to refresh
-     * screen on updates.
-     */
-    @Override
-    @CallSuper
-    protected void onCreateInternal() {
-        registerForUserEvents();
-    }
-
-    /** Unregister listener to refresh screen on updates. */
-    @Override
-    @CallSuper
-    protected void onDestroyInternal() {
-        unregisterForUserEvents();
-    }
-
-    @Override
-    protected void updateState(PreferenceGroup preferenceGroup) {
-        List<Preference> newUsers = mPreferenceProvider.createUserList();
-        if (userListsAreDifferent(mUsersToDisplay, newUsers)) {
-            mUsersToDisplay = newUsers;
-            preferenceGroup.removeAll();
-
-            for (Preference preference : mUsersToDisplay) {
-                preferenceGroup.addPreference(preference);
-            }
-        }
-    }
-
-    /** Gets the car user manager helper. */
-    protected CarUserManagerHelper getCarUserManagerHelper() {
-        return mCarUserManagerHelper;
-    }
-
-    /** Handles the user click on a preference for a certain user. */
-    protected abstract void userClicked(UserInfo userInfo);
-
-
-    /** Gets the preference provider to set additional arguments if necessary. */
-    protected UsersPreferenceProvider getPreferenceProvider() {
-        return mPreferenceProvider;
-    }
-
-    private boolean userListsAreDifferent(List<Preference> currentList,
-            List<Preference> newList) {
-        if (currentList.size() != newList.size()) {
-            return true;
-        }
-
-        for (int i = 0; i < currentList.size(); i++) {
-            // Cannot use "compareTo" on preference, since it uses the order attribute to compare.
-            if (preferencesAreDifferent(currentList.get(i), newList.get(i))) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private boolean preferencesAreDifferent(Preference lhs, Preference rhs) {
-        return !Objects.equals(lhs.getTitle(), rhs.getTitle())
-                || !Objects.equals(lhs.getSummary(), rhs.getSummary());
-    }
-
-    private void registerForUserEvents() {
-        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_INFO_CHANGED);
-        getContext().registerReceiver(mUserUpdateReceiver, filter);
-    }
-
-    private void unregisterForUserEvents() {
-        getContext().unregisterReceiver(mUserUpdateReceiver);
-    }
-}
diff --git a/src/com/android/car/settings/users/UsersDialogProvider.java b/src/com/android/car/settings/users/UsersDialogProvider.java
deleted file mode 100644
index 7c2e73d..0000000
--- a/src/com/android/car/settings/users/UsersDialogProvider.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.users;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.annotation.Nullable;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-
-/**
- * Provides common Users-related ConfirmationDialogFragments to ensure consistency
- */
-public final class UsersDialogProvider {
-
-    /** Argument key to store the user info that the device is trying to make an admin. */
-    static final String KEY_USER_TO_MAKE_ADMIN = "USER_TO_MAKE_ADMIN";
-    /** Argument key to store the user type that the device is trying to remove. */
-    static final String KEY_USER_TYPE = "USER_TYPE";
-    /** {@link KEY_USER_TYPE} value when removing the last admin on the device. */
-    static final String LAST_ADMIN = "LAST_ADMIN";
-    /** {@link KEY_USER_TYPE} value when removing the last user on the device. */
-    static final String LAST_USER = "LAST_USER";
-    /**
-     * Default {@link KEY_USER_TYPE} value when removing a user that is neither {@link LAST_ADMIN}
-     * nor {@link LAST_USER}.
-     */
-    static final String ANY_USER = "ANY_USER";
-
-    private UsersDialogProvider() {
-    }
-
-    /** Gets a confirmation dialog fragment to confirm or reject adding a new user. */
-    public static ConfirmationDialogFragment getConfirmCreateNewUserDialogFragment(Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
-
-        String message = context.getString(R.string.user_add_user_message_setup)
-                .concat(System.lineSeparator())
-                .concat(System.lineSeparator())
-                .concat(context.getString(R.string.user_add_user_message_update));
-
-        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.user_add_user_title)
-                .setMessage(message)
-                .setPositiveButton(android.R.string.ok, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .build();
-
-        return dialogFragment;
-    }
-
-    /** Gets a confirmation dialog fragment to confirm or reject exiting retail mode. */
-    public static ConfirmationDialogFragment getConfirmExitRetailModeDialogFragment(Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
-        return new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.exit_retail_mode_dialog_title)
-                .setMessage(R.string.exit_retail_mode_dialog_body)
-                .setPositiveButton(
-                        R.string.exit_retail_mode_dialog_confirmation_button_text, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .build();
-    }
-
-    /**
-     * Gets a confirmation dialog fragment to indicate the maximum allowed number of users is
-     * reached.
-     */
-    public static ConfirmationDialogFragment getMaxUsersLimitReachedDialogFragment(Context context,
-            int maxUserLimit) {
-        return new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.user_limit_reached_title)
-                .setMessage(context.getResources().getQuantityString(
-                        R.plurals.user_limit_reached_message, maxUserLimit, maxUserLimit))
-                .setPositiveButton(android.R.string.ok, /* confirmListener= */ null)
-                .build();
-    }
-
-    /** Gets a confirmation dialog fragment to confirm or reject making a user an admin. */
-    public static ConfirmationDialogFragment getConfirmGrantAdminDialogFragment(Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener,
-            UserInfo userToMakeAdmin) {
-
-        String message = context.getString(R.string.grant_admin_permissions_message)
-                .concat(System.lineSeparator())
-                .concat(System.lineSeparator())
-                .concat(context.getString(R.string.action_not_reversible_message));
-
-        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.grant_admin_permissions_title)
-                .setMessage(message)
-                .setPositiveButton(R.string.confirm_grant_admin, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .addArgumentParcelable(KEY_USER_TO_MAKE_ADMIN, userToMakeAdmin)
-                .build();
-
-        return dialogFragment;
-    }
-
-    /**
-     * Gets a confirmation dialog fragment to confirm or reject removing the last user on the
-     * device.
-     */
-    public static ConfirmationDialogFragment getConfirmRemoveLastUserDialogFragment(Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
-
-        String message = context.getString(R.string.delete_last_user_admin_created_message)
-                .concat(System.lineSeparator())
-                .concat(System.lineSeparator())
-                .concat(context.getString(R.string.delete_last_user_system_setup_required_message));
-
-        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.delete_last_user_dialog_title)
-                .setMessage(message)
-                .setPositiveButton(R.string.delete_button, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .addArgumentString(KEY_USER_TYPE, LAST_USER)
-                .build();
-
-        return dialogFragment;
-    }
-
-    /**
-     * Gets a confirmation dialog fragment to confirm or reject removing the last admin user on the
-     * device.
-     */
-    public static ConfirmationDialogFragment getConfirmRemoveLastAdminDialogFragment(
-            Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
-
-        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.choose_new_admin_title)
-                .setMessage(R.string.choose_new_admin_message)
-                .setPositiveButton(R.string.choose_new_admin_label, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .addArgumentString(KEY_USER_TYPE, LAST_ADMIN)
-                .build();
-
-        return dialogFragment;
-    }
-
-    /**
-     * Gets a confirmation dialog fragment to confirm or reject removing a user that is neither the
-     * last admin nor the last user on the device.
-     */
-    public static ConfirmationDialogFragment getConfirmRemoveUserDialogFragment(Context context,
-            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
-            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
-
-        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
-                .setTitle(R.string.delete_user_dialog_title)
-                .setMessage(R.string.delete_user_dialog_message)
-                .setPositiveButton(R.string.delete_button, confirmListener)
-                .setNegativeButton(android.R.string.cancel, rejectListener)
-                .addArgumentString(KEY_USER_TYPE, ANY_USER)
-                .build();
-
-        return dialogFragment;
-    }
-}
diff --git a/src/com/android/car/settings/users/UsersListFragment.java b/src/com/android/car/settings/users/UsersListFragment.java
deleted file mode 100644
index d7f067f..0000000
--- a/src/com/android/car/settings/users/UsersListFragment.java
+++ /dev/null
@@ -1,238 +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
- */
-
-package com.android.car.settings.users;
-
-import android.car.Car;
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.user.CarUserManager;
-import android.content.Context;
-import android.content.Intent;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ProgressBarController;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.settingslib.search.SearchIndexable;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Lists all Users available on this device.
- */
-@SearchIndexable
-public class UsersListFragment extends SettingsFragment implements
-        AddNewUserTask.AddNewUserListener {
-    private static final String FACTORY_RESET_PACKAGE_NAME = "android";
-    private static final String FACTORY_RESET_REASON = "ExitRetailModeConfirmed";
-    @VisibleForTesting
-    static final String CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG =
-            "com.android.car.settings.users.ConfirmExitRetailModeDialog";
-    @VisibleForTesting
-    static final String CONFIRM_CREATE_NEW_USER_DIALOG_TAG =
-            "com.android.car.settings.users.ConfirmCreateNewUserDialog";
-    @VisibleForTesting
-    static final String MAX_USERS_LIMIT_REACHED_DIALOG_TAG =
-            "com.android.car.settings.users.MaxUsersLimitReachedDialog";
-
-    private Car mCar;
-    private CarUserManager mCarUserManager;
-    private UserManager mUserManager;
-
-    private ProgressBarController mProgressBar;
-    private MenuItem mAddUserButton;
-
-    private AsyncTask mAddNewUserTask;
-    /** Indicates that a task is running. */
-    private boolean mIsBusy;
-
-    @VisibleForTesting
-    final ConfirmationDialogFragment.ConfirmListener mConfirmCreateNewUserListener = arguments -> {
-        mAddNewUserTask = new AddNewUserTask(getContext(),
-                mCarUserManager, /* addNewUserListener= */ this).execute(
-                getContext().getString(R.string.user_new_user_name));
-        mIsBusy = true;
-        updateUi();
-    };
-
-    /**
-     * Will perform a factory reset. Copied from
-     * {@link com.android.settings.MasterClearConfirm#doMasterClear()}
-     */
-    @VisibleForTesting
-    final ConfirmationDialogFragment.ConfirmListener mConfirmExitRetailModeListener = arguments -> {
-        Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
-        intent.setPackage(FACTORY_RESET_PACKAGE_NAME);
-        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        intent.putExtra(Intent.EXTRA_REASON, FACTORY_RESET_REASON);
-        intent.putExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, true);
-        intent.putExtra(Intent.EXTRA_WIPE_ESIMS, true);
-        getActivity().sendBroadcast(intent);
-        // Intent handling is asynchronous -- assume it will happen soon.
-    };
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mAddUserButton);
-    }
-
-    @Override
-    @XmlRes
-    protected int getPreferenceScreenResId() {
-        return R.xml.users_list_fragment;
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        mCar = Car.createCar(context);
-        mCarUserManager = (CarUserManager) mCar.getCarManager(Car.CAR_USER_SERVICE);
-        mUserManager = UserManager.get(getContext());
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        ConfirmationDialogFragment.resetListeners(
-                (ConfirmationDialogFragment) findDialogByTag(CONFIRM_CREATE_NEW_USER_DIALOG_TAG),
-                mConfirmCreateNewUserListener,
-                /* rejectListener= */ null,
-                /* neutralListener= */ null);
-        ConfirmationDialogFragment.resetListeners(
-                (ConfirmationDialogFragment) findDialogByTag(CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG),
-                mConfirmExitRetailModeListener,
-                /* rejectListener= */ null,
-                /* neutralListener= */ null);
-
-        mAddUserButton = new MenuItem.Builder(getContext())
-                .setOnClickListener(i -> handleAddUserClicked())
-                .setTitle(mUserManager.isDemoUser()
-                        ? R.string.exit_retail_button_text : R.string.user_add_user_menu)
-                .setVisible(mUserManager.isDemoUser()
-                        || canCurrentProcessAddUsers())
-                .setUxRestrictions(CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP)
-                .build();
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mProgressBar = getToolbar().getProgressBar();
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        updateUi();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mProgressBar.setVisible(false);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        if (mAddNewUserTask != null) {
-            mAddNewUserTask.cancel(/* mayInterruptIfRunning= */ false);
-        }
-        if (mCar != null) {
-            mCar.disconnect();
-        }
-    }
-
-    @Override
-    public void onUserAddedSuccess() {
-        mIsBusy = false;
-        updateUi();
-    }
-
-    @Override
-    public void onUserAddedFailure() {
-        mIsBusy = false;
-        updateUi();
-        // Display failure dialog.
-        ErrorDialog.show(this, R.string.add_user_error_title);
-    }
-
-    @VisibleForTesting
-    void setCarUserManager(CarUserManager carUserManager) {
-        mCarUserManager = carUserManager;
-    }
-
-    private void updateUi() {
-        mAddUserButton.setEnabled(!mIsBusy);
-        mProgressBar.setVisible(mIsBusy);
-    }
-
-    private void handleAddUserClicked() {
-        // If the user is a demo user, show a dialog asking if they want to exit retail/demo mode.
-        if (mUserManager.isDemoUser()) {
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getConfirmExitRetailModeDialogFragment(getContext(),
-                            mConfirmExitRetailModeListener, null);
-
-            dialogFragment.show(getFragmentManager(), CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG);
-            return;
-        }
-
-        // If no more users can be added because the maximum allowed number is reached, let the user
-        // know.
-        if (!mUserManager.canAddMoreUsers()) {
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getMaxUsersLimitReachedDialogFragment(getContext(),
-                            UserHelper.getInstance(getContext()).getMaxSupportedRealUsers());
-
-            dialogFragment.show(getFragmentManager(), MAX_USERS_LIMIT_REACHED_DIALOG_TAG);
-            return;
-        }
-
-        // Only add the add user button if the current user is allowed to add a user.
-        if (canCurrentProcessAddUsers()) {
-            ConfirmationDialogFragment dialogFragment =
-                    UsersDialogProvider.getConfirmCreateNewUserDialogFragment(getContext(),
-                            mConfirmCreateNewUserListener, null);
-
-            dialogFragment.show(getFragmentManager(), CONFIRM_CREATE_NEW_USER_DIALOG_TAG);
-        }
-    }
-
-    private boolean canCurrentProcessAddUsers() {
-        return !mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER);
-    }
-
-    /**
-     * Data provider for Settings Search.
-     */
-    public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new CarBaseSearchIndexProvider(R.xml.users_list_fragment,
-                    Settings.ACTION_USER_SETTINGS);
-}
diff --git a/src/com/android/car/settings/users/UsersListPreferenceController.java b/src/com/android/car/settings/users/UsersListPreferenceController.java
deleted file mode 100644
index 28470d2..0000000
--- a/src/com/android/car/settings/users/UsersListPreferenceController.java
+++ /dev/null
@@ -1,44 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserManager;
-
-import com.android.car.settings.common.FragmentController;
-
-/** Business logic for populating the users for the users list settings. */
-public class UsersListPreferenceController extends UsersBasePreferenceController {
-
-    public UsersListPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected void userClicked(UserInfo userInfo) {
-        if (UserUtils.isAdminViewingNonAdmin(UserManager.get(getContext()), userInfo)) {
-            // Admin viewing non admin.
-            getFragmentController().launchFragment(
-                    UserDetailsPermissionsFragment.newInstance(userInfo.id));
-        } else {
-            getFragmentController().launchFragment(UserDetailsFragment.newInstance(userInfo.id));
-        }
-    }
-}
diff --git a/src/com/android/car/settings/users/UsersPreferenceProvider.java b/src/com/android/car/settings/users/UsersPreferenceProvider.java
deleted file mode 100644
index 2b49750..0000000
--- a/src/com/android/car/settings/users/UsersPreferenceProvider.java
+++ /dev/null
@@ -1,141 +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.
- */
-
-package com.android.car.settings.users;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.ui.preference.CarUiPreference;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Constructs the preferences to be displayed in {@link UsersListFragment} and
- * {@link ChooseNewAdminFragment}.
- */
-public class UsersPreferenceProvider {
-
-    /**
-     * Interface for registering clicks on users.
-     */
-    public interface UserClickListener {
-        /**
-         * Invoked when user is clicked.
-         *
-         * @param userInfo User for which the click is registered.
-         */
-        void onUserClicked(UserInfo userInfo);
-    }
-
-    private final Context mContext;
-    private final UserClickListener mUserPreferenceClickListener;
-    private boolean mIncludeCurrentUser;
-    private boolean mIncludeGuest;
-
-    public UsersPreferenceProvider(Context context, UserClickListener listener) {
-        mContext = context;
-        mUserPreferenceClickListener = listener;
-        mIncludeCurrentUser = true;
-        mIncludeGuest = true;
-    }
-
-    /**
-     * Sets whether createUserList should include an entry for the current user. Default is
-     * {@code true}.
-     */
-    public void setIncludeCurrentUser(boolean includeCurrentUser) {
-        mIncludeCurrentUser = includeCurrentUser;
-    }
-
-    /**
-     * Sets whether createUserList should include an entry for the guest profile. Default is
-     * {@code true}.
-     */
-    public void setIncludeGuest(boolean includeGuest) {
-        mIncludeGuest = includeGuest;
-    }
-
-    /**
-     * Creates the list of users (as preferences). The first user will be the current user (if
-     * requested) and the last user will be the guest user (if requested). Otherwise, the list is
-     * populated with all of the remaining switchable users.
-     */
-    public List<Preference> createUserList() {
-        List<Preference> users = new ArrayList<>();
-        UserInfo currUserInfo = UserHelper.getInstance(mContext).getCurrentProcessUserInfo();
-
-        // Show current user at the top of the list.
-        if (mIncludeCurrentUser) {
-            users.add(createUserPreference(currUserInfo));
-        }
-
-        // Display all users on the system, except: Guests and current user who's displayed already.
-        List<UserInfo> infos = UserHelper.getInstance(mContext).getAllLivingUsers(
-                userInfo -> !userInfo.isGuest() && userInfo.id != currUserInfo.id);
-        for (UserInfo userInfo : infos) {
-            users.add(createUserPreference(userInfo));
-        }
-
-        // Display guest session option.
-        if (mIncludeGuest) {
-            users.add(createGuestUserPreference());
-        }
-
-        return users;
-    }
-
-    private Preference createUserPreference(UserInfo userInfo) {
-        CarUiPreference preference = new CarUiPreference(mContext);
-        preference.setIcon(
-                new UserIconProvider().getRoundedUserIcon(userInfo, mContext));
-        preference.setTitle(UserUtils.getUserDisplayName(mContext, userInfo));
-
-        if (!userInfo.isInitialized()) {
-            preference.setSummary(R.string.user_summary_not_set_up);
-        }
-        if (userInfo.isAdmin()) {
-            preference.setSummary(
-                    isCurrentUser(userInfo) ? R.string.signed_in_admin_user : R.string.user_admin);
-        }
-
-        preference.setOnPreferenceClickListener(pref -> {
-            if (mUserPreferenceClickListener == null) {
-                return false;
-            }
-            mUserPreferenceClickListener.onUserClicked(userInfo);
-            return true;
-        });
-
-        return preference;
-    }
-
-    private Preference createGuestUserPreference() {
-        CarUiPreference preference = new CarUiPreference(mContext);
-        preference.setIcon(
-                new UserIconProvider().getRoundedGuestDefaultIcon(mContext.getResources()));
-        preference.setTitle(R.string.user_guest);
-        return preference;
-    }
-
-    private boolean isCurrentUser(UserInfo userInfo) {
-        return UserHelper.getInstance(mContext).isCurrentProcessUser(userInfo);
-    }
-}
diff --git a/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java b/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java
deleted file mode 100644
index e4a4b98..0000000
--- a/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java
+++ /dev/null
@@ -1,156 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.drivingstate.CarUxRestrictionsManager;
-import android.content.Context;
-import android.net.wifi.WifiManager;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.CarUxRestrictionsHelper;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.wifi.details.WifiDetailsFragment;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Renders a list of {@link AccessPoint} as a list of preferences.
- */
-public class AccessPointListPreferenceController extends
-        WifiBasePreferenceController<PreferenceGroup> implements
-        Preference.OnPreferenceClickListener,
-        Preference.OnPreferenceChangeListener,
-        CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
-    private static final Logger LOG = new Logger(AccessPointListPreferenceController.class);
-    private final WifiManager.ActionListener mConnectionListener =
-            new WifiManager.ActionListener() {
-                @Override
-                public void onSuccess() {
-                    LOG.d("connected to network");
-                }
-
-                @Override
-                public void onFailure(int reason) {
-                    LOG.d("Failed to connect to network. Failure code: " + reason);
-                    Toast.makeText(getContext(), R.string.wifi_failed_connect_message,
-                            Toast.LENGTH_SHORT).show();
-                }
-            };
-    private List<AccessPoint> mAccessPoints = new ArrayList<>();
-
-    public AccessPointListPreferenceController(@NonNull Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<PreferenceGroup> getPreferenceType() {
-        return PreferenceGroup.class;
-    }
-
-    @Override
-    protected void updateState(PreferenceGroup preferenceGroup) {
-        if (getCarWifiManager() == null) {
-            return;
-        }
-        mAccessPoints = CarUxRestrictionsHelper.isNoSetup(getUxRestrictions())
-                ? getCarWifiManager().getSavedAccessPoints()
-                : getCarWifiManager().getAllAccessPoints();
-        LOG.d("showing accessPoints: " + mAccessPoints.size());
-
-        preferenceGroup.setVisible(!mAccessPoints.isEmpty());
-        preferenceGroup.removeAll();
-        for (AccessPoint accessPoint : mAccessPoints) {
-            preferenceGroup.addPreference(createAccessPointPreference(accessPoint));
-        }
-    }
-
-    @Override
-    protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) {
-        // Since the list dynamically changes based on the ux restrictions, we enable this fragment
-        // regardless of the restriction. Intentional no-op.
-    }
-
-    @Override
-    public void onAccessPointsChanged() {
-        refreshUi();
-    }
-
-    @Override
-    public void onWifiStateChanged(int state) {
-        if (state == WifiManager.WIFI_STATE_ENABLED) {
-            refreshUi();
-        }
-    }
-
-    @Override
-    public boolean onPreferenceClick(Preference preference) {
-        AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
-        // For new open unsecuried wifi network, connect to it right away.
-        if (WifiUtil.isOpenNetwork(accessPoint.getSecurity())
-                && !accessPoint.isSaved() && !accessPoint.isActive()) {
-            getCarWifiManager().connectToPublicWifi(accessPoint, mConnectionListener);
-        } else if (accessPoint.isActive()) {
-            getFragmentController().launchFragment(WifiDetailsFragment.getInstance(accessPoint));
-        } else if (accessPoint.isSaved() && !WifiUtil.isAccessPointDisabledByWrongPassword(
-                accessPoint)) {
-            getCarWifiManager().connectToSavedWifi(accessPoint, mConnectionListener);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
-        WifiUtil.connectToAccessPoint(getContext(), accessPoint.getSsid().toString(),
-                accessPoint.getSecurity(), newValue.toString(), /* hidden= */ false,
-                mConnectionListener);
-        return true;
-    }
-
-    private AccessPointPreference createAccessPointPreference(AccessPoint accessPoint) {
-        LOG.d("Adding preference for " + WifiUtil.getKey(accessPoint));
-        AccessPointPreference accessPointPreference = new AccessPointPreference(getContext(),
-                accessPoint);
-        accessPointPreference.setKey(accessPoint.getKey());
-        accessPointPreference.setTitle(accessPoint.getConfigName());
-        accessPointPreference.setDialogTitle(accessPoint.getConfigName());
-        accessPointPreference.setSummary(accessPoint.getSummary());
-        accessPointPreference.setOnPreferenceClickListener(this);
-        accessPointPreference.setOnPreferenceChangeListener(this);
-        accessPointPreference.showButton(false);
-        accessPointPreference.setShowChevron(false);
-
-        if (accessPoint.isSaved()) {
-            accessPointPreference.setWidgetLayoutResource(R.layout.delete_preference_widget);
-            accessPointPreference.setOnButtonClickListener(
-                    preference -> WifiUtil.forget(getContext(), accessPoint));
-            accessPointPreference.showButton(true);
-        }
-
-        return accessPointPreference;
-    }
-}
diff --git a/src/com/android/car/settings/wifi/AccessPointPreference.java b/src/com/android/car/settings/wifi/AccessPointPreference.java
deleted file mode 100644
index 2139e92..0000000
--- a/src/com/android/car/settings/wifi/AccessPointPreference.java
+++ /dev/null
@@ -1,94 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.StateListDrawable;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.wifi.AccessPoint;
-
-/** Renders a {@link AccessPoint} as a preference. */
-public class AccessPointPreference extends ButtonPasswordEditTextPreference {
-    private static final Logger LOG = new Logger(AccessPointPreference.class);
-    private static final int[] STATE_SECURED = {
-            com.android.settingslib.R.attr.state_encrypted
-    };
-    private static final int[] STATE_NONE = {};
-    private static int[] sWifiSignalAttributes = {com.android.settingslib.R.attr.wifi_signal};
-
-    private final StateListDrawable mWifiSld;
-    private final AccessPoint mAccessPoint;
-
-    public AccessPointPreference(
-            Context context,
-            AccessPoint accessPoint) {
-        super(context);
-        mWifiSld = (StateListDrawable) context.getTheme()
-                .obtainStyledAttributes(sWifiSignalAttributes).getDrawable(0);
-        mAccessPoint = accessPoint;
-        LOG.d("creating preference for ap: " + mAccessPoint);
-        setIcon(getAccessPointIcon());
-    }
-
-    /**
-     * Returns the {@link AccessPoint}.
-     */
-    public AccessPoint getAccessPoint() {
-        return mAccessPoint;
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder holder) {
-        super.onBindViewHolder(holder);
-        setIcon(getAccessPointIcon());
-    }
-
-    @Override
-    protected void onClick() {
-        if (shouldShowPasswordDialog()) {
-            super.onClick();
-        }
-    }
-
-    /**
-     * Show password dialog for one of the following conditions:
-     * 1. AP with some security but is not saved and not active
-     * 2. AP that has been saved, but not enabled due to wrong password.
-     */
-    private boolean shouldShowPasswordDialog() {
-        return !WifiUtil.isOpenNetwork(mAccessPoint.getSecurity()) && (!mAccessPoint.isSaved()
-                || WifiUtil.isAccessPointDisabledByWrongPassword(mAccessPoint));
-    }
-
-    private Drawable getAccessPointIcon() {
-        if (mWifiSld == null) {
-            LOG.w("wifiSld is null.");
-            return null;
-        }
-        mWifiSld.setState(
-                WifiUtil.isOpenNetwork(mAccessPoint.getSecurity())
-                        ? STATE_NONE
-                        : STATE_SECURED);
-        Drawable drawable = mWifiSld.getCurrent();
-        drawable.setLevel(mAccessPoint.getLevel());
-        return drawable;
-    }
-}
diff --git a/src/com/android/car/settings/wifi/AccessPointSecurity.java b/src/com/android/car/settings/wifi/AccessPointSecurity.java
deleted file mode 100644
index cc12183..0000000
--- a/src/com/android/car/settings/wifi/AccessPointSecurity.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.car.settings.wifi;
-
-import android.content.Context;
-
-import com.android.car.settings.R;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Represents Security protocol for AccessPoint.
- */
-public class AccessPointSecurity {
-    public static final int SECURITY_NONE_POSITION = 0;
-    private final int mSecurityType;
-    private final Context mContext;
-    private static final List<Integer> SECURITY_TYPES = Arrays.asList(
-            AccessPoint.SECURITY_NONE,
-            AccessPoint.SECURITY_WEP,
-            AccessPoint.SECURITY_PSK,
-            AccessPoint.SECURITY_EAP,
-            AccessPoint.SECURITY_SAE,
-            AccessPoint.SECURITY_OWE,
-            AccessPoint.SECURITY_EAP_SUITE_B);
-
-    public static List<AccessPointSecurity> getSecurityTypes(Context context) {
-        List<AccessPointSecurity> securities = new ArrayList<>();
-        for (int security : SECURITY_TYPES) {
-            securities.add(new AccessPointSecurity(context, security));
-        }
-        return securities;
-    }
-
-    private AccessPointSecurity(Context context, int securityType) {
-        mContext = context;
-        mSecurityType = securityType;
-    }
-
-    public int getSecurityType() {
-        return mSecurityType;
-    }
-
-    @Override
-    public String toString() {
-        switch(mSecurityType) {
-            case AccessPoint.SECURITY_EAP_SUITE_B:
-                return mContext.getString(R.string.wifi_security_eap_suiteb);
-            case AccessPoint.SECURITY_EAP:
-                return mContext.getString(R.string.wifi_security_eap);
-            case AccessPoint.SECURITY_SAE:
-                return mContext.getString(R.string.wifi_security_sae);
-            case AccessPoint.SECURITY_PSK:
-                return mContext.getString(R.string.wifi_security_psk_generic);
-            case AccessPoint.SECURITY_WEP:
-                return mContext.getString(R.string.wifi_security_wep);
-            case AccessPoint.SECURITY_OWE:
-                return mContext.getString(R.string.wifi_security_owe);
-            case AccessPoint.SECURITY_NONE:
-            default:
-                return mContext.getString(R.string.wifi_security_none);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/wifi/AddWifiFragment.java b/src/com/android/car/settings/wifi/AddWifiFragment.java
index e5f711c..584405e 100644
--- a/src/com/android/car/settings/wifi/AddWifiFragment.java
+++ b/src/com/android/car/settings/wifi/AddWifiFragment.java
@@ -27,6 +27,7 @@
 import android.text.TextUtils;
 import android.widget.Toast;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.annotation.XmlRes;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
@@ -34,7 +35,7 @@
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 import java.util.Collections;
 import java.util.List;
@@ -49,7 +50,8 @@
     private static final String KEY_NETWORK_NAME = "network_name";
     private static final String KEY_SECURITY_TYPE = "security_type";
 
-    private final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
+    @VisibleForTesting
+    final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             mNetworkName = intent.getStringExtra(
@@ -58,12 +60,13 @@
         }
     };
 
-    private final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
+    @VisibleForTesting
+    final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             mSecurityType = intent.getIntExtra(
                     NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                    AccessPoint.SECURITY_NONE);
+                    WifiEntry.SECURITY_NONE);
             setButtonEnabledState();
         }
     };
@@ -87,7 +90,7 @@
 
     private MenuItem mAddWifiButton;
     private String mNetworkName;
-    private int mSecurityType = AccessPoint.SECURITY_NONE;
+    private int mSecurityType = WifiEntry.SECURITY_NONE;
 
     @Override
     public List<MenuItem> getToolbarMenuItems() {
@@ -105,14 +108,14 @@
         super.onCreate(savedInstanceState);
         if (savedInstanceState != null) {
             mNetworkName = savedInstanceState.getString(KEY_NETWORK_NAME);
-            mSecurityType = savedInstanceState.getInt(KEY_SECURITY_TYPE, AccessPoint.SECURITY_NONE);
+            mSecurityType = savedInstanceState.getInt(KEY_SECURITY_TYPE, WifiEntry.SECURITY_NONE);
         }
 
         mAddWifiButton = new MenuItem.Builder(getContext())
                 .setTitle(R.string.wifi_setup_connect)
                 .setOnClickListener(i -> {
                     // This only needs to handle hidden/unsecure networks.
-                    WifiUtil.connectToAccessPoint(getContext(), mNetworkName,
+                    WifiUtil.connectToWifiEntry(getContext(), mNetworkName,
                             mSecurityType, /* password= */ null, /* hidden= */ true,
                             mConnectionListener);
                 })
diff --git a/src/com/android/car/settings/wifi/CarWifiManager.java b/src/com/android/car/settings/wifi/CarWifiManager.java
index 639a36b..e3d2204 100644
--- a/src/com/android/car/settings/wifi/CarWifiManager.java
+++ b/src/com/android/car/settings/wifi/CarWifiManager.java
@@ -13,38 +13,49 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.car.settings.wifi;
 
 import android.annotation.Nullable;
 import android.content.Context;
-import android.net.NetworkInfo;
 import android.net.wifi.SoftApConfiguration;
 import android.net.wifi.WifiManager;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
 
-import androidx.annotation.UiThread;
+import androidx.annotation.MainThread;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
 
-import com.android.settingslib.wifi.AccessPoint;
-import com.android.settingslib.wifi.WifiTracker;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.Executor;
 
 /**
  * Manages Wifi configuration: e.g. monitors wifi states, change wifi setting etc.
  */
-public class CarWifiManager implements WifiTracker.WifiListener {
-    private final Context mContext;
-    private final List<Listener> mListeners = new ArrayList<>();
-    private boolean mStarted;
+public class CarWifiManager implements WifiPickerTracker.WifiPickerTrackerCallback,
+        LifecycleObserver {
+    private static final String TAG = "CarWifiManager";
 
-    private WifiTracker mWifiTracker;
+    private final Context mContext;
+    private final Lifecycle mLifecycle;
+    private final List<Listener> mListeners = new ArrayList<>();
+
+    private HandlerThread mWorkerThread;
+    private WifiPickerTracker mWifiTracker;
     private WifiManager mWifiManager;
 
     public interface Listener {
         /**
          * Something about wifi setting changed.
          */
-        void onAccessPointsChanged();
+        void onWifiEntriesChanged();
 
         /**
          * Called when the state of Wifi has changed, the state will be one of
@@ -62,10 +73,30 @@
         void onWifiStateChanged(int state);
     }
 
-    public CarWifiManager(Context context) {
+    public CarWifiManager(Context context, Lifecycle lifecycle) {
         mContext = context;
+        mLifecycle = lifecycle;
+        mLifecycle.addObserver(this);
         mWifiManager = mContext.getSystemService(WifiManager.class);
-        mWifiTracker = new WifiTracker(context, this, true, true);
+        mWorkerThread = new HandlerThread(TAG
+                + "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
+                android.os.Process.THREAD_PRIORITY_BACKGROUND);
+        mWorkerThread.start();
+        mWifiTracker = WifiUtil.createWifiPickerTracker(lifecycle, context,
+                new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
+                /* listener= */ this);
+    }
+
+    /**
+     * Lifecycle method to clean up worker thread on destroy.
+     */
+    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+    @MainThread
+    public void onDestroy() {
+        if (mWorkerThread != null) {
+            mWorkerThread.quit();
+        }
+        mLifecycle.removeObserver(this);
     }
 
     /**
@@ -83,78 +114,49 @@
     }
 
     /**
-     * Starts {@link CarWifiManager}.
-     * This should be called only from main thread.
+     * Returns the currently connected Wi-Fi entry or {@code null} if there is no Wi-Fi
+     * network connected.
      */
-    @UiThread
-    public void start() {
-        if (!mStarted) {
-            mStarted = true;
-            mWifiTracker.onStart();
-        }
-    }
-
-    /**
-     * Stops {@link CarWifiManager}.
-     * This should be called only from main thread.
-     */
-    @UiThread
-    public void stop() {
-        if (mStarted) {
-            mStarted = false;
-            mWifiTracker.onStop();
-        }
-    }
-
-    /**
-     * Destroys {@link CarWifiManager}
-     * This should only be called from main thread.
-     */
-    @UiThread
-    public void destroy() {
-        mWifiTracker.onDestroy();
-    }
-
-    /**
-     * Returns a list of all reachable access points.
-     */
-    public List<AccessPoint> getAllAccessPoints() {
-        return getAccessPoints(false);
-    }
-
-    /**
-     * Returns a list of saved access points.
-     */
-    public List<AccessPoint> getSavedAccessPoints() {
-        return getAccessPoints(true);
-    }
-
-    private List<AccessPoint> getAccessPoints(boolean saved) {
-        List<AccessPoint> accessPoints = new ArrayList<AccessPoint>();
+    @Nullable
+    public WifiEntry getConnectedWifiEntry() {
         if (mWifiManager.isWifiEnabled()) {
-            for (AccessPoint accessPoint : mWifiTracker.getAccessPoints()) {
-                // ignore out of reach access points.
-                if (shouldIncludeAp(accessPoint, saved)) {
-                    accessPoints.add(accessPoint);
+            return mWifiTracker.getConnectedWifiEntry();
+        }
+        return null;
+    }
+
+    /**
+     * Returns a list of all reachable Wi-Fi entries, not including the connected Wi-Fi entry.
+     */
+    public List<WifiEntry> getAllWifiEntries() {
+        return getWifiEntries(false);
+    }
+
+    /**
+     * Returns a list of saved Wi-Fi entries, not including the connected Wi-Fi entry.
+     */
+    public List<WifiEntry> getSavedWifiEntries() {
+        return getWifiEntries(true);
+    }
+
+    private List<WifiEntry> getWifiEntries(boolean onlySaved) {
+        List<WifiEntry> wifiEntries = new ArrayList<WifiEntry>();
+        if (mWifiManager.isWifiEnabled()) {
+            for (WifiEntry wifiEntry : mWifiTracker.getWifiEntries()) {
+                // ignore out of reach Wi-Fi entries.
+                if (shouldIncludeWifiEntry(wifiEntry, onlySaved)) {
+                    wifiEntries.add(wifiEntry);
                 }
             }
         }
-        return accessPoints;
+        return wifiEntries;
     }
 
-    private boolean shouldIncludeAp(AccessPoint accessPoint, boolean saved) {
-        return saved ? accessPoint.isReachable() && accessPoint.isSaved()
-                : accessPoint.isReachable();
-    }
-
-    @Nullable
-    public AccessPoint getConnectedAccessPoint() {
-        for (AccessPoint accessPoint : getAllAccessPoints()) {
-            if (accessPoint.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
-                return accessPoint;
-            }
-        }
-        return null;
+    private boolean shouldIncludeWifiEntry(WifiEntry wifiEntry, boolean onlySaved) {
+        boolean reachable = wifiEntry.getLevel() != WifiEntry.WIFI_LEVEL_UNREACHABLE;
+        return onlySaved
+                ? reachable && wifiEntry.isSaved()
+                : reachable;
     }
 
     /**
@@ -209,34 +211,36 @@
         return mWifiManager.setWifiEnabled(enabled);
     }
 
-    /** Connects to an public wifi access point. */
-    public void connectToPublicWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
-        accessPoint.generateOpenNetworkConfig();
-        mWifiManager.connect(accessPoint.getConfig(), listener);
+    /** Adds callback for Soft AP */
+    public void registerSoftApCallback(Executor executor, WifiManager.SoftApCallback callback) {
+        mWifiManager.registerSoftApCallback(executor, callback);
     }
 
-    /** Connects to a saved access point. */
-    public void connectToSavedWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
-        if (accessPoint.isSaved()) {
-            mWifiManager.connect(accessPoint.getConfig(), listener);
+    /** Removes callback for Soft AP */
+    public void unregisterSoftApCallback(WifiManager.SoftApCallback callback) {
+        mWifiManager.unregisterSoftApCallback(callback);
+    }
+
+    @Override
+    public void onWifiEntriesChanged() {
+        for (Listener listener : mListeners) {
+            listener.onWifiEntriesChanged();
         }
     }
 
     @Override
-    public void onWifiStateChanged(int state) {
+    public void onNumSavedNetworksChanged() {
+    }
+
+    @Override
+    public void onNumSavedSubscriptionsChanged() {
+    }
+
+    @Override
+    public void onWifiStateChanged() {
+        int state = mWifiTracker.getWifiState();
         for (Listener listener : mListeners) {
             listener.onWifiStateChanged(state);
         }
     }
-
-    @Override
-    public void onConnectedChanged() {
-    }
-
-    @Override
-    public void onAccessPointsChanged() {
-        for (Listener listener : mListeners) {
-            listener.onAccessPointsChanged();
-        }
-    }
 }
diff --git a/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceController.java b/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceController.java
new file mode 100644
index 0000000..27c49fd
--- /dev/null
+++ b/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceController.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.wifitrackerlib.WifiEntry;
+
+import java.util.List;
+
+/**
+ * Renders a list of no more than a specified number of {@link WifiEntry} as a list of preferences.
+ */
+public class LimitedWifiEntryListPreferenceController extends WifiEntryListPreferenceController
+        implements CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
+
+    private int mMaxWifiEntryCount;
+
+    public LimitedWifiEntryListPreferenceController(@NonNull Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mMaxWifiEntryCount = getContext().getResources().getInteger(
+                R.integer.limited_wifi_entry_list_count);
+    }
+
+    @Override
+    protected List<WifiEntry> fetchWifiEntries() {
+        List<WifiEntry> wifiEntries = super.fetchWifiEntries();
+
+        if (wifiEntries.size() > mMaxWifiEntryCount) {
+            wifiEntries.subList(mMaxWifiEntryCount, wifiEntries.size()).clear();
+        }
+
+        return wifiEntries;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java b/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java
index 3da2bf9..463e56f 100644
--- a/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java
+++ b/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java
@@ -27,13 +27,14 @@
 import android.text.TextUtils;
 import android.widget.Toast;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 /** Business logic relating to the security type and associated password. */
 public class NetworkPasswordPreferenceController extends
@@ -41,7 +42,8 @@
 
     private static final Logger LOG = new Logger(NetworkPasswordPreferenceController.class);
 
-    private final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
+    @VisibleForTesting
+    final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             mNetworkName = intent.getStringExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME);
@@ -50,12 +52,13 @@
         }
     };
 
-    private final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
+    @VisibleForTesting
+    final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             mSecurityType = intent.getIntExtra(
                     NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                    AccessPoint.SECURITY_NONE);
+                    WifiEntry.SECURITY_NONE);
             refreshUi();
         }
     };
@@ -78,7 +81,7 @@
             };
 
     private String mNetworkName;
-    private int mSecurityType = AccessPoint.SECURITY_NONE;
+    private int mSecurityType = WifiEntry.SECURITY_NONE;
 
     public NetworkPasswordPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
@@ -118,7 +121,7 @@
     protected boolean handlePreferenceChanged(
             NetworkNameRestrictedPasswordEditTextPreference preference, Object newValue) {
         String password = newValue.toString();
-        WifiUtil.connectToAccessPoint(getContext(), mNetworkName, mSecurityType,
+        WifiUtil.connectToWifiEntry(getContext(), mNetworkName, mSecurityType,
                 password, /* hidden= */ true, mConnectionListener);
         return true;
     }
diff --git a/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java b/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java
index 4e0dd9d..43c1e9f 100644
--- a/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java
+++ b/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java
@@ -27,7 +27,7 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -48,13 +48,13 @@
             createSecurityTypeDescMap();
 
     private static final List<Integer> SECURITY_TYPES = Arrays.asList(
-            AccessPoint.SECURITY_NONE,
-            AccessPoint.SECURITY_WEP,
-            AccessPoint.SECURITY_PSK,
-            AccessPoint.SECURITY_EAP,
-            AccessPoint.SECURITY_SAE,
-            AccessPoint.SECURITY_OWE,
-            AccessPoint.SECURITY_EAP_SUITE_B);
+            WifiEntry.SECURITY_NONE,
+            WifiEntry.SECURITY_WEP,
+            WifiEntry.SECURITY_PSK,
+            WifiEntry.SECURITY_EAP,
+            WifiEntry.SECURITY_SAE,
+            WifiEntry.SECURITY_OWE,
+            WifiEntry.SECURITY_EAP_SUITE_B);
 
     private CharSequence[] mSecurityTypeNames;
     private CharSequence[] mSecurityTypeIds;
@@ -78,40 +78,40 @@
         WifiManager wifiManager = getContext().getSystemService(WifiManager.class);
 
         securityTypeNamesList.add(getContext().getString(
-                SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_NONE)));
-        securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_NONE));
+                SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_NONE)));
+        securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_NONE));
 
         if (wifiManager.isEnhancedOpenSupported()) {
             securityTypeNamesList.add(getContext().getString(
-                    SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_OWE)));
-            securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_OWE));
+                    SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_OWE)));
+            securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_OWE));
         }
 
         securityTypeNamesList.add(getContext().getString(
-                SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_WEP)));
-        securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_WEP));
+                SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_WEP)));
+        securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_WEP));
 
         securityTypeNamesList.add(getContext().getString(
-                SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_PSK)));
-        securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_PSK));
+                SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_PSK)));
+        securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_PSK));
 
         if (wifiManager.isWpa3SaeSupported()) {
             securityTypeNamesList.add(getContext().getString(
-                    SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_SAE)));
-            securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_SAE));
+                    SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_SAE)));
+            securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_SAE));
         }
 
         securityTypeNamesList.add(getContext().getString(
-                SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_EAP)));
-        securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_EAP));
+                SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_EAP)));
+        securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_EAP));
 
         if (wifiManager.isWpa3SuiteBSupported()) {
             securityTypeNamesList.add(getContext().getString(
-                    SECURITY_TYPE_TO_DESC_RES.get(AccessPoint.SECURITY_EAP_SUITE_B)));
-            securityTypeIdsList.add(Integer.toString(AccessPoint.SECURITY_EAP_SUITE_B));
+                    SECURITY_TYPE_TO_DESC_RES.get(WifiEntry.SECURITY_EAP_SUITE_B)));
+            securityTypeIdsList.add(Integer.toString(WifiEntry.SECURITY_EAP_SUITE_B));
         }
 
-        mSelectedSecurityType = AccessPoint.SECURITY_NONE;
+        mSelectedSecurityType = WifiEntry.SECURITY_NONE;
         mSecurityTypeNames = new CharSequence[securityTypeNamesList.size()];
         mSecurityTypeNames = securityTypeNamesList.toArray(mSecurityTypeNames);
         mSecurityTypeIds = new CharSequence[securityTypeIdsList.size()];
@@ -119,7 +119,7 @@
 
         getPreference().setEntries(mSecurityTypeNames);
         getPreference().setEntryValues(mSecurityTypeIds);
-        getPreference().setDefaultValue(Integer.toString(AccessPoint.SECURITY_NONE));
+        getPreference().setDefaultValue(Integer.toString(WifiEntry.SECURITY_NONE));
     }
 
     @Override
@@ -143,13 +143,13 @@
 
     private static Map<Integer, Integer> createSecurityTypeDescMap() {
         Map<Integer, Integer> map = new HashMap<>();
-        map.put(AccessPoint.SECURITY_NONE, R.string.wifi_security_none);
-        map.put(AccessPoint.SECURITY_WEP, R.string.wifi_security_wep);
-        map.put(AccessPoint.SECURITY_PSK, R.string.wifi_security_psk_generic);
-        map.put(AccessPoint.SECURITY_EAP, R.string.wifi_security_eap);
-        map.put(AccessPoint.SECURITY_SAE, R.string.wifi_security_sae);
-        map.put(AccessPoint.SECURITY_OWE, R.string.wifi_security_owe);
-        map.put(AccessPoint.SECURITY_EAP_SUITE_B, R.string.wifi_security_eap_suiteb);
+        map.put(WifiEntry.SECURITY_NONE, R.string.wifi_security_none);
+        map.put(WifiEntry.SECURITY_WEP, R.string.wifi_security_wep);
+        map.put(WifiEntry.SECURITY_PSK, R.string.wifi_security_psk_generic);
+        map.put(WifiEntry.SECURITY_EAP, R.string.wifi_security_eap);
+        map.put(WifiEntry.SECURITY_SAE, R.string.wifi_security_sae);
+        map.put(WifiEntry.SECURITY_OWE, R.string.wifi_security_owe);
+        map.put(WifiEntry.SECURITY_EAP_SUITE_B, R.string.wifi_security_eap_suiteb);
         return map;
     }
 }
diff --git a/src/com/android/car/settings/wifi/WifiBasePreferenceController.java b/src/com/android/car/settings/wifi/WifiBasePreferenceController.java
index b53cf39..72f1548 100644
--- a/src/com/android/car/settings/wifi/WifiBasePreferenceController.java
+++ b/src/com/android/car/settings/wifi/WifiBasePreferenceController.java
@@ -42,24 +42,18 @@
 
     @Override
     protected void onCreateInternal() {
-        mCarWifiManager = new CarWifiManager(getContext());
+        mCarWifiManager = new CarWifiManager(getContext(),
+                getFragmentController().getSettingsLifecycle());
     }
 
     @Override
     protected void onStartInternal() {
         mCarWifiManager.addListener(this);
-        mCarWifiManager.start();
     }
 
     @Override
     protected void onStopInternal() {
         mCarWifiManager.removeListener(this);
-        mCarWifiManager.stop();
-    }
-
-    @Override
-    protected void onDestroyInternal() {
-        mCarWifiManager.destroy();
     }
 
     @Override
@@ -68,7 +62,7 @@
     }
 
     @Override
-    public void onAccessPointsChanged() {
+    public void onWifiEntriesChanged() {
         // don't care
     }
 
diff --git a/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceController.java b/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceController.java
new file mode 100644
index 0000000..ff0078e
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceController.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller for displaying a group of {@link com.android.wifitrackerlib.WifiEntry} information
+ */
+public class WifiEntryGroupPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    public WifiEntryGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return WifiUtil.isWifiAvailable(getContext()) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiEntryListPreferenceController.java b/src/com/android/car/settings/wifi/WifiEntryListPreferenceController.java
new file mode 100644
index 0000000..f81f5c7
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiEntryListPreferenceController.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.CarUxRestrictionsHelper;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.wifi.details.WifiDetailsFragment;
+import com.android.wifitrackerlib.WifiEntry;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Renders a list of {@link WifiEntry} as a list of preferences.
+ */
+public class WifiEntryListPreferenceController extends
+        WifiBasePreferenceController<PreferenceGroup> implements
+        CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
+    private static final Logger LOG = new Logger(WifiEntryListPreferenceController.class);
+    private final WifiManager.ActionListener mConnectionListener =
+            new WifiManager.ActionListener() {
+                @Override
+                public void onSuccess() {
+                    LOG.d("connected to network");
+                }
+
+                @Override
+                public void onFailure(int reason) {
+                    LOG.d("Failed to connect to network. Failure code: " + reason);
+                    Toast.makeText(getContext(), R.string.wifi_failed_connect_message,
+                            Toast.LENGTH_SHORT).show();
+                }
+            };
+
+    @VisibleForTesting
+    final WifiPasswordDialog.WifiDialogListener mDialogListener =
+            new WifiPasswordDialog.WifiDialogListener() {
+                @Override
+                public void onSubmit(WifiPasswordDialog dialog) {
+                    WifiConfiguration config = dialog.getConfig();
+                    WifiEntry wifiEntry = dialog.getWifiEntry();
+                    if (config == null) {
+                        wifiEntry.connect(
+                                new WifiEntryConnectCallback(wifiEntry,
+                                        /* editIfNoConfig= */ false));
+                    } else {
+                        getWifiManager().connect(config, mConnectionListener);
+                    }
+                }
+            };
+
+    private List<WifiEntry> mWifiEntries = new ArrayList<>();
+
+    public WifiEntryListPreferenceController(@NonNull Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        if (getCarWifiManager() == null) {
+            return;
+        }
+        mWifiEntries = fetchWifiEntries();
+
+        LOG.d("showing wifiEntries: " + mWifiEntries.size());
+
+        preferenceGroup.setVisible(!mWifiEntries.isEmpty());
+        preferenceGroup.removeAll();
+
+        WifiEntry connectedWifiEntry = getCarWifiManager().getConnectedWifiEntry();
+        for (WifiEntry wifiEntry : mWifiEntries) {
+            if (wifiEntry.equals(connectedWifiEntry)) {
+                preferenceGroup.addPreference(
+                        createWifiEntryPreference(wifiEntry, /* connected= */  true));
+            } else {
+                preferenceGroup.addPreference(
+                        createWifiEntryPreference(wifiEntry, /* connected= */ false));
+            }
+        }
+    }
+
+    @Override
+    protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) {
+        // Since the list dynamically changes based on the UX restrictions, we enable this fragment
+        // regardless of the restriction. Intentional no-op.
+    }
+
+    @Override
+    public void onWifiEntriesChanged() {
+        refreshUi();
+    }
+
+    @Override
+    public void onWifiStateChanged(int state) {
+        if (state == WifiManager.WIFI_STATE_ENABLED) {
+            refreshUi();
+        }
+    }
+
+    /**
+     * Get all {@link WifiEntry} that should be displayed as a list.
+     * @return List of wifi entries that should be displayed
+     */
+    protected List<WifiEntry> fetchWifiEntries() {
+        List<WifiEntry> wifiEntries = CarUxRestrictionsHelper.isNoSetup(getUxRestrictions())
+                ? getCarWifiManager().getSavedWifiEntries()
+                : getCarWifiManager().getAllWifiEntries();
+
+        WifiEntry connectedWifiEntry = getCarWifiManager().getConnectedWifiEntry();
+        // Insert current connected network as first item, if available
+        if (connectedWifiEntry != null) {
+            wifiEntries.add(0, connectedWifiEntry);
+        }
+        return wifiEntries;
+    }
+
+    @VisibleForTesting
+    WifiManager getWifiManager() {
+        return getContext().getSystemService(WifiManager.class);
+    }
+
+    private WifiEntryPreference createWifiEntryPreference(WifiEntry wifiEntry, boolean connected) {
+        LOG.d("Adding preference for " + WifiUtil.getKey(wifiEntry));
+        WifiEntryPreference wifiEntryPreference = new WifiEntryPreference(getContext(), wifiEntry);
+        wifiEntryPreference.setOnPreferenceClickListener(pref -> {
+            if (connected) {
+                if (wifiEntry.canSignIn()) {
+                    wifiEntry.signIn(/* callback= */ null);
+                } else {
+                    getFragmentController().launchFragment(
+                            WifiDetailsFragment.getInstance(wifiEntry));
+                }
+            } else if (wifiEntry.shouldEditBeforeConnect()) {
+                getFragmentController().showDialog(
+                        new WifiPasswordDialog(wifiEntry, mDialogListener), WifiPasswordDialog.TAG);
+            } else {
+                wifiEntry.connect(
+                        new WifiEntryConnectCallback(wifiEntry, /* editIfNoConfig= */ true));
+            }
+            return true;
+        });
+
+        if (wifiEntry.isSaved()) {
+            wifiEntryPreference.setSecondaryActionIcon(R.drawable.ic_delete);
+            wifiEntryPreference.setOnSecondaryActionClickListener(
+                    () -> wifiEntry.forget(/* callback= */ null));
+            wifiEntryPreference.setSecondaryActionVisible(true);
+        }
+
+        return wifiEntryPreference;
+    }
+
+    private class WifiEntryConnectCallback implements WifiEntry.ConnectCallback {
+        final WifiEntry mConnectWifiEntry;
+        final boolean mEditIfNoConfig;
+
+        WifiEntryConnectCallback(WifiEntry connectWifiEntry, boolean editIfNoConfig) {
+            mConnectWifiEntry = connectWifiEntry;
+            mEditIfNoConfig = editIfNoConfig;
+        }
+
+        @Override
+        public void onConnectResult(@ConnectStatus int status) {
+            if (!isStarted()) {
+                return;
+            }
+
+            if (status == WifiEntry.ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) {
+                if (mEditIfNoConfig) {
+                    getFragmentController().showDialog(
+                            new WifiPasswordDialog(mConnectWifiEntry, mDialogListener),
+                            WifiPasswordDialog.TAG);
+                }
+            } else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) {
+                Toast.makeText(getContext(), R.string.wifi_failed_connect_message,
+                        Toast.LENGTH_SHORT).show();
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiEntryPreference.java b/src/com/android/car/settings/wifi/WifiEntryPreference.java
new file mode 100644
index 0000000..93d9387
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiEntryPreference.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.common.Logger;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.wifitrackerlib.WifiEntry;
+
+/** Renders a {@link WifiEntry} as a preference. */
+public class WifiEntryPreference extends CarUiTwoActionIconPreference
+        implements WifiEntry.WifiEntryCallback{
+    private static final Logger LOG = new Logger(WifiEntryPreference.class);
+    private static final int[] STATE_SECURED = {
+            com.android.settingslib.R.attr.state_encrypted
+    };
+    private static final int[] STATE_NONE = {};
+    private static final int[] sWifiSignalAttributes = {com.android.settingslib.R.attr.wifi_signal};
+
+    private final WifiEntry mWifiEntry;
+    @Nullable
+    private final StateListDrawable mWifiSld;
+
+    public WifiEntryPreference(Context context, WifiEntry wifiEntry) {
+        super(context);
+        LOG.d("creating preference for: " + wifiEntry);
+        mWifiSld = (StateListDrawable) context.getTheme()
+                .obtainStyledAttributes(sWifiSignalAttributes).getDrawable(0);
+        if (mWifiSld != null) {
+            mWifiSld.mutate();
+        }
+        mWifiEntry = wifiEntry;
+        mWifiEntry.setListener(this);
+        setKey(wifiEntry.getKey());
+        setSecondaryActionVisible(false);
+        setShowChevron(false);
+        refresh();
+    }
+
+    /**
+     * Returns the {@link WifiEntry} that is represented by this preference.
+     */
+    public WifiEntry getWifiEntry() {
+        return mWifiEntry;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        setIcon(getWifiEntryIcon());
+    }
+
+    @Override
+    public void onUpdated() {
+        refresh();
+    }
+
+    private void refresh() {
+        setTitle(mWifiEntry.getSsid());
+        setSummary(mWifiEntry.getSummary(/* concise= */ false));
+        setIcon(getWifiEntryIcon());
+    }
+
+    private Drawable getWifiEntryIcon() {
+        if (mWifiSld == null) {
+            LOG.w("wifiSld is null.");
+            return null;
+        }
+        mWifiSld.setState(
+                WifiUtil.isOpenNetwork(mWifiEntry.getSecurity())
+                        ? STATE_NONE
+                        : STATE_SECURED);
+        Drawable drawable = mWifiSld.getCurrent();
+        drawable.setLevel(mWifiEntry.getLevel());
+        return drawable;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java b/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java
deleted file mode 100644
index 5473d3c..0000000
--- a/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java
+++ /dev/null
@@ -1,91 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.net.wifi.WifiManager;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
-
-/**
- * Controller which determines if the top level entry into Wi-Fi settings should be displayed
- * based on device capabilities.
- */
-public class WifiEntryPreferenceController extends
-        PreferenceController<CarUiTwoActionSwitchPreference>
-        implements CarWifiManager.Listener {
-
-    private CarWifiManager mCarWifiManager;
-
-    public WifiEntryPreferenceController(Context context, String preferenceKey,
-            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-        super(context, preferenceKey, fragmentController, uxRestrictions);
-    }
-
-    @Override
-    protected Class<CarUiTwoActionSwitchPreference> getPreferenceType() {
-        return CarUiTwoActionSwitchPreference.class;
-    }
-
-    @Override
-    protected void onCreateInternal() {
-        mCarWifiManager = new CarWifiManager(getContext());
-        getPreference().setOnSecondaryActionClickListener(isChecked -> {
-            if (isChecked != mCarWifiManager.isWifiEnabled()) {
-                mCarWifiManager.setWifiEnabled(isChecked);
-            }
-        });
-    }
-
-    @Override
-    protected void onStartInternal() {
-        mCarWifiManager.addListener(this);
-        mCarWifiManager.start();
-        getPreference().setSecondaryActionChecked(mCarWifiManager.isWifiEnabled());
-    }
-
-    @Override
-    protected void onStopInternal() {
-        mCarWifiManager.removeListener(this);
-        mCarWifiManager.stop();
-    }
-
-    @Override
-    protected void onDestroyInternal() {
-        mCarWifiManager.destroy();
-    }
-
-    @Override
-    protected int getAvailabilityStatus() {
-        return WifiUtil.isWifiAvailable(getContext()) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public void onWifiStateChanged(int state) {
-        getPreference().setSecondaryActionChecked(state == WifiManager.WIFI_STATE_ENABLED
-                || state == WifiManager.WIFI_STATE_ENABLING);
-    }
-
-    @Override
-    public void onAccessPointsChanged() {
-        // don't care.
-        return;
-    }
-}
diff --git a/src/com/android/car/settings/wifi/WifiEntrySecurity.java b/src/com/android/car/settings/wifi/WifiEntrySecurity.java
new file mode 100644
index 0000000..8b8910a
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiEntrySecurity.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.wifi;
+
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.wifitrackerlib.WifiEntry;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Represents Security protocol for WifiEntry.
+ */
+public class WifiEntrySecurity {
+    public static final int SECURITY_NONE_POSITION = 0;
+    private final int mSecurityType;
+    private final Context mContext;
+    private static final List<Integer> SECURITY_TYPES = Arrays.asList(
+            WifiEntry.SECURITY_NONE,
+            WifiEntry.SECURITY_WEP,
+            WifiEntry.SECURITY_PSK,
+            WifiEntry.SECURITY_EAP,
+            WifiEntry.SECURITY_SAE,
+            WifiEntry.SECURITY_OWE,
+            WifiEntry.SECURITY_EAP_SUITE_B);
+
+    /**
+     * Returns a list of security protocols for WifiEntries.
+     */
+    public static List<WifiEntrySecurity> getSecurityTypes(Context context) {
+        List<WifiEntrySecurity> securities = new ArrayList<>();
+        for (int security : SECURITY_TYPES) {
+            securities.add(new WifiEntrySecurity(context, security));
+        }
+        return securities;
+    }
+
+    private WifiEntrySecurity(Context context, int securityType) {
+        mContext = context;
+        mSecurityType = securityType;
+    }
+
+    public int getSecurityType() {
+        return mSecurityType;
+    }
+
+    @Override
+    public String toString() {
+        switch(mSecurityType) {
+            case WifiEntry.SECURITY_EAP_SUITE_B:
+                return mContext.getString(R.string.wifi_security_eap_suiteb);
+            case WifiEntry.SECURITY_EAP:
+                return mContext.getString(R.string.wifi_security_eap);
+            case WifiEntry.SECURITY_SAE:
+                return mContext.getString(R.string.wifi_security_sae);
+            case WifiEntry.SECURITY_PSK:
+                return mContext.getString(R.string.wifi_security_psk_generic);
+            case WifiEntry.SECURITY_WEP:
+                return mContext.getString(R.string.wifi_security_wep);
+            case WifiEntry.SECURITY_OWE:
+                return mContext.getString(R.string.wifi_security_owe);
+            case WifiEntry.SECURITY_NONE:
+            default:
+                return mContext.getString(R.string.wifi_security_none);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiPasswordDialog.java b/src/com/android/car/settings/wifi/WifiPasswordDialog.java
new file mode 100644
index 0000000..edddecb
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiPasswordDialog.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.content.DialogInterface;
+import android.net.wifi.WifiConfiguration;
+import android.os.Bundle;
+import android.text.InputType;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.ui.preference.CarUiDialogFragment;
+import com.android.wifitrackerlib.WifiEntry;
+
+/** Password dialog for {@link WifiEntry}. */
+public class WifiPasswordDialog extends CarUiDialogFragment {
+    public static final String TAG = "WifiPasswordDialog";
+    private final WifiEntry mWifiEntry;
+    private final WifiDialogListener mListener;
+    private EditText mEditText;
+
+    /**
+     * Host UI component of WifiDialog can receive callbacks by this interface.
+     */
+    public interface WifiDialogListener {
+        /**
+         * To save the Wi-Fi network.
+         */
+        default void onSubmit(WifiPasswordDialog dialog) {
+        }
+    }
+
+    public WifiPasswordDialog(@NonNull WifiEntry wifiEntry, @Nullable WifiDialogListener listener) {
+        super();
+        mListener = listener;
+        mWifiEntry = wifiEntry;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mDialogTitle = mWifiEntry.getSsid();
+        mDialogLayoutRes = R.layout.preference_dialog_password_edittext;
+        mPositiveButtonText = getContext().getString(R.string.okay);
+        mNegativeButtonText = getContext().getString(R.string.cancel);
+    }
+
+    @Override
+    protected void onBindDialogView(@NonNull View view) {
+        super.onBindDialogView(view);
+        mEditText = view.findViewById(android.R.id.edit);
+        mEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+        CheckBox cb = view.findViewById(R.id.checkbox);
+        cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    mEditText.setInputType(InputType.TYPE_CLASS_TEXT
+                            | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+                } else {
+                    mEditText.setInputType(InputType.TYPE_CLASS_TEXT
+                            | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+                }
+                // Place cursor at the end
+                mEditText.setSelection(mEditText.getText().length());
+            }
+        });
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (mListener != null) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                mListener.onSubmit(this);
+            }
+        }
+    }
+
+    @Override
+    protected void onDialogClosed(boolean positiveResult) {
+    }
+
+    public WifiEntry getWifiEntry() {
+        return mWifiEntry;
+    }
+
+    /**
+     * @return {@link WifiConfiguration} from mWifiEntry and UI edit result
+     */
+    public WifiConfiguration getConfig() {
+        return WifiUtil.getWifiConfig(mWifiEntry, mEditText.getText().toString());
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java b/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java
index 6cd8db9..268eacc 100644
--- a/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java
+++ b/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java
@@ -34,6 +34,7 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.ConfirmationDialogFragment;
 import com.android.car.settings.common.Logger;
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
 
 /**
  * Code drop from {@link com.android.settings.wifi.RequestToggleWiFiActivity}.
@@ -100,8 +101,9 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
-        mCarWifiManager = new CarWifiManager(getApplicationContext());
+        mCarWifiManager = new CarWifiManager(getApplicationContext(), getLifecycle());
 
         setResult(Activity.RESULT_CANCELED);
 
diff --git a/src/com/android/car/settings/wifi/WifiSettingsFragment.java b/src/com/android/car/settings/wifi/WifiSettingsFragment.java
index 048cfa4..dbab6c9 100644
--- a/src/com/android/car/settings/wifi/WifiSettingsFragment.java
+++ b/src/com/android/car/settings/wifi/WifiSettingsFragment.java
@@ -26,13 +26,10 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.ui.toolbar.MenuItem;
 import com.android.car.ui.toolbar.ProgressBarController;
+import com.android.car.ui.toolbar.ToolbarController;
 import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.Collections;
-import java.util.List;
+import com.android.wifitrackerlib.WifiEntry;
 
 /**
  * Main page to host Wifi related preferences.
@@ -42,18 +39,12 @@
         implements CarWifiManager.Listener {
 
     private static final int SEARCHING_DELAY_MILLIS = 1700;
-    private static final String EXTRA_CONNECTED_ACCESS_POINT_KEY = "connected_access_point_key";
+    private static final String EXTRA_CONNECTED_WIFI_ENTRY_KEY = "connected_wifi_entry_key";
 
     private CarWifiManager mCarWifiManager;
     private ProgressBarController mProgressBar;
-    private MenuItem mWifiSwitch;
     @Nullable
-    private String mConnectedAccessPointKey;
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mWifiSwitch);
-    }
+    private String mConnectedWifiEntryKey;
 
     @Override
     @XmlRes
@@ -64,42 +55,31 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mCarWifiManager = new CarWifiManager(getContext());
-
-        mWifiSwitch = new MenuItem.Builder(getContext())
-                .setCheckable()
-                .setChecked(mCarWifiManager.isWifiEnabled())
-                .setOnClickListener(i -> {
-                    if (mWifiSwitch.isChecked() != mCarWifiManager.isWifiEnabled()) {
-                        mCarWifiManager.setWifiEnabled(mWifiSwitch.isChecked());
-                    }
-                })
-                .build();
+        mCarWifiManager = new CarWifiManager(getContext(), getLifecycle());
 
         if (savedInstanceState != null) {
-            mConnectedAccessPointKey = savedInstanceState.getString(
-                    EXTRA_CONNECTED_ACCESS_POINT_KEY);
+            mConnectedWifiEntryKey = savedInstanceState.getString(
+                    EXTRA_CONNECTED_WIFI_ENTRY_KEY);
         }
     }
 
     @Override
     public void onSaveInstanceState(@NonNull Bundle outState) {
         super.onSaveInstanceState(outState);
-        outState.putString(EXTRA_CONNECTED_ACCESS_POINT_KEY, mConnectedAccessPointKey);
+        outState.putString(EXTRA_CONNECTED_WIFI_ENTRY_KEY, mConnectedWifiEntryKey);
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    protected void setupToolbar(@NonNull ToolbarController toolbar) {
+        super.setupToolbar(toolbar);
 
-        mProgressBar = getToolbar().getProgressBar();
+        mProgressBar = toolbar.getProgressBar();
     }
 
     @Override
     public void onStart() {
         super.onStart();
         mCarWifiManager.addListener(this);
-        mCarWifiManager.start();
         onWifiStateChanged(mCarWifiManager.getWifiState());
     }
 
@@ -107,43 +87,33 @@
     public void onStop() {
         super.onStop();
         mCarWifiManager.removeListener(this);
-        mCarWifiManager.stop();
         mProgressBar.setVisible(false);
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
-        mCarWifiManager.destroy();
     }
 
     @Override
-    public void onAccessPointsChanged() {
+    public void onWifiEntriesChanged() {
         mProgressBar.setVisible(true);
         getView().postDelayed(() -> mProgressBar.setVisible(false), SEARCHING_DELAY_MILLIS);
-        AccessPoint connectedAccessPoint = mCarWifiManager.getConnectedAccessPoint();
-        if (connectedAccessPoint != null) {
-            String connectedAccessPointKey = connectedAccessPoint.getKey();
-            if (!connectedAccessPointKey.equals(mConnectedAccessPointKey)) {
-                scrollToPreference(connectedAccessPointKey);
-                mConnectedAccessPointKey = connectedAccessPointKey;
+        WifiEntry connectedWifiEntry = mCarWifiManager.getConnectedWifiEntry();
+        if (connectedWifiEntry != null) {
+            String connectedWifiEntryKey = connectedWifiEntry.getKey();
+            if (!connectedWifiEntryKey.equals(mConnectedWifiEntryKey)) {
+                scrollToPreference(connectedWifiEntryKey);
+                mConnectedWifiEntryKey = connectedWifiEntryKey;
             }
         } else {
-            mConnectedAccessPointKey = null;
+            mConnectedWifiEntryKey = null;
         }
     }
 
     @Override
     public void onWifiStateChanged(int state) {
-        mWifiSwitch.setChecked(state == WifiManager.WIFI_STATE_ENABLED
-                || state == WifiManager.WIFI_STATE_ENABLING);
-        switch (state) {
-            case WifiManager.WIFI_STATE_ENABLING:
-                mProgressBar.setVisible(true);
-                break;
-            default:
-                mProgressBar.setVisible(false);
-        }
+        mProgressBar.setVisible(state == WifiManager.WIFI_STATE_ENABLING);
     }
 
     /**
diff --git a/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceController.java b/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceController.java
new file mode 100644
index 0000000..d783d61
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceController.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi;
+
+import static android.car.hardware.power.PowerComponent.WIFI;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiManager;
+import android.widget.Toast;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PowerPolicyListener;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Enables/disables Wifi state via SwitchPreference.
+ */
+public class WifiStateSwitchPreferenceController extends
+        PreferenceController<ClickableWhileDisabledSwitchPreference>
+        implements CarWifiManager.Listener {
+
+    private final CarWifiManager mCarWifiManager;
+
+    @VisibleForTesting
+    final PowerPolicyListener mPowerPolicyListener;
+
+    public WifiStateSwitchPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPowerPolicyListener = new PowerPolicyListener(context, WIFI,
+                isOn -> {
+                    enableSwitchPreference(getPreference(), isOn);
+                });
+        mCarWifiManager = new CarWifiManager(context,
+                getFragmentController().getSettingsLifecycle());
+    }
+
+    @Override
+    protected Class<ClickableWhileDisabledSwitchPreference> getPreferenceType() {
+        return ClickableWhileDisabledSwitchPreference.class;
+    }
+
+    @Override
+    protected void updateState(ClickableWhileDisabledSwitchPreference preference) {
+        updateSwitchPreference(preference, mCarWifiManager.isWifiEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ClickableWhileDisabledSwitchPreference preference,
+            Object newValue) {
+        boolean wifiEnabled = (Boolean) newValue;
+        mCarWifiManager.setWifiEnabled(wifiEnabled);
+        return true;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setContentDescription(
+                getContext().getString(R.string.wifi_state_switch_content_description));
+        getPreference().setDisabledClickListener(p ->
+                Toast.makeText(getContext(),
+                        getContext().getString(R.string.power_component_disabled),
+                        Toast.LENGTH_LONG).show());
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mCarWifiManager.addListener(this);
+        onWifiStateChanged(mCarWifiManager.getWifiState());
+    }
+
+    @Override
+    protected void onResumeInternal() {
+        mPowerPolicyListener.handleCurrentPolicy();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mCarWifiManager.removeListener(this);
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mPowerPolicyListener.release();
+    }
+
+    @Override
+    public void onWifiEntriesChanged() {
+        // intentional no-op
+    }
+
+    @Override
+    public void onWifiStateChanged(int state) {
+        updateSwitchPreference(getPreference(), state == WifiManager.WIFI_STATE_ENABLED
+                || state == WifiManager.WIFI_STATE_ENABLING);
+    }
+
+    private void updateSwitchPreference(ClickableWhileDisabledSwitchPreference preference,
+            boolean enabled) {
+        preference.setChecked(enabled);
+    }
+
+    private void enableSwitchPreference(ClickableWhileDisabledSwitchPreference preference,
+            boolean enabled) {
+        preference.setEnabled(enabled);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java
index 8393ec7..05d6638 100644
--- a/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java
+++ b/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java
@@ -55,30 +55,18 @@
     @Override
     @CallSuper
     protected void onCreateInternal() {
-        mCarWifiManager = new CarWifiManager(getContext());
+        mCarWifiManager = new CarWifiManager(getContext(),
+                getFragmentController().getSettingsLifecycle());
     }
 
     @Override
     @CallSuper
     protected void onStartInternal() {
-        mCarWifiManager.start();
         getPreference().setPersistent(true);
     }
 
     @Override
     @CallSuper
-    protected void onStopInternal() {
-        mCarWifiManager.stop();
-    }
-
-    @Override
-    @CallSuper
-    protected void onDestroyInternal() {
-        mCarWifiManager.destroy();
-    }
-
-    @Override
-    @CallSuper
     protected void updateState(V preference) {
         String summary = getSummary();
         String defaultSummary = getDefaultSummary();
diff --git a/src/com/android/car/settings/wifi/WifiTetherFragment.java b/src/com/android/car/settings/wifi/WifiTetherFragment.java
index b5e5a65..0670b46 100644
--- a/src/com/android/car/settings/wifi/WifiTetherFragment.java
+++ b/src/com/android/car/settings/wifi/WifiTetherFragment.java
@@ -15,177 +15,30 @@
  */
 package com.android.car.settings.wifi;
 
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.net.ConnectivityManager;
-import android.net.TetheringManager;
-import android.net.wifi.WifiManager;
-import android.os.Bundle;
 
 import androidx.annotation.XmlRes;
-import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.CarSettingActivities.WifiTetherActivity;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.network.NetworkUtils;
 import com.android.car.settings.search.CarBaseSearchIndexProvider;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.internal.util.ConcurrentUtils;
 import com.android.settingslib.search.SearchIndexable;
 
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Fragment to host tethering-related preferences.
  */
 @SearchIndexable
 public class WifiTetherFragment extends SettingsFragment {
 
-    private CarWifiManager mCarWifiManager;
-    private TetheringManager mTetheringManager;
-    private MenuItem mTetherSwitch;
-    private boolean mRestartBooked = false;
-
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            int state = intent.getIntExtra(
-                    WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED);
-            handleWifiApStateChanged(state);
-        }
-    };
-    private final BroadcastReceiver mRestartReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (mCarWifiManager != null && mCarWifiManager.isWifiApEnabled()) {
-                restartTethering();
-            }
-        }
-    };
-
-    @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Collections.singletonList(mTetherSwitch);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mTetherSwitch = new MenuItem.Builder(getContext())
-                .setCheckable()
-                .setChecked(mCarWifiManager.isWifiApEnabled())
-                .setOnClickListener(i -> {
-                    if (!mTetherSwitch.isChecked()) {
-                        stopTethering();
-                    } else {
-                        startTethering();
-                    }
-                })
-                .build();
-    }
-
     @Override
     @XmlRes
     protected int getPreferenceScreenResId() {
         return R.xml.wifi_tether_fragment;
     }
 
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-
-        mCarWifiManager = new CarWifiManager(context);
-        mTetheringManager = getContext().getSystemService(TetheringManager.class);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        getContext().registerReceiver(mReceiver,
-                new IntentFilter(WifiManager.WIFI_AP_STATE_CHANGED_ACTION));
-        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mRestartReceiver,
-                new IntentFilter(
-                        WifiTetherBasePreferenceController.ACTION_RESTART_WIFI_TETHERING));
-        mCarWifiManager.start();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mCarWifiManager.stop();
-        getContext().unregisterReceiver(mReceiver);
-        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mRestartReceiver);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mCarWifiManager.destroy();
-    }
-
-    /**
-     * When the state of the hotspot changes, update the state of the tethering switch as well
-     */
-    private void handleWifiApStateChanged(int state) {
-        switch (state) {
-            case WifiManager.WIFI_AP_STATE_ENABLING:
-                mTetherSwitch.setEnabled(false);
-                break;
-            case WifiManager.WIFI_AP_STATE_ENABLED:
-                mTetherSwitch.setEnabled(true);
-                if (!mTetherSwitch.isChecked()) {
-                    mTetherSwitch.setChecked(true);
-                }
-                break;
-            case WifiManager.WIFI_AP_STATE_DISABLING:
-                mTetherSwitch.setEnabled(false);
-                if (mTetherSwitch.isChecked()) {
-                    mTetherSwitch.setChecked(false);
-                }
-                break;
-            case WifiManager.WIFI_AP_STATE_DISABLED:
-                mTetherSwitch.setChecked(false);
-                mTetherSwitch.setEnabled(true);
-                if (mRestartBooked) {
-                    // Hotspot was disabled as part of a restart request - we can now re-enable it
-                    mTetherSwitch.setEnabled(false);
-                    startTethering();
-                    mRestartBooked = false;
-                }
-                break;
-            default:
-                mTetherSwitch.setChecked(false);
-                mTetherSwitch.setEnabled(true);
-                break;
-        }
-    }
-
-    private void startTethering() {
-        mTetheringManager.startTethering(ConnectivityManager.TETHERING_WIFI,
-                ConcurrentUtils.DIRECT_EXECUTOR,
-                new TetheringManager.StartTetheringCallback() {
-                    @Override
-                    public void onTetheringFailed(final int result) {
-                        mTetherSwitch.setChecked(false);
-                        mTetherSwitch.setEnabled(true);
-                    }
-                });
-    }
-
-    private void stopTethering() {
-        mTetheringManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
-    }
-
-    private void restartTethering() {
-        stopTethering();
-        mRestartBooked = true;
-    }
-
     /**
      * Data provider for Settings Search.
      */
diff --git a/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java
index 3fbd50e..dca9200 100644
--- a/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java
+++ b/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java
@@ -19,21 +19,26 @@
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.net.TetheringManager;
+import android.os.Handler;
 import android.os.HandlerExecutor;
+import android.os.Looper;
 
-import androidx.preference.Preference;
-
+import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
-import com.android.internal.os.BackgroundThread;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
 
 /**
  * Controls the availability of wifi tethering preference based on whether tethering is supported
  */
-public class WifiTetherPreferenceController extends PreferenceController<Preference> {
+public class WifiTetherPreferenceController extends
+        PreferenceController<CarUiTwoActionSwitchPreference>
+        implements WifiTetheringHandler.WifiTetheringAvailabilityListener {
 
     private final TetheringManager mTetheringManager =
             getContext().getSystemService(TetheringManager.class);
+    private final Handler mHandler;
+    private WifiTetheringHandler mWifiTetheringHandler;
     private volatile boolean mIsTetheringSupported;
     private volatile boolean mReceivedTetheringEventCallback = false;
 
@@ -52,22 +57,36 @@
     public WifiTetherPreferenceController(Context context, String preferenceKey,
             FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
         super(context, preferenceKey, fragmentController, uxRestrictions);
+        mHandler = new Handler(Looper.getMainLooper());
+        mWifiTetheringHandler = new WifiTetheringHandler(context,
+                fragmentController.getSettingsLifecycle(), this);
     }
 
     @Override
-    protected Class<Preference> getPreferenceType() {
-        return Preference.class;
+    protected Class<CarUiTwoActionSwitchPreference> getPreferenceType() {
+        return CarUiTwoActionSwitchPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setOnSecondaryActionClickListener(isChecked -> {
+            mWifiTetheringHandler.updateWifiTetheringState(isChecked);
+        });
     }
 
     @Override
     protected void onStartInternal() {
         mTetheringManager.registerTetheringEventCallback(
-                new HandlerExecutor(BackgroundThread.getHandler()), mTetheringCallback);
+                new HandlerExecutor(mHandler), mTetheringCallback);
+        boolean tetheringEnabled = mWifiTetheringHandler.isWifiTetheringEnabled();
+        updateSwitchPreference(tetheringEnabled);
+        mWifiTetheringHandler.onStartInternal();
     }
 
     @Override
     protected void onStopInternal() {
         mTetheringManager.unregisterTetheringEventCallback(mTetheringCallback);
+        mWifiTetheringHandler.onStopInternal();
     }
 
     @Override
@@ -77,4 +96,30 @@
         }
         return  mIsTetheringSupported ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
+
+    @Override
+    public void onWifiTetheringAvailable() {
+        updateSwitchPreference(true);
+    }
+
+    @Override
+    public void onWifiTetheringUnavailable() {
+        updateSwitchPreference(false);
+    }
+
+    @Override
+    public void enablePreference() {
+        getPreference().setSecondaryActionEnabled(true);
+    }
+
+    @Override
+    public void disablePreference() {
+        getPreference().setSecondaryActionEnabled(false);
+    }
+
+    private void updateSwitchPreference(boolean switchOn) {
+        getPreference().setSummary(switchOn ? R.string.car_ui_preference_switch_on
+                : R.string.car_ui_preference_switch_off);
+        getPreference().setSecondaryActionChecked(switchOn);
+    }
 }
diff --git a/src/com/android/car/settings/wifi/WifiTetherStateSwitchPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherStateSwitchPreferenceController.java
new file mode 100644
index 0000000..7fef5c2
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherStateSwitchPreferenceController.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ColoredSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Enables/disables tether state via SwitchPreference.
+ */
+public class WifiTetherStateSwitchPreferenceController extends
+        PreferenceController<ColoredSwitchPreference> implements
+        WifiTetheringHandler.WifiTetheringAvailabilityListener {
+
+    private WifiTetheringHandler mWifiTetheringHandler;
+
+    public WifiTetherStateSwitchPreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mWifiTetheringHandler = new WifiTetheringHandler(context,
+                fragmentController.getSettingsLifecycle(), this);
+    }
+
+    @Override
+    protected Class<ColoredSwitchPreference> getPreferenceType() {
+        return ColoredSwitchPreference.class;
+    }
+
+    @Override
+    protected void updateState(ColoredSwitchPreference preference) {
+        updateSwitchPreference(mWifiTetheringHandler.isWifiTetheringEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ColoredSwitchPreference preference, Object newValue) {
+        boolean switchOn = (Boolean) newValue;
+        updateSwitchPreference(switchOn);
+        mWifiTetheringHandler.updateWifiTetheringState(switchOn);
+        return true;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setContentDescription(
+                getContext().getString(R.string.wifi_hotspot_state_switch_content_description));
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mWifiTetheringHandler.onStartInternal();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mWifiTetheringHandler.onStopInternal();
+    }
+
+    @Override
+    public void onWifiTetheringAvailable() {
+        updateSwitchPreference(/* switchOn= */ true);
+    }
+
+    @Override
+    public void onWifiTetheringUnavailable() {
+        updateSwitchPreference(/* switchOn= */ false);
+    }
+
+    @Override
+    public void enablePreference() {
+        getPreference().setEnabled(true);
+    }
+
+    @Override
+    public void disablePreference() {
+        getPreference().setEnabled(false);
+    }
+
+    private void updateSwitchPreference(boolean switchOn) {
+        getPreference().setTitle(switchOn ? R.string.car_ui_preference_switch_on
+                : R.string.car_ui_preference_switch_off);
+        getPreference().setChecked(switchOn);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetheringHandler.java b/src/com/android/car/settings/wifi/WifiTetheringHandler.java
new file mode 100644
index 0000000..bd5325d
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetheringHandler.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.TetheringManager;
+import android.net.wifi.WifiManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.lifecycle.Lifecycle;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.internal.util.ConcurrentUtils;
+
+/**
+ * Consolidates Wifi tethering logic into one handler so we can have consistent logic across various
+ * parts of the Settings app.
+ */
+public class WifiTetheringHandler {
+
+    private Context mContext;
+    private CarWifiManager mCarWifiManager;
+    private TetheringManager mTetheringManager;
+    private boolean mRestartBooked = false;
+    private WifiTetheringAvailabilityListener mWifiTetheringAvailabilityListener;
+
+    private WifiManager.SoftApCallback mSoftApCallback = new WifiManager.SoftApCallback() {
+        @Override
+        public void onStateChanged(int state, int failureReason) {
+            handleWifiApStateChanged(state);
+        }
+    };
+    private final BroadcastReceiver mRestartReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (mCarWifiManager != null && mCarWifiManager.isWifiApEnabled()) {
+                restartTethering();
+            }
+        }
+    };
+
+    public WifiTetheringHandler(Context context, Lifecycle lifecycle,
+            WifiTetheringAvailabilityListener wifiTetherAvailabilityListener) {
+        mContext = context;
+        mCarWifiManager = new CarWifiManager(mContext, lifecycle);
+        mTetheringManager = mContext.getSystemService(TetheringManager.class);
+        mWifiTetheringAvailabilityListener = wifiTetherAvailabilityListener;
+    }
+
+    /**
+     * Handles operations that should happen in host's onStartInternal().
+     */
+    public void onStartInternal() {
+        mCarWifiManager.registerSoftApCallback(mContext.getMainExecutor(), mSoftApCallback);
+        LocalBroadcastManager.getInstance(mContext).registerReceiver(mRestartReceiver,
+                new IntentFilter(
+                        WifiTetherBasePreferenceController.ACTION_RESTART_WIFI_TETHERING));
+    }
+
+    /**
+     * Handles operations that should happen in host's onStopInternal().
+     */
+    public void onStopInternal() {
+        mCarWifiManager.unregisterSoftApCallback(mSoftApCallback);
+        LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mRestartReceiver);
+    }
+
+    /**
+     * Returns whether wifi tethering is enabled
+     * @return whether wifi tethering is enabled
+     */
+    public boolean isWifiTetheringEnabled() {
+        return mCarWifiManager.isWifiApEnabled();
+    }
+
+    /**
+     * Changes the Wifi tethering state
+     *
+     * @param enable Whether to attempt to turn Wifi tethering on or off
+     */
+    public void updateWifiTetheringState(boolean enable) {
+        if (enable) {
+            startTethering();
+        } else {
+            stopTethering();
+        }
+    }
+
+    @VisibleForTesting
+    void setCarWifiManager(CarWifiManager carWifiManager) {
+        mCarWifiManager = carWifiManager;
+    }
+
+    @VisibleForTesting
+    void setTetheringManager(TetheringManager tetheringManager) {
+        mTetheringManager = tetheringManager;
+    }
+
+    @VisibleForTesting
+    void handleWifiApStateChanged(int state) {
+        switch (state) {
+            case WifiManager.WIFI_AP_STATE_ENABLING:
+                mWifiTetheringAvailabilityListener.disablePreference();
+                break;
+            case WifiManager.WIFI_AP_STATE_ENABLED:
+                mWifiTetheringAvailabilityListener.enablePreference();
+                mWifiTetheringAvailabilityListener.onWifiTetheringAvailable();
+                break;
+            case WifiManager.WIFI_AP_STATE_DISABLING:
+                mWifiTetheringAvailabilityListener.disablePreference();
+                mWifiTetheringAvailabilityListener.onWifiTetheringUnavailable();
+                break;
+            case WifiManager.WIFI_AP_STATE_DISABLED:
+                mWifiTetheringAvailabilityListener.onWifiTetheringUnavailable();
+                mWifiTetheringAvailabilityListener.enablePreference();
+                if (mRestartBooked) {
+                    // Hotspot was disabled as part of a restart request - we can now re-enable it
+                    mWifiTetheringAvailabilityListener.disablePreference();
+                    startTethering();
+                    mRestartBooked = false;
+                }
+                break;
+            default:
+                mWifiTetheringAvailabilityListener.onWifiTetheringUnavailable();
+                mWifiTetheringAvailabilityListener.enablePreference();
+                break;
+        }
+    }
+
+    private void startTethering() {
+        mTetheringManager.startTethering(ConnectivityManager.TETHERING_WIFI,
+                ConcurrentUtils.DIRECT_EXECUTOR,
+                new TetheringManager.StartTetheringCallback() {
+                    @Override
+                    public void onTetheringFailed(final int result) {
+                        mWifiTetheringAvailabilityListener.onWifiTetheringUnavailable();
+                        mWifiTetheringAvailabilityListener.enablePreference();
+                    }
+                });
+    }
+
+    private void stopTethering() {
+        mTetheringManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+    }
+
+    private void restartTethering() {
+        stopTethering();
+        mRestartBooked = true;
+    }
+
+    /**
+     * Interface for receiving Wifi tethering status updates
+     */
+    public interface WifiTetheringAvailabilityListener {
+        /**
+         * Callback for when Wifi tethering is available
+         */
+        void onWifiTetheringAvailable();
+
+        /**
+         * Callback for when Wifi tethering is unavailable
+         */
+        void onWifiTetheringUnavailable();
+
+        /**
+         * Listener should allow further changes to Wifi tethering
+         */
+        void enablePreference();
+
+        /**
+         * Listener should disallow further changes to Wifi tethering
+         */
+        void disablePreference();
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiUtil.java b/src/com/android/car/settings/wifi/WifiUtil.java
index 5e8e40e..6e73fe5 100644
--- a/src/com/android/car/settings/wifi/WifiUtil.java
+++ b/src/com/android/car/settings/wifi/WifiUtil.java
@@ -24,21 +24,29 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
 import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
+import android.net.NetworkScoreManager;
+import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
+import android.os.Handler;
+import android.os.SimpleClock;
 import android.provider.Settings;
 import android.text.TextUtils;
-import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.StringRes;
+import androidx.lifecycle.Lifecycle;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.Logger;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.NetworkDetailsTracker;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
 
+import java.time.Clock;
+import java.time.ZoneOffset;
 import java.util.regex.Pattern;
 
 /**
@@ -50,8 +58,20 @@
 
     /** Value that is returned when we fail to connect wifi. */
     public static final int INVALID_NET_ID = -1;
+    /** Max age of tracked WifiEntries. */
+    private static final long DEFAULT_MAX_SCAN_AGE_MILLIS = 15_000;
+    /** Interval between initiating WifiPickerTracker scans. */
+    private static final long DEFAULT_SCAN_INTERVAL_MILLIS = 10_000;
     private static final Pattern HEX_PATTERN = Pattern.compile("^[0-9A-F]+$");
 
+    /** Clock used for evaluating the age of WiFi scans */
+    private static final Clock ELAPSED_REALTIME_CLOCK = new SimpleClock(ZoneOffset.UTC) {
+        @Override
+        public long millis() {
+            return android.os.SystemClock.elapsedRealtime();
+        }
+    };
+
     @DrawableRes
     public static int getIconRes(int state) {
         switch (state) {
@@ -98,10 +118,10 @@
     }
 
     /**
-     * Gets a unique key for a {@link AccessPoint}.
+     * Gets a unique key for a {@link WifiEntry}.
      */
-    public static String getKey(AccessPoint accessPoint) {
-        return String.valueOf(accessPoint.hashCode());
+    public static String getKey(WifiEntry wifiEntry) {
+        return String.valueOf(wifiEntry.hashCode());
     }
 
     /**
@@ -154,7 +174,7 @@
      * Returns {@code true} if the network security type doesn't require authentication.
      */
     public static boolean isOpenNetwork(int security) {
-        return security == AccessPoint.SECURITY_NONE || security == AccessPoint.SECURITY_OWE;
+        return security == WifiEntry.SECURITY_NONE || security == WifiEntry.SECURITY_OWE;
     }
 
     /**
@@ -166,10 +186,11 @@
     }
 
     /**
-     * Attempts to connect to a specified access point
+     * Attempts to connect to a specified Wi-Fi entry.
+     *
      * @param listener for callbacks on success or failure of connection attempt (can be null)
      */
-    public static void connectToAccessPoint(Context context, String ssid, int security,
+    public static void connectToWifiEntry(Context context, String ssid, int security,
             String password, boolean hidden, @Nullable WifiManager.ActionListener listener) {
         WifiManager wifiManager = context.getSystemService(WifiManager.class);
         WifiConfiguration wifiConfig = getWifiConfig(ssid, security, password, hidden);
@@ -185,32 +206,27 @@
         return finishWifiConfig(wifiConfig, security, password);
     }
 
-    /** Similar to above, but uses AccessPoint to get additional relevant information. */
-    public static WifiConfiguration getWifiConfig(@NonNull AccessPoint accessPoint,
+    /** Similar to above, but uses WifiEntry to get additional relevant information. */
+    public static WifiConfiguration getWifiConfig(@NonNull WifiEntry wifiEntry,
             String password) {
-        if (accessPoint == null) {
-            throw new IllegalArgumentException("AccessPoint input is required.");
-        }
-
         WifiConfiguration wifiConfig = new WifiConfiguration();
-        if (!accessPoint.isSaved()) {
-            wifiConfig.SSID = AccessPoint.convertToQuotedString(
-                    accessPoint.getSsidStr());
+        if (wifiEntry.getWifiConfiguration() == null) {
+            wifiConfig.SSID = "\"" + wifiEntry.getSsid() + "\"";
         } else {
-            wifiConfig.networkId = accessPoint.getConfig().networkId;
-            wifiConfig.hiddenSSID = accessPoint.getConfig().hiddenSSID;
+            wifiConfig.networkId = wifiEntry.getWifiConfiguration().networkId;
+            wifiConfig.hiddenSSID = wifiEntry.getWifiConfiguration().hiddenSSID;
         }
 
-        return finishWifiConfig(wifiConfig, accessPoint.getSecurity(), password);
+        return finishWifiConfig(wifiConfig, wifiEntry.getSecurity(), password);
     }
 
     private static WifiConfiguration finishWifiConfig(WifiConfiguration wifiConfig, int security,
             String password) {
         switch (security) {
-            case AccessPoint.SECURITY_NONE:
+            case WifiEntry.SECURITY_NONE:
                 wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN);
                 break;
-            case AccessPoint.SECURITY_WEP:
+            case WifiEntry.SECURITY_WEP:
                 wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_WEP);
                 if (!TextUtils.isEmpty(password)) {
                     int length = password.length();
@@ -223,7 +239,7 @@
                     }
                 }
                 break;
-            case AccessPoint.SECURITY_PSK:
+            case WifiEntry.SECURITY_PSK:
                 wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK);
                 if (!TextUtils.isEmpty(password)) {
                     if (password.matches("[0-9A-Fa-f]{64}")) {
@@ -233,9 +249,9 @@
                     }
                 }
                 break;
-            case AccessPoint.SECURITY_EAP:
-            case AccessPoint.SECURITY_EAP_SUITE_B:
-                if (security == AccessPoint.SECURITY_EAP_SUITE_B) {
+            case WifiEntry.SECURITY_EAP:
+            case WifiEntry.SECURITY_EAP_SUITE_B:
+                if (security == WifiEntry.SECURITY_EAP_SUITE_B) {
                     // allowedSuiteBCiphers will be set according to certificate type
                     wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
                 } else {
@@ -245,13 +261,13 @@
                     wifiConfig.enterpriseConfig.setPassword(password);
                 }
                 break;
-            case AccessPoint.SECURITY_SAE:
+            case WifiEntry.SECURITY_SAE:
                 wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE);
                 if (!TextUtils.isEmpty(password)) {
                     wifiConfig.preSharedKey = '"' + password + '"';
                 }
                 break;
-            case AccessPoint.SECURITY_OWE:
+            case WifiEntry.SECURITY_OWE:
                 wifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE);
                 break;
             default:
@@ -260,40 +276,17 @@
         return wifiConfig;
     }
 
-    /** Forget the network specified by {@code accessPoint}. */
-    public static void forget(Context context, AccessPoint accessPoint) {
-        WifiManager wifiManager = context.getSystemService(WifiManager.class);
-        if (!accessPoint.isSaved()) {
-            if (accessPoint.getNetworkInfo() != null
-                    && accessPoint.getNetworkInfo().getState() != NetworkInfo.State.DISCONNECTED) {
-                // Network is active but has no network ID - must be ephemeral.
-                wifiManager.disableEphemeralNetwork(
-                        AccessPoint.convertToQuotedString(accessPoint.getSsidStr()));
-            } else {
-                // Should not happen, but a monkey seems to trigger it
-                LOG.e("Failed to forget invalid network " + accessPoint.getConfig());
-                return;
-            }
-        } else {
-            wifiManager.forget(accessPoint.getConfig().networkId, new WifiManager.ActionListener() {
-                @Override
-                public void onSuccess() {
-                    LOG.d("Network successfully forgotten");
-                }
-
-                @Override
-                public void onFailure(int reason) {
-                    LOG.d("Could not forget network. Failure code: " + reason);
-                    Toast.makeText(context, R.string.wifi_failed_forget_message,
-                            Toast.LENGTH_SHORT).show();
-                }
-            });
+    /** Returns {@code true} if the Wi-Fi entry is connected or connecting. */
+    public static boolean isWifiEntryConnectedOrConnecting(WifiEntry wifiEntry) {
+        if (wifiEntry == null) {
+            return false;
         }
+        return wifiEntry.getConnectedState() != WifiEntry.CONNECTED_STATE_DISCONNECTED;
     }
 
-    /** Returns {@code true} if the access point was disabled due to the wrong password. */
-    public static boolean isAccessPointDisabledByWrongPassword(AccessPoint accessPoint) {
-        WifiConfiguration config = accessPoint.getConfig();
+    /** Returns {@code true} if the Wi-Fi entry was disabled due to the wrong password. */
+    public static boolean isWifiEntryDisabledByWrongPassword(WifiEntry wifiEntry) {
+        WifiConfiguration config = wifiEntry.getWifiConfiguration();
         if (config == null) {
             return false;
         }
@@ -310,4 +303,86 @@
     private static boolean isHexString(String password) {
         return HEX_PATTERN.matcher(password).matches();
     }
+
+    /**
+     * Gets the security value from a ScanResult.
+     *
+     * @return related security value based on {@link WifiEntry}
+     */
+    public static int getWifiEntrySecurity(ScanResult result) {
+        if (result.capabilities.contains("WEP")) {
+            return WifiEntry.SECURITY_WEP;
+        } else if (result.capabilities.contains("SAE")) {
+            return WifiEntry.SECURITY_SAE;
+        } else if (result.capabilities.contains("PSK")) {
+            return WifiEntry.SECURITY_PSK;
+        } else if (result.capabilities.contains("EAP_SUITE_B_192")) {
+            return WifiEntry.SECURITY_EAP_SUITE_B;
+        } else if (result.capabilities.contains("EAP")) {
+            return WifiEntry.SECURITY_EAP;
+        } else if (result.capabilities.contains("OWE")) {
+            return WifiEntry.SECURITY_OWE;
+        }
+        return WifiEntry.SECURITY_NONE;
+    }
+
+    /**
+     * Creates an instance of WifiPickerTracker using the default MAX_SCAN_AGE and
+     * SCAN_INTERVAL values.
+     */
+    public static WifiPickerTracker createWifiPickerTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler,
+            WifiPickerTracker.WifiPickerTrackerCallback listener) {
+        return createWifiPickerTracker(lifecycle, context, mainHandler, workerHandler,
+                DEFAULT_MAX_SCAN_AGE_MILLIS, DEFAULT_SCAN_INTERVAL_MILLIS, listener);
+    }
+
+    /**
+     * Creates an instance of WifiPickerTracker.
+     */
+    public static WifiPickerTracker createWifiPickerTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler,
+            long maxScanAgeMillis, long scanIntervalMillis,
+            WifiPickerTracker.WifiPickerTrackerCallback listener) {
+        return new WifiPickerTracker(
+                lifecycle, context,
+                context.getSystemService(WifiManager.class),
+                context.getSystemService(ConnectivityManager.class),
+                context.getSystemService(NetworkScoreManager.class),
+                mainHandler, workerHandler, ELAPSED_REALTIME_CLOCK,
+                maxScanAgeMillis, scanIntervalMillis,
+                listener);
+    }
+
+    /**
+     * Creates an instance of NetworkDetailsTracker using the default MAX_SCAN_AGE and
+     * SCAN_INTERVAL values.
+     */
+    public static NetworkDetailsTracker createNetworkDetailsTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler,
+            String key) {
+        return createNetworkDetailsTracker(lifecycle, context, mainHandler, workerHandler,
+                DEFAULT_MAX_SCAN_AGE_MILLIS, DEFAULT_SCAN_INTERVAL_MILLIS, key);
+    }
+
+    /**
+     * Creates an instance of NetworkDetailsTracker.
+     */
+    public static NetworkDetailsTracker createNetworkDetailsTracker(
+            Lifecycle lifecycle, Context context,
+            Handler mainHandler, Handler workerHandler,
+            long maxScanAgeMillis, long scanIntervalMillis,
+            String key) {
+        return NetworkDetailsTracker.createNetworkDetailsTracker(
+                lifecycle, context,
+                context.getSystemService(WifiManager.class),
+                context.getSystemService(ConnectivityManager.class),
+                context.getSystemService(NetworkScoreManager.class),
+                mainHandler, workerHandler, ELAPSED_REALTIME_CLOCK,
+                maxScanAgeMillis, scanIntervalMillis,
+                key);
+    }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceController.java
new file mode 100644
index 0000000..c7bfbcb
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceController.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi.details;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.widget.Toast;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.wifi.WifiUtil;
+import com.android.wifitrackerlib.WifiEntry;
+
+/**
+ * Shows Wifi details action buttons (forget and connect).
+ */
+public class WifiDetailsActionButtonsPreferenceController
+        extends WifiDetailsBasePreferenceController<ActionButtonsPreference>
+        implements WifiEntry.ConnectCallback {
+
+    public WifiDetailsActionButtonsPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ActionButtonsPreference> getPreferenceType() {
+        return ActionButtonsPreference.class;
+    }
+
+    @Override
+    protected void updateState(ActionButtonsPreference preference) {
+        getPreference()
+                .getButton(ActionButtons.BUTTON1)
+                .setText(R.string.forget)
+                .setIcon(R.drawable.ic_delete)
+                .setVisible(canForgetNetwork())
+                .setOnClickListener(v -> {
+                    getWifiEntry().forget(/* callback= */ null);
+                    getFragmentController().goBack();
+                });
+
+        boolean canConnectOrDisconnect = getWifiEntry().canConnect()
+                || getWifiEntry().canDisconnect();
+        preference
+                .getButton(ActionButtons.BUTTON2)
+                .setVisible(canConnectOrDisconnect || getWifiEntry().getConnectedState()
+                        == WifiEntry.CONNECTED_STATE_CONNECTING)
+                .setEnabled(canConnectOrDisconnect)
+                .setText(getConnectDisconnectButtonTextResource())
+                .setIcon(getConnectDisconnectButtonIconResource())
+                .setOnClickListener(v -> connectOrDisconnect());
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!WifiUtil.isWifiAvailable(getContext())) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return AVAILABLE;
+    }
+
+    @Override
+    public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+        refreshUi();
+    }
+
+    @Override
+    public void onConnectResult(@WifiEntry.ConnectCallback.ConnectStatus int status) {
+        if (getWifiEntry().getLevel() == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
+            Toast.makeText(getContext(),
+                    R.string.wifi_not_in_range_message,
+                    Toast.LENGTH_SHORT).show();
+        } else if (status != WifiEntry.ConnectCallback.CONNECT_STATUS_SUCCESS) {
+            Toast.makeText(getContext(),
+                    R.string.wifi_failed_connect_message,
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    private boolean canForgetNetwork() {
+        return getWifiEntry().canForget()
+                && !WifiUtil.isNetworkLockedDown(getContext(),
+                        getWifiEntry().getWifiConfiguration());
+    }
+
+    private void connectOrDisconnect() {
+        if (!WifiUtil.isWifiEntryConnectedOrConnecting(getWifiEntry())) {
+            getWifiEntry().connect(/* callback= */ this);
+        } else {
+            getWifiEntry().disconnect(/* callback= */ null);
+        }
+    }
+
+    private int getConnectDisconnectButtonTextResource() {
+        switch (getWifiEntry().getConnectedState()) {
+            case WifiEntry.CONNECTED_STATE_DISCONNECTED:
+                return R.string.wifi_setup_connect;
+            case WifiEntry.CONNECTED_STATE_CONNECTED:
+                return R.string.disconnect;
+            case WifiEntry.CONNECTED_STATE_CONNECTING:
+                return R.string.wifi_connecting;
+            default:
+                throw new IllegalStateException("Invalid WifiEntry connected state");
+        }
+    }
+
+    private int getConnectDisconnectButtonIconResource() {
+        switch (getWifiEntry().getConnectedState()) {
+            case WifiEntry.CONNECTED_STATE_DISCONNECTED:
+            case WifiEntry.CONNECTED_STATE_CONNECTING:
+                return R.drawable.ic_settings_wifi;
+            case WifiEntry.CONNECTED_STATE_CONNECTED:
+                return R.drawable.ic_close;
+            default:
+                throw new IllegalStateException("Invalid WifiEntry connected state");
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java b/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java
index 8c23ed3..08ad512 100644
--- a/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java
@@ -21,16 +21,13 @@
 import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
 
 import androidx.preference.Preference;
 
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceController;
 import com.android.car.settings.wifi.WifiUtil;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 /**
  * Controller for logic pertaining to displaying Wifi information. Only available when wifi is
@@ -46,7 +43,7 @@
 public abstract class WifiDetailsBasePreferenceController<V extends Preference> extends
         PreferenceController<V> implements WifiInfoProvider.Listener {
 
-    private AccessPoint mAccessPoint;
+    private WifiEntry mWifiEntry;
     private WifiInfoProvider mWifiInfoProvider;
 
     public WifiDetailsBasePreferenceController(Context context, String preferenceKey,
@@ -58,18 +55,18 @@
      * Sets all parameters for the controller to run, need to get called as early as possible.
      */
     public WifiDetailsBasePreferenceController init(
-            AccessPoint accessPoint, WifiInfoProvider wifiInfoProvider) {
-        mAccessPoint = accessPoint;
+            WifiEntry wifiEntry, WifiInfoProvider wifiInfoProvider) {
+        mWifiEntry = wifiEntry;
         mWifiInfoProvider = wifiInfoProvider;
         return this;
     }
 
-    /** Gets the access poing that this controller was initialized with. */
-    protected AccessPoint getAccessPoint() {
-        return mAccessPoint;
+    /** Gets the Wi-Fi entry that this controller was initialized with. */
+    protected WifiEntry getWifiEntry() {
+        return mWifiEntry;
     }
 
-    /** Gets the wifi info provider that this controller was initialized with. */
+    /** Gets the Wi-Fi info provider that this controller was initialized with. */
     protected WifiInfoProvider getWifiInfoProvider() {
         return mWifiInfoProvider;
     }
@@ -85,8 +82,8 @@
     }
 
     @Override
-    public void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
-            NetworkInfo networkInfo, WifiInfo wifiInfo) {
+    public void onWifiEntryUpdated() {
+        getPreference().setEnabled(true);
         refreshUi();
     }
 
@@ -100,12 +97,6 @@
     }
 
     @Override
-    public void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo) {
-        getPreference().setEnabled(true);
-        refreshUi();
-    }
-
-    @Override
     public void onLost(Network network) {
         getPreference().setEnabled(false);
         refreshUi();
@@ -116,6 +107,8 @@
         if (!WifiUtil.isWifiAvailable(getContext())) {
             return UNSUPPORTED_ON_DEVICE;
         }
-        return getAccessPoint().isActive() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+        return WifiUtil.isWifiEntryConnectedOrConnecting(getWifiEntry())
+                ? AVAILABLE
+                : CONDITIONALLY_UNAVAILABLE;
     }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java b/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java
index c048818..2475ef2 100644
--- a/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java
@@ -17,109 +17,56 @@
 package com.android.car.settings.wifi.details;
 
 import android.content.Context;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
 import android.view.View;
-import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.StringRes;
 import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.SettingsFragment;
 import com.android.car.settings.wifi.WifiUtil;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.NetworkDetailsTracker;
+import com.android.wifitrackerlib.WifiEntry;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
- * Shows details about a wifi network, including actions related to the network,
+ * Shows details about a Wi-Fi network, including actions related to the network,
  * e.g. ignore, disconnect, etc. The intent should include information about
- * access point, use that to render UI, e.g. show SSID etc.
+ * Wi-Fi entry, use that to render UI, e.g. show SSID etc.
  */
-public class WifiDetailsFragment extends SettingsFragment
-        implements WifiInfoProvider.Listener {
-    private static final String EXTRA_AP_STATE = "extra_ap_state";
+public class WifiDetailsFragment extends SettingsFragment {
+    private static final String TAG = "WifiDetailsFragment";
+    private static final String CHOSEN_WIFIENTRY_KEY = "chosen_wifientry_key";
     private static final Logger LOG = new Logger(WifiDetailsFragment.class);
 
-    private WifiManager mWifiManager;
-    private AccessPoint mAccessPoint;
-    private MenuItem mForgetButton;
-    private MenuItem mConnectButton;
+    private WifiEntry mWifiEntry;
     private List<WifiDetailsBasePreferenceController> mControllers = new ArrayList<>();
 
     private WifiInfoProvider mWifiInfoProvider;
 
-    private class ActionFailListener implements WifiManager.ActionListener {
-        @StringRes
-        private final int mMessageResId;
-
-        ActionFailListener(@StringRes int messageResId) {
-            mMessageResId = messageResId;
-        }
-
-        @Override
-        public void onSuccess() {
-        }
-
-        @Override
-        public void onFailure(int reason) {
-            Toast.makeText(getContext(), mMessageResId, Toast.LENGTH_SHORT).show();
-        }
-    }
+    private NetworkDetailsTracker mNetworkDetailsTracker;
+    private HandlerThread mWorkerThread;
 
     /**
      * Gets an instance of this class.
      */
-    public static WifiDetailsFragment getInstance(AccessPoint accessPoint) {
+    public static WifiDetailsFragment getInstance(WifiEntry wifiEntry) {
         WifiDetailsFragment wifiDetailsFragment = new WifiDetailsFragment();
         Bundle bundle = new Bundle();
-        Bundle accessPointState = new Bundle();
-        accessPoint.saveWifiState(accessPointState);
-        bundle.putBundle(EXTRA_AP_STATE, accessPointState);
+        bundle.putString(CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey());
         wifiDetailsFragment.setArguments(bundle);
         return wifiDetailsFragment;
     }
 
     @Override
-    public List<MenuItem> getToolbarMenuItems() {
-        return Arrays.asList(mForgetButton, mConnectButton);
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mForgetButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.forget)
-                .setOnClickListener(i -> {
-                    WifiUtil.forget(getContext(), mAccessPoint);
-                    goBack();
-                })
-                .build();
-        mConnectButton = new MenuItem.Builder(getContext())
-                .setTitle(R.string.wifi_setup_connect)
-                .setOnClickListener(i -> {
-                    mWifiManager.connect(mAccessPoint.getConfig(),
-                            new ActionFailListener(R.string.wifi_failed_connect_message));
-                    goBack();
-                })
-                .build();
-    }
-
-    @Override
     @XmlRes
     protected int getPreferenceScreenResId() {
         return R.xml.wifi_detail_fragment;
@@ -128,134 +75,76 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        mAccessPoint = new AccessPoint(getContext(), getArguments().getBundle(EXTRA_AP_STATE));
-        mWifiManager = context.getSystemService(WifiManager.class);
-        LOG.d("Creating WifiInfoProvider for " + mAccessPoint);
+        setUpNetworksDetailTracker(getArguments().getString(CHOSEN_WIFIENTRY_KEY));
+        mWifiEntry = mNetworkDetailsTracker.getWifiEntry();
+        LOG.d("Creating WifiInfoProvider for " + mWifiEntry);
         if (mWifiInfoProvider == null) {
-            mWifiInfoProvider = new WifiInfoProvider(getContext(), mAccessPoint);
+            mWifiInfoProvider = new WifiInfoProvider(getContext(), mWifiEntry);
         }
         getLifecycle().addObserver(mWifiInfoProvider);
 
         LOG.d("Creating WifiInfoProvider.Listeners.");
         mControllers.add(use(
+                WifiDetailsHeaderPreferenceController.class, R.string.pk_wifi_details_header)
+                .init(mWifiEntry, mWifiInfoProvider));
+        mControllers.add(use(
+                WifiDetailsActionButtonsPreferenceController.class,
+                R.string.pk_wifi_details_action_buttons)
+                .init(mWifiEntry, mWifiInfoProvider));
+        mControllers.add(use(
                 WifiSignalStrengthPreferenceController.class, R.string.pk_wifi_signal_strength)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiFrequencyPreferenceController.class, R.string.pk_wifi_frequency)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiSecurityPreferenceController.class, R.string.pk_wifi_security)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiMacAddressPreferenceController.class, R.string.pk_wifi_mac_address)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiIpAddressPreferenceController.class, R.string.pk_wifi_ip).init(
-                mAccessPoint, mWifiInfoProvider));
+                mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiGatewayPreferenceController.class, R.string.pk_wifi_gateway).init(
-                mAccessPoint, mWifiInfoProvider));
+                mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiSubnetPreferenceController.class, R.string.pk_wifi_subnet_mask)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiDnsPreferenceController.class, R.string.pk_wifi_dns).init(
-                mAccessPoint, mWifiInfoProvider));
+                mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiLinkSpeedPreferenceController.class, R.string.pk_wifi_link_speed)
-                .init(mAccessPoint, mWifiInfoProvider));
+                .init(mWifiEntry, mWifiInfoProvider));
         mControllers.add(use(WifiIpv6AddressPreferenceController.class, R.string.pk_wifi_ipv6).init(
-                mAccessPoint, mWifiInfoProvider));
+                mWifiEntry, mWifiInfoProvider));
         LOG.d("Done init.");
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        getToolbar().setTitle(mAccessPoint.getSsid());
-    }
-
-    @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
         enableRotaryScroll();
     }
 
-    @Override
-    public void onStart() {
-        super.onStart();
-        mWifiInfoProvider.addListener(this);
-        updateUi();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mWifiInfoProvider.removeListener(this);
-    }
-
-    @Override
     public void onDetach() {
         super.onDetach();
         getLifecycle().removeObserver(mWifiInfoProvider);
     }
 
     @Override
-    public void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo) {
-        updateUi();
+    public void onDestroy() {
+        if (mWorkerThread != null) {
+            mWorkerThread.quit();
+        }
+        super.onDestroy();
     }
 
-    @Override
-    public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
-        updateUi();
-    }
-
-    @Override
-    public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
-        updateUi();
-    }
-
-    @Override
-    public void onLost(Network network) {
-        updateUi();
-    }
-
-    @Override
-    public void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
-            NetworkInfo networkInfo, WifiInfo wifiInfo) {
-        updateUi();
-    }
-
-    private void updateUi() {
-        LOG.d("updating.");
-
-        // No need to fetch LinkProperties and NetworkCapabilities, they are updated by the
-        // callbacks. mNetwork doesn't change except in onResume.
-        if (mWifiInfoProvider.getNetwork() == null
-                || mWifiInfoProvider.getNetworkInfo() == null
-                || mWifiInfoProvider.getWifiInfo() == null) {
-            LOG.d("WIFI not available.");
-            mForgetButton.setVisible(false);
-            mConnectButton.setVisible(false);
+    private void setUpNetworksDetailTracker(String key) {
+        if (mNetworkDetailsTracker != null) {
             return;
         }
 
-        mForgetButton.setVisible(canForgetNetwork());
-        mConnectButton.setVisible(needConnect());
-
-        LOG.d("updated.");
-    }
-
-    private boolean needConnect() {
-        return mAccessPoint.isSaved() && !mAccessPoint.isActive();
-    }
-
-    /**
-     * Returns whether the network represented by this fragment can be forgotten.
-     */
-    private boolean canForgetNetwork() {
-        return (mWifiInfoProvider.getWifiInfo() != null
-                && mWifiInfoProvider.getWifiInfo().isEphemeral()) || canModifyNetwork();
-    }
-
-    /**
-     * Returns whether the network represented by this preference can be modified.
-     */
-    private boolean canModifyNetwork() {
-        WifiConfiguration wifiConfig = mWifiInfoProvider.getNetworkConfiguration();
-        LOG.d("wifiConfig is: " + wifiConfig);
-        return wifiConfig != null && !WifiUtil.isNetworkLockedDown(getContext(), wifiConfig);
+        mWorkerThread = new HandlerThread(TAG
+                + "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
+                android.os.Process.THREAD_PRIORITY_BACKGROUND);
+        mWorkerThread.start();
+        mNetworkDetailsTracker = WifiUtil.createNetworkDetailsTracker(getLifecycle(),
+                getContext(), new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
+                key);
     }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsHeaderPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiDetailsHeaderPreferenceController.java
new file mode 100644
index 0000000..85451a0
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsHeaderPreferenceController.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.text.TextUtils;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.EntityHeaderPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.wifi.WifiUtil;
+
+/**
+ * Shows Wi-Fi network header with icon, SSID, and Wi-Fi entry summary.
+ */
+public class WifiDetailsHeaderPreferenceController extends
+        WifiDetailsBasePreferenceController<EntityHeaderPreference> {
+
+    private static final int[] STATE_SECURED = {com.android.settingslib.R.attr.state_encrypted};
+    private static final int[] STATE_NONE = {};
+    private static final int[] sWifiSignalAttributes = {com.android.settingslib.R.attr.wifi_signal};
+    private final StateListDrawable mWifiSld;
+    private final String mSummaryPlaceholder;
+
+    public WifiDetailsHeaderPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mWifiSld = (StateListDrawable) context.getTheme()
+                .obtainStyledAttributes(sWifiSignalAttributes).getDrawable(0);
+        mSummaryPlaceholder = context.getString(R.string.empty_placeholder);
+    }
+
+    @Override
+    protected Class<EntityHeaderPreference> getPreferenceType() {
+        return EntityHeaderPreference.class;
+    }
+
+    @Override
+    protected void updateState(EntityHeaderPreference preference) {
+        preference.setTitle(getWifiEntry().getSsid());
+        preference.setIcon(getWifiEntryIcon());
+        String summary = getWifiEntry().getSummary(/* concise= */ false);
+        if (TextUtils.isEmpty(summary)) {
+            // If the summary is currently empty, use the placeholder string to prevent
+            // vertical shifting during the initial render.
+            summary = mSummaryPlaceholder;
+        }
+        preference.setSummary(summary);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!WifiUtil.isWifiAvailable(getContext())) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return AVAILABLE;
+    }
+
+    @Override
+    public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+        refreshUi();
+    }
+
+    private Drawable getWifiEntryIcon() {
+        if (mWifiSld == null) {
+            return null;
+        }
+        mWifiSld.setState(
+                WifiUtil.isOpenNetwork(getWifiEntry().getSecurity())
+                        ? STATE_NONE
+                        : STATE_SECURED);
+        Drawable drawable = mWifiSld.getCurrent();
+        drawable.setLevel(getWifiEntry().getLevel());
+        return drawable;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java
index 3e5f7c6..a698389 100644
--- a/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java
@@ -21,7 +21,7 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 /**
  * Shows frequency info about the Wifi connection.
@@ -42,17 +42,24 @@
 
     @Override
     protected void updateState(WifiDetailsPreference preference) {
-        int frequency = getWifiInfoProvider().getWifiInfo().getFrequency();
+        WifiEntry.ConnectedInfo connectedInfo = getWifiEntry().getConnectedInfo();
+        if (connectedInfo == null) {
+            preference.setVisible(false);
+            return;
+        }
+
+        int frequency = connectedInfo.frequencyMhz;
         String band = null;
-        if (frequency >= AccessPoint.LOWER_FREQ_24GHZ
-                && frequency < AccessPoint.HIGHER_FREQ_24GHZ) {
+        if (frequency >= WifiEntry.MIN_FREQ_24GHZ && frequency < WifiEntry.MAX_FREQ_24GHZ) {
             band = getContext().getResources().getString(R.string.wifi_band_24ghz);
-        } else if (frequency >= AccessPoint.LOWER_FREQ_5GHZ
-                && frequency < AccessPoint.HIGHER_FREQ_5GHZ) {
+        } else if (frequency >= WifiEntry.MIN_FREQ_5GHZ && frequency < WifiEntry.MAX_FREQ_5GHZ) {
             band = getContext().getResources().getString(R.string.wifi_band_5ghz);
         } else {
             LOG.e("Unexpected frequency " + frequency);
+            preference.setVisible(false);
+            return;
         }
         preference.setDetailText(band);
+        preference.setVisible(true);
     }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java
index db3ff7c..d48d6b5 100644
--- a/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java
@@ -22,6 +22,8 @@
 
 import com.android.car.settings.common.FragmentController;
 
+import java.net.Inet4Address;
+
 /**
  * Shows info about Wifi Gateway info.
  */
@@ -44,7 +46,9 @@
         String gateway = null;
         if (linkProperties != null) {
             for (RouteInfo routeInfo : linkProperties.getRoutes()) {
-                if (routeInfo.isIPv4Default() && routeInfo.hasGateway()) {
+                if (routeInfo.isDefaultRoute()
+                        && routeInfo.getDestination().getAddress() instanceof Inet4Address
+                        && routeInfo.hasGateway()) {
                     gateway = routeInfo.getGateway().getHostAddress();
                     break;
                 }
diff --git a/src/com/android/car/settings/wifi/details/WifiInfoProvider.java b/src/com/android/car/settings/wifi/details/WifiInfoProvider.java
index 258f60e..86e8864 100644
--- a/src/com/android/car/settings/wifi/details/WifiInfoProvider.java
+++ b/src/com/android/car/settings/wifi/details/WifiInfoProvider.java
@@ -16,13 +16,9 @@
 
 package com.android.car.settings.wifi.details;
 
-import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
 import android.content.IntentFilter;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager.NetworkCallback;
@@ -43,7 +39,7 @@
 import androidx.lifecycle.LifecycleOwner;
 
 import com.android.car.settings.common.Logger;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -53,7 +49,7 @@
 /**
  * Provides Wifi related info.
  */
-public class WifiInfoProvider implements DefaultLifecycleObserver {
+public class WifiInfoProvider implements DefaultLifecycleObserver, WifiEntry.WifiEntryCallback {
     private static final Logger LOG = new Logger(WifiInfoProvider.class);
 
     /**
@@ -61,9 +57,9 @@
      */
     interface Listener {
         /**
-         * Called when NetworkInfo and/or WifiInfo is changed.
+         * Called when WifiEntry is updated.
          */
-        void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo);
+        void onWifiEntryUpdated();
 
         /**
          * Called when network is lost.
@@ -76,18 +72,12 @@
         void onCapabilitiesChanged(Network network, NetworkCapabilities nc);
 
         /**
-         * Called when WifiConfiguration changed.
-         */
-        void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
-                NetworkInfo networkInfo, WifiInfo wifiInfo);
-
-        /**
          * Called when LinkProperties changed.
          */
         void onLinkPropertiesChanged(Network network, LinkProperties lp);
     }
 
-    private final AccessPoint mAccessPoint;
+    private final WifiEntry mWifiEntry;
     private final Context mContext;
     private final Set<Listener> mListeners = new HashSet<>();
     private final WifiManager mWifiManager;
@@ -106,41 +96,6 @@
     private NetworkInfo mNetworkInfo;
     private WifiInfo mWifiInfo;
 
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            switch (intent.getAction()) {
-                case WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION:
-                    LOG.d("Wifi Config changed.");
-                    updateMatchingWifiConfig();
-                    updateInfo();
-                    for (Listener listener : getListenersCopy()) {
-                        listener.onWifiConfigurationChanged(mWifiConfig, mNetworkInfo, mWifiInfo);
-                    }
-                    break;
-                case WifiManager.NETWORK_STATE_CHANGED_ACTION:
-                case WifiManager.RSSI_CHANGED_ACTION:
-                    LOG.d("wifi changed.");
-                    updateInfo();
-                    for (Listener listener : getListenersCopy()) {
-                        listener.onWifiChanged(mNetworkInfo, mWifiInfo);
-                    }
-                    break;
-            }
-        }
-
-        private void updateMatchingWifiConfig() {
-            // use getPrivilegedConfiguredNetworks() to get Passpoint & other ephemeral networks
-            for (WifiConfiguration wifiConfiguration :
-                    mWifiManager.getPrivilegedConfiguredNetworks()) {
-                if (mAccessPoint.matches(wifiConfiguration)) {
-                    mWifiConfig = wifiConfiguration;
-                    break;
-                }
-            }
-        }
-    };
-
     private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder()
             .clearCapabilities().addTransportType(TRANSPORT_WIFI).build();
 
@@ -156,22 +111,10 @@
             }
         }
 
-        private boolean hasCapabilityChanged(NetworkCapabilities nc, int cap) {
-            // If this is the first time we get NetworkCapabilities, report that something changed.
-            if (mNetworkCapabilities == null) return true;
-
-            // nc can never be null, see ConnectivityService#callCallbackForRequest.
-            return mNetworkCapabilities.hasCapability(cap) != nc.hasCapability(cap);
-        }
-
         @Override
         public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
             // If the network just validated or lost Internet access, refresh network state.
             if (network.equals(mNetwork) && !nc.equals(mNetworkCapabilities)) {
-                if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
-                        || hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)) {
-                    mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
-                }
                 mNetworkCapabilities = nc;
                 for (Listener listener : getListenersCopy()) {
                     listener.onCapabilitiesChanged(mNetwork, mNetworkCapabilities);
@@ -189,14 +132,15 @@
         }
     };
 
-    WifiInfoProvider(Context context, AccessPoint accessPoint) {
+    WifiInfoProvider(Context context, WifiEntry wifiEntry) {
         mContext = context;
-        mAccessPoint = accessPoint;
+        mWifiEntry = wifiEntry;
+        mWifiEntry.setListener(this);
         mHandler = new Handler(Looper.getMainLooper());
         mConnectivityManager =
                 mContext.getSystemService(ConnectivityManager.class);
         mWifiManager = mContext.getSystemService(WifiManager.class);
-        mWifiConfig = mAccessPoint.getConfig();
+        mWifiConfig = mWifiEntry.getWifiConfiguration();
         mNetwork = mWifiManager.getCurrentNetwork();
         mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
         mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
@@ -231,11 +175,10 @@
     @Override
     public void onStart(@NonNull LifecycleOwner owner) {
         LOG.d("onStart");
-        mContext.registerReceiver(mReceiver, mFilter);
         mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
                 mHandler);
         for (Listener listener : getListenersCopy()) {
-            listener.onWifiChanged(mNetworkInfo, mWifiInfo);
+            listener.onWifiEntryUpdated();
         }
         LOG.d("Done onStart");
     }
@@ -243,12 +186,22 @@
     @Override
     public void onStop(@NonNull LifecycleOwner owner) {
         LOG.d("onStop");
-        mContext.unregisterReceiver(mReceiver);
         mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
         LOG.d("done onStop");
     }
 
     /**
+     * Indicates the state of the WifiEntry has changed and clients may retrieve updates through
+     * the WifiEntry getter methods.
+     */
+    @Override
+    public void onUpdated() {
+        for (Listener listener : getListenersCopy()) {
+            listener.onWifiEntryUpdated();
+        }
+    }
+
+    /**
      * Returns a {@link NetworkInfo} object containing connection status information about the
      * current Wi-Fi network or {@code null} if no network is available.
      */
@@ -283,7 +236,7 @@
     }
 
     /**
-     * Returns the {@link WifiConfiguration} of the current access point or {@code null} if
+     * Returns the {@link WifiConfiguration} of the current Wi-Fi entry or {@code null} if
      * unavailable.
      */
     @Nullable
@@ -292,7 +245,7 @@
     }
 
     /**
-     * Returns the {@link LinkProperties} of the current Wi-Fi newtork or {@link null} if no network
+     * Returns the {@link LinkProperties} of the current Wi-Fi network or {@link null} if no network
      * is available.
      */
     @Nullable
diff --git a/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java
index e57847f..ca3e00d 100644
--- a/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java
@@ -17,7 +17,10 @@
 
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
+import android.net.wifi.WifiInfo;
+import android.text.TextUtils;
 
+import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentController;
 
 /**
@@ -38,6 +41,18 @@
 
     @Override
     protected void updateState(WifiDetailsPreference preference) {
-        preference.setDetailText(getWifiInfoProvider().getWifiInfo().getMacAddress());
+        String macAddress = getWifiEntry().getMacAddress();
+        if (TextUtils.isEmpty(macAddress)) {
+            preference.setVisible(false);
+            return;
+        }
+
+        preference.setVisible(true);
+
+        if (macAddress.equals(WifiInfo.DEFAULT_MAC_ADDRESS)) {
+            preference.setDetailText(getContext().getString(R.string.device_info_not_available));
+        } else {
+            preference.setDetailText(macAddress);
+        }
     }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java
index 409217d..374fdab 100644
--- a/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java
@@ -37,6 +37,6 @@
 
     @Override
     protected void updateState(WifiDetailsPreference preference) {
-        preference.setDetailText(getAccessPoint().getSecurityString(/* concise= */ false));
+        preference.setDetailText(getWifiEntry().getSecurityString(/* concise= */ false));
     }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java
index e1fe311..20717b2 100644
--- a/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java
+++ b/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java
@@ -43,7 +43,7 @@
 
     @Override
     protected void updateState(WifiDetailsPreference preference) {
-        mRssiSignalLevel = getAccessPoint().getLevel();
+        mRssiSignalLevel = getWifiEntry().getLevel();
         preference.setDetailText(mSignalStr[mRssiSignalLevel]);
     }
 }
diff --git a/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogActivity.java b/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogActivity.java
index 4044d5d..eecbaa5 100644
--- a/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogActivity.java
+++ b/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogActivity.java
@@ -21,6 +21,8 @@
 import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentActivity;
 
+import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
+
 /**
  * When other applications request to have a wifi connection, framework will bring up this activity
  * to let user select which wifi ap wanna to connect. This activity is just a door for framework
@@ -31,6 +33,7 @@
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
 
         NetworkRequestDialogFragment fragment = NetworkRequestDialogFragment.newInstance();
         fragment.show(getSupportFragmentManager(),
diff --git a/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogFragment.java b/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogFragment.java
index 2bf595e..74e2e72 100644
--- a/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogFragment.java
+++ b/src/com/android/car/settings/wifi/networkrequest/NetworkRequestDialogFragment.java
@@ -16,6 +16,8 @@
 
 package com.android.car.settings.wifi.networkrequest;
 
+import static java.util.stream.Collectors.toList;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -31,6 +33,8 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerExecutor;
+import android.os.HandlerThread;
+import android.os.Looper;
 import android.os.Message;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -44,17 +48,16 @@
 import android.widget.Toast;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
 import com.android.car.settings.wifi.WifiUtil;
 import com.android.car.ui.AlertDialogBuilder;
 import com.android.settingslib.Utils;
-import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.ObservableDialogFragment;
-import com.android.settingslib.wifi.AccessPoint;
-import com.android.settingslib.wifi.WifiTracker;
-import com.android.settingslib.wifi.WifiTrackerFactory;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiPickerTracker;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -67,6 +70,8 @@
 public class NetworkRequestDialogFragment extends ObservableDialogFragment implements
         DialogInterface.OnClickListener, NetworkRequestMatchCallback {
 
+    private static final String TAG = "NetworkRequestDialogFragment";
+
     /** Message sent to us to stop scanning wifi and pop up timeout dialog. */
     private static final int MESSAGE_STOP_SCAN_WIFI_LIST = 0;
 
@@ -84,13 +89,39 @@
     static final String EXTRA_IS_SPECIFIED_SSID =
             "com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";
 
-    private List<AccessPoint> mAccessPointList;
+    private final List<WifiEntry> mWifiEntryList = new ArrayList<>();
+    private WifiPickerTracker mWifiPickerTracker;
+    /** Worker thread used for WifiPickerTracker work. */
+    private HandlerThread mWorkerThread;
     private FilterWifiTracker mFilterWifiTracker;
-    private AccessPointAdapter mDialogAdapter;
+    private WifiEntryAdapter mDialogAdapter;
     private NetworkRequestUserSelectionCallback mUserSelectionCallback;
     private boolean mIsSpecifiedSsid;
     private boolean mWaitingConnectCallback;
 
+    private final WifiPickerTracker.WifiPickerTrackerCallback mWifiListener =
+            new WifiPickerTracker.WifiPickerTrackerCallback() {
+                @Override
+                public void onWifiEntriesChanged() {
+                    notifyAdapterRefresh();
+                }
+
+                @Override
+                public void onNumSavedNetworksChanged() {
+                    // Do nothing.
+                }
+
+                @Override
+                public void onNumSavedSubscriptionsChanged() {
+                    // Do nothing.
+                }
+
+                @Override
+                public void onWifiStateChanged() {
+                    notifyAdapterRefresh();
+                }
+            };
+
     /** Creates Network Request dialog. */
     public static NetworkRequestDialogFragment newInstance() {
         NetworkRequestDialogFragment dialogFragment = new NetworkRequestDialogFragment();
@@ -98,6 +129,19 @@
     }
 
     @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mWorkerThread = new HandlerThread(
+                TAG + "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
+                android.os.Process.THREAD_PRIORITY_BACKGROUND);
+        mWorkerThread.start();
+        mWifiPickerTracker = WifiUtil.createWifiPickerTracker(getLifecycle(),
+                getContext(), new Handler(Looper.getMainLooper()), mWorkerThread.getThreadHandler(),
+                mWifiListener);
+    }
+
+    @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         Context context = getContext();
 
@@ -107,8 +151,8 @@
         }
 
         // Prepares adapter.
-        mDialogAdapter = new AccessPointAdapter(context,
-                R.layout.preference_access_point, getAccessPointList());
+        mDialogAdapter = new WifiEntryAdapter(context,
+                R.layout.preference_wifi_entry, getWifiEntryList());
 
         AlertDialogBuilder builder = new AlertDialogBuilder(context)
                 .setTitle(getTitle())
@@ -121,7 +165,7 @@
             builder.setPositiveButton(R.string.wifi_setup_connect, /* listener= */ null);
         }
 
-        // Clicking list item is to connect wifi ap.
+        // Clicking list item is to connect Wi-Fi entry.
         AlertDialog dialog = builder.create();
         dialog.getListView().setOnItemClickListener(
                 (parent, view, position, id) -> this.onClick(dialog, position));
@@ -136,7 +180,7 @@
             neutralBtn.setVisibility(View.GONE);
             neutralBtn.setOnClickListener(v -> {
                 mShowLimitedItem = false;
-                renewAccessPointList(/* scanResults= */ null);
+                renewWifiEntryList(/* scanResults= */ null);
                 notifyAdapterRefresh();
                 neutralBtn.setVisibility(View.GONE);
             });
@@ -149,7 +193,8 @@
                     // list item.
                     this.onClick(dialog, /* position= */ 0);
                 });
-                // Disable button in first, and enable it after there are some accesspoints in list.
+                // Disable button at first and enable it after there are some Wi-Fi entries in
+                // the list.
                 positiveBtn.setEnabled(false);
             }
         });
@@ -167,12 +212,8 @@
     }
 
     @NonNull
-    List<AccessPoint> getAccessPointList() {
-        // Initials list for adapter, in case of display crashing.
-        if (mAccessPointList == null) {
-            mAccessPointList = new ArrayList<>();
-        }
-        return mAccessPointList;
+    List<WifiEntry> getWifiEntryList() {
+        return mWifiEntryList;
     }
 
     private BaseAdapter getDialogAdapter() {
@@ -181,20 +222,20 @@
 
     @Override
     public void onClick(DialogInterface dialog, int which) {
-        List<AccessPoint> accessPointList = getAccessPointList();
-        if (accessPointList.size() == 0) {
+        List<WifiEntry> wifiEntryList = getWifiEntryList();
+        if (wifiEntryList.isEmpty()) {
             return;  // Invalid values.
         }
         if (mUserSelectionCallback == null) {
             return; // Callback is missing or not ready.
         }
 
-        if (which < accessPointList.size()) {
-            AccessPoint selectedAccessPoint = accessPointList.get(which);
-            WifiConfiguration wifiConfig = selectedAccessPoint.getConfig();
+        if (which < wifiEntryList.size()) {
+            WifiEntry selectedWifiEntry = wifiEntryList.get(which);
+            WifiConfiguration wifiConfig = selectedWifiEntry.getWifiConfiguration();
             if (wifiConfig == null) {
-                if (selectedAccessPoint != null) {
-                    wifiConfig = WifiUtil.getWifiConfig(selectedAccessPoint, /* password= */ null);
+                if (selectedWifiEntry != null) {
+                    wifiConfig = WifiUtil.getWifiConfig(selectedWifiEntry, /* password= */ null);
                 }
             }
 
@@ -229,20 +270,14 @@
         if (wifiManager != null) {
             wifiManager.unregisterNetworkRequestMatchCallback(this);
         }
-
-        if (mFilterWifiTracker != null) {
-            mFilterWifiTracker.onPause();
-        }
     }
 
     @Override
     public void onDestroy() {
-        super.onDestroy();
-
-        if (mFilterWifiTracker != null) {
-            mFilterWifiTracker.onDestroy();
-            mFilterWifiTracker = null;
+        if (mWorkerThread != null) {
+            mWorkerThread.quit();
         }
+        super.onDestroy();
     }
 
     private void showAllButton() {
@@ -287,9 +322,8 @@
         mHandler.sendEmptyMessageDelayed(MESSAGE_STOP_SCAN_WIFI_LIST, DELAY_TIME_STOP_SCAN_MS);
 
         if (mFilterWifiTracker == null) {
-            mFilterWifiTracker = new FilterWifiTracker(getActivity(), getSettingsLifecycle());
+            mFilterWifiTracker = new FilterWifiTracker();
         }
-        mFilterWifiTracker.onResume();
     }
 
     private final Handler mHandler = new Handler() {
@@ -326,12 +360,12 @@
                 NetworkRequestErrorDialogFragment.class.getSimpleName());
     }
 
-    private class AccessPointAdapter extends ArrayAdapter<AccessPoint> {
+    private static class WifiEntryAdapter extends ArrayAdapter<WifiEntry> {
 
         private final int mResourceId;
         private final LayoutInflater mInflater;
 
-        AccessPointAdapter(Context context, int resourceId, List<AccessPoint> objects) {
+        WifiEntryAdapter(Context context, int resourceId, List<WifiEntry> objects) {
             super(context, resourceId, objects);
             mResourceId = resourceId;
             mInflater = LayoutInflater.from(context);
@@ -347,18 +381,18 @@
                 divider.setVisibility(View.GONE);
             }
 
-            AccessPoint accessPoint = getItem(position);
+            WifiEntry wifiEntry = getItem(position);
 
             TextView titleView = view.findViewById(android.R.id.title);
             if (titleView != null) {
                 // Shows whole SSID for better UX.
                 titleView.setSingleLine(false);
-                titleView.setText(accessPoint.getTitle());
+                titleView.setText(wifiEntry.getTitle());
             }
 
             TextView summary = view.findViewById(android.R.id.summary);
             if (summary != null) {
-                String summaryString = accessPoint.getSettingsSummary();
+                String summaryString = wifiEntry.getSummary();
                 if (TextUtils.isEmpty(summaryString)) {
                     summary.setVisibility(View.GONE);
                 } else {
@@ -368,7 +402,7 @@
             }
 
             ImageView imageView = view.findViewById(android.R.id.icon);
-            int level = accessPoint.getLevel();
+            int level = wifiEntry.getLevel();
             if (imageView != null) {
                 Drawable drawable = getContext().getDrawable(
                         Utils.getWifiIconResource(level));
@@ -397,29 +431,29 @@
         // Shouldn't need to renew cached list, since input result is empty.
         if (scanResults != null && scanResults.size() > 0) {
             mHandler.removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
-            renewAccessPointList(scanResults);
+            renewWifiEntryList(scanResults);
 
             notifyAdapterRefresh();
         }
     }
 
-    // Updates internal AccessPoint list from WifiTracker. scanResults are used to update key list
-    // of AccessPoint, and could be null if there is no necessary to update key list.
-    private void renewAccessPointList(List<ScanResult> scanResults) {
+    // Updates internal WifiEntry list from WifiTracker. scanResults are used to update key list
+    // of WifiEntry, and could be null if there is no need to update key list.
+    private void renewWifiEntryList(@Nullable List<ScanResult> scanResults) {
         if (mFilterWifiTracker == null) {
             return;
         }
 
         // TODO(b/119846365): Checks if we could escalate the converting effort.
-        // Updates keys of scanResults into FilterWifiTracker for updating matched AccessPoints.
+        // Updates keys of scanResults into FilterWifiTracker for updating matched WifiEntries.
         if (scanResults != null) {
             mFilterWifiTracker.updateKeys(scanResults);
         }
 
-        // Re-gets matched AccessPoints from WifiTracker.
-        List<AccessPoint> list = getAccessPointList();
+        // Re-gets matched WifiEntries from WifiTracker.
+        List<WifiEntry> list = getWifiEntryList();
         list.clear();
-        list.addAll(mFilterWifiTracker.getAccessPoints());
+        list.addAll(mFilterWifiTracker.getWifiEntries());
     }
 
     @VisibleForTesting
@@ -447,56 +481,47 @@
     }
 
     private final class FilterWifiTracker {
-        private final List<String> mAccessPointKeys;
-        private final WifiTracker mWifiTracker;
-        private final Context mContext;
+        private List<ScanResult> mMatchedScanResults;
 
-        FilterWifiTracker(Context context, Lifecycle lifecycle) {
-            mWifiTracker = WifiTrackerFactory.create(context, mWifiListener,
-                    lifecycle, /* includeSaved= */ true, /* includeScans= */ true);
-            mAccessPointKeys = new ArrayList<>();
-            mContext = context;
+        FilterWifiTracker() {
+            mMatchedScanResults = new ArrayList<>();
         }
 
         /**
          * Updates key list from input. {@code onMatch()} may be called in multi-times according
          * wifi scanning result, so needs patchwork here.
          */
-        public void updateKeys(List<ScanResult> scanResults) {
-            for (ScanResult scanResult : scanResults) {
-                String key = AccessPoint.getKey(mContext, scanResult);
-                if (!mAccessPointKeys.contains(key)) {
-                    mAccessPointKeys.add(key);
-                }
-            }
+        void updateKeys(List<ScanResult> scanResults) {
+            mMatchedScanResults = scanResults;
         }
 
         /**
-         * Returns only AccessPoints whose key is in {@code mAccessPointKeys}.
+         * Returns only WifiEntries whose key is in {@code mMatchedScanResults}.
          *
-         * @return List of matched AccessPoints.
+         * @return List of matched WifiEntries.
          */
-        public List<AccessPoint> getAccessPoints() {
-            final List<AccessPoint> allAccessPoints = mWifiTracker.getAccessPoints();
-            final List<AccessPoint> result = new ArrayList<>();
+        List<WifiEntry> getWifiEntries() {
+            List<WifiEntry> wifiEntries = new ArrayList<>();
+            if (mWifiPickerTracker.getConnectedWifiEntry() != null) {
+                wifiEntries.add(mWifiPickerTracker.getConnectedWifiEntry());
+            }
+            wifiEntries.addAll(mWifiPickerTracker.getWifiEntries());
 
-            // The order should be kept, because order means wifi score (sorting in WifiTracker).
-            int count = 0;
-            for (AccessPoint accessPoint : allAccessPoints) {
-                String key = accessPoint.getKey();
-                if (mAccessPointKeys.contains(key)) {
-                    result.add(accessPoint);
-
-                    count++;
-                    // Limits how many count of items could show.
-                    if (mShowLimitedItem && count >= MAX_NUMBER_LIST_ITEM) {
-                        break;
+            List<WifiEntry> filteredWifiEntries = new ArrayList<>();
+            filteredWifiEntries.addAll(wifiEntries.stream().filter(entry -> {
+                for (ScanResult matchedScanResult : mMatchedScanResults) {
+                    if (TextUtils.equals(entry.getSsid(), matchedScanResult.SSID)
+                            && entry.getSecurity()
+                                    == WifiUtil.getWifiEntrySecurity(matchedScanResult)) {
+                        return true;
                     }
                 }
-            }
+                return false;
+            }).limit(mShowLimitedItem ? MAX_NUMBER_LIST_ITEM : Long.MAX_VALUE)
+                    .collect(toList()));
 
             // Update related UI buttons
-            if (mShowLimitedItem && (count >= MAX_NUMBER_LIST_ITEM)) {
+            if (mShowLimitedItem && (filteredWifiEntries.size() >= MAX_NUMBER_LIST_ITEM)) {
                 showAllButton();
             }
             // Enable connect button if there is no pending callback.
@@ -504,43 +529,7 @@
                 updateConnectButton(true);
             }
 
-            return result;
-        }
-
-        private WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
-
-            @Override
-            public void onWifiStateChanged(int state) {
-                notifyAdapterRefresh();
-            }
-
-            @Override
-            public void onConnectedChanged() {
-                notifyAdapterRefresh();
-            }
-
-            @Override
-            public void onAccessPointsChanged() {
-                notifyAdapterRefresh();
-            }
-        };
-
-        public void onDestroy() {
-            if (mWifiTracker != null) {
-                mWifiTracker.onDestroy();
-            }
-        }
-
-        public void onResume() {
-            if (mWifiTracker != null) {
-                mWifiTracker.onStart();
-            }
-        }
-
-        public void onPause() {
-            if (mWifiTracker != null) {
-                mWifiTracker.onStop();
-            }
+            return filteredWifiEntries;
         }
     }
 }
diff --git a/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java b/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java
index a2c58e3..b0d8849 100644
--- a/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java
+++ b/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java
@@ -38,6 +38,7 @@
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.location.LocationSettingsFragment;
 import com.android.settingslib.HelpUtils;
 
 /** Business logic to allow auto-enabling of wifi near saved networks. */
@@ -109,8 +110,7 @@
     @Override
     protected boolean handlePreferenceClicked(TwoStatePreference preference) {
         if (!mLocationManager.isLocationEnabled()) {
-            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
-            getContext().startActivity(intent);
+            getFragmentController().launchFragment(new LocationSettingsFragment());
         } else if (getWifiWakeupEnabled()) {
             setWifiWakeupEnabled(false);
         } else if (!getWifiScanningEnabled()) {
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 203bfa1..edc5f38 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -25,11 +25,13 @@
 
     libs: [
         "Robolectric_all-target",
+        "Settings-robo-testutils",
         "robolectric_android-all-stub",
         "mockito-robolectric-prebuilt",
         "truth-prebuilt",
         "testng",
         "android.car",
+        "android.car.test.utils",
     ],
 
     java_resource_dirs: ["config"],
diff --git a/tests/robotests/res/values/config.xml b/tests/robotests/res/values/config.xml
index d199989..3491454 100644
--- a/tests/robotests/res/values/config.xml
+++ b/tests/robotests/res/values/config.xml
@@ -20,6 +20,4 @@
     <string name="config_defaultAssistantComponentName" translatable="false">#+UNSET</string>
     <!-- Whether exit button in settings' root action bar should be shown or not -->
     <bool name="config_show_settings_root_exit_icon">true</bool>
-    <!-- Whether the dummy fragment should be root -->
-    <bool name="config_is_dummy_fragment_root">true</bool>
 </resources>
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
deleted file mode 100644
index f18072b..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
+++ /dev/null
@@ -1,172 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/**
- * Tests for the {@link AccountDetailsFragment}.
- */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class, ShadowUserHelper.class})
-public class AccountDetailsFragmentTest {
-    private static final String DIALOG_TAG = "confirmRemoveAccount";
-    private final Account mAccount = new Account("Name", "com.acct");
-    private final UserInfo mUserInfo = new UserInfo(/* id= */ 0, /* name= */ "name", /* flags= */
-            0);
-    private final CharSequence mAccountLabel = "Type 1";
-
-    private Context mContext;
-    private FragmentController<AccountDetailsFragment> mFragmentController;
-    private AccountDetailsFragment mFragment;
-
-    @Mock
-    private UserHelper mMockUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mMockUserHelper);
-
-        mContext = application;
-        // Add the account to the official list of accounts
-        getShadowAccountManager().addAccount(mAccount);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowContentResolver.reset();
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void onActivityCreated_titleShouldBeSet() {
-        initFragment();
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        assertThat(toolbar.getTitle()).isEqualTo(mAccountLabel);
-    }
-
-    @Test
-    public void cannotModifyUsers_removeAccountButtonShouldNotBeVisible() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts())
-                .thenReturn(false);
-        initFragment();
-
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        assertThat(toolbar.getMenuItems()).hasSize(1);
-        assertThat(toolbar.getMenuItems().get(0).isVisible()).isFalse();
-    }
-
-    @Test
-    public void canModifyUsers_removeAccountButtonShouldBeVisible() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts())
-                .thenReturn(true);
-        initFragment();
-
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        assertThat(toolbar.getMenuItems()).hasSize(1);
-        assertThat(toolbar.getMenuItems().get(0).isVisible()).isTrue();
-    }
-
-    @Test
-    public void onRemoveAccountButtonClicked_canModifyUsers_shouldShowConfirmRemoveAccountDialog() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts())
-                .thenReturn(true);
-        initFragment();
-
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        toolbar.getMenuItems().get(0).performClick();
-
-        Fragment dialogFragment = mFragment.findDialogByTag(DIALOG_TAG);
-
-        assertThat(dialogFragment).isNotNull();
-        assertThat(dialogFragment).isInstanceOf(
-                AccountDetailsFragment.ConfirmRemoveAccountDialogFragment.class);
-    }
-
-    @Test
-    public void accountExists_accountStillExists_shouldBeTrue() {
-        initFragment();
-        // Nothing has happened to the account so this should return true;
-        assertThat(mFragment.accountExists()).isTrue();
-    }
-
-    @Test
-    public void accountExists_accountWasRemoved_shouldBeFalse() {
-        initFragment();
-        // Clear accounts so that the account being displayed appears to have been removed
-        getShadowAccountManager().removeAllAccounts();
-        assertThat(mFragment.accountExists()).isFalse();
-    }
-
-    @Test
-    public void onAccountsUpdate_accountDoesNotExist_shouldGoBack() {
-        initFragment();
-        // Clear accounts so that the account being displayed appears to have been removed
-        getShadowAccountManager().removeAllAccounts();
-        mFragment.onAccountsUpdate(null);
-
-        assertThat(((BaseTestActivity) mFragment.requireActivity())
-                .getOnBackPressedFlag()).isTrue();
-    }
-
-    private void initFragment() {
-        mFragment = AccountDetailsFragment.newInstance(mAccount, mAccountLabel, mUserInfo);
-        mFragmentController = FragmentController.of(mFragment);
-        mFragmentController.setup();
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(AccountManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
deleted file mode 100644
index 821d56e..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
+++ /dev/null
@@ -1,139 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.robolectric.RuntimeEnvironment.application;
-import static org.testng.Assert.assertThrows;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.os.UserHandle;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowApplicationPackageManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit test for {@link AccountDetailsPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
-        ShadowApplicationPackageManager.class})
-public class AccountDetailsPreferenceControllerTest {
-    private static final String ACCOUNT_NAME = "Name";
-    private static final String ACCOUNT_TYPE = "com.acct";
-    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
-    private final UserHandle mUserHandle = new UserHandle(0);
-
-    private AccountDetailsPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        PreferenceControllerTestHelper<AccountDetailsPreferenceController> helper =
-                new PreferenceControllerTestHelper<>(application,
-                        AccountDetailsPreferenceController.class);
-        mController = helper.getController();
-        mController.setAccount(mAccount);
-        mController.setUserHandle(mUserHandle);
-
-        mPreference = new Preference(application);
-        helper.setPreference(mPreference);
-        helper.markState(Lifecycle.State.STARTED);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowContentResolver.reset();
-    }
-
-    @Test
-    public void checkInitialized_accountSetAndUserHandleSet_doesNothing() {
-        mController = new PreferenceControllerTestHelper<>(application,
-                AccountDetailsPreferenceController.class).getController();
-        mController.setAccount(mAccount);
-        mController.setUserHandle(mUserHandle);
-
-        mController.checkInitialized();
-    }
-
-    @Test
-    public void checkInitialized_nullAccount_throwsIllegalStateException() {
-        mController = new PreferenceControllerTestHelper<>(application,
-                AccountDetailsPreferenceController.class).getController();
-        mController.setUserHandle(mUserHandle);
-
-        assertThrows(IllegalStateException.class, () -> mController.checkInitialized());
-    }
-
-    @Test
-    public void checkInitialized_nullUserHandle_throwsIllegalStateException() {
-        mController = new PreferenceControllerTestHelper<>(application,
-                AccountDetailsPreferenceController.class).getController();
-        mController.setAccount(mAccount);
-
-        assertThrows(IllegalStateException.class, () -> mController.checkInitialized());
-    }
-
-    @Test
-    public void refreshUi_shouldSetTitle() {
-        mController.refreshUi();
-
-        assertThat(mPreference.getTitle().toString()).isEqualTo(ACCOUNT_NAME);
-    }
-
-    @Test
-    public void refreshUi_shouldSetIcon() {
-        // Add authenticator description with icon resource
-        addAuthenticator(/* type= */ ACCOUNT_TYPE, /* labelRes= */
-                R.string.account_type1_label, /* iconId= */ R.drawable.ic_add);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getIcon()).isNotNull();
-        assertThat(Shadows.shadowOf(mPreference.getIcon()).getCreatedFromResId()).isEqualTo(
-                R.drawable.ic_add);
-    }
-
-    private void addAuthenticator(String type, int labelRes, int iconId) {
-        getShadowAccountManager().addAuthenticator(
-                new AuthenticatorDescription(type, "com.android.car.settings",
-                        labelRes, iconId, /* smallIconId= */ 0, /* prefId= */ 0,
-                        /* customTokens= */ false));
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(AccountManager.get(application));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
deleted file mode 100644
index 057d648..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.accounts.Account;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.SyncAdapterType;
-import android.content.SyncStatusInfo;
-import android.content.SyncStatusObserver;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.ProviderInfo;
-import android.os.UserHandle;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowApplicationPackageManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit test for {@link AccountDetailsWithSyncStatusPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
-        ShadowApplicationPackageManager.class})
-public class AccountDetailsWithSyncStatusPreferenceControllerTest {
-    private static final int SYNCABLE = 1;
-    private static final String AUTHORITY = "authority";
-    private static final String ACCOUNT_NAME = "Name";
-    private static final String ACCOUNT_TYPE = "com.acct";
-    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
-    private final UserHandle mUserHandle = new UserHandle(0);
-
-    private Context mContext;
-    private AccountDetailsWithSyncStatusPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        mContext = application;
-        PreferenceControllerTestHelper<AccountDetailsWithSyncStatusPreferenceController> helper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        AccountDetailsWithSyncStatusPreferenceController.class);
-        mController = helper.getController();
-        mController.setAccount(mAccount);
-        mController.setUserHandle(mUserHandle);
-
-        mPreference = new Preference(application);
-        helper.setPreference(mPreference);
-        helper.markState(Lifecycle.State.STARTED);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowContentResolver.reset();
-    }
-
-    @Test
-    public void refreshUi_syncIsNotFailing_summaryShouldBeBlank() {
-        setUpVisibleSyncAdapters(AUTHORITY);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo("");
-    }
-
-    @Test
-    public void refreshUi_syncIsFailing_summaryShouldBeSet() {
-        setUpVisibleSyncAdapters(AUTHORITY);
-
-        // Turns on automatic sync for the the sync adapter.
-        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
-                mUserHandle.getIdentifier());
-        // Sets the sync adapter's last failure time and message so it appears to have failed
-        // previously.
-        SyncStatusInfo status = new SyncStatusInfo(0);
-        status.lastFailureTime = 10;
-        status.lastFailureMesg = "too-many-deletions";
-        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.sync_is_failing));
-    }
-
-    @Test
-    public void onSyncStatusChanged_summaryShouldUpdated() {
-        setUpVisibleSyncAdapters(AUTHORITY);
-
-        // Make sure the summary is blank first
-        mController.refreshUi();
-        assertThat(mPreference.getSummary()).isEqualTo("");
-
-        // Turns on automatic sync for the the sync adapter.
-        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
-                mUserHandle.getIdentifier());
-        // Sets the sync adapter's last failure time and message so it appears to have failed
-        // previously.
-        SyncStatusInfo status = new SyncStatusInfo(0);
-        status.lastFailureTime = 10;
-        status.lastFailureMesg = "too-many-deletions";
-        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
-
-        SyncStatusObserver listener = ShadowContentResolver.getStatusChangeListener();
-        listener.onStatusChanged(/* which= */ 0);
-
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.sync_is_failing));
-    }
-
-    private void setUpVisibleSyncAdapters(String... authorities) {
-        SyncAdapterType[] syncAdapters = new SyncAdapterType[authorities.length];
-        for (int i = 0; i < authorities.length; i++) {
-            String authority = authorities[i];
-            // Adds a sync adapter type that has the right account type and is visible.
-            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
-                    ACCOUNT_TYPE, /* userVisible= */ true, /* supportsUploading= */ true);
-            syncAdapters[i] = syncAdapterType;
-
-            // Sets that the sync adapter is syncable.
-            ShadowContentResolver.setIsSyncable(mAccount, authority, /* syncable= */ SYNCABLE);
-
-            // Sets provider info with a label for the sync adapter.
-            ProviderInfo info = new ProviderInfo();
-            info.authority = authority;
-            info.name = authority;
-            // Set an application info to avoid an NPE
-            info.applicationInfo = new ApplicationInfo();
-            ProviderInfo[] providers = {info};
-
-            PackageInfo packageInfo = new PackageInfo();
-            packageInfo.packageName = authority;
-            packageInfo.providers = providers;
-            getShadowApplicationManager().addPackage(packageInfo);
-        }
-        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
-    }
-
-    private ShadowApplicationPackageManager getShadowApplicationManager() {
-        return Shadow.extract(mContext.getPackageManager());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
deleted file mode 100644
index 546c621..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
+++ /dev/null
@@ -1,239 +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.
- */
-
-package com.android.car.settings.accounts;
-
-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.RuntimeEnvironment.application;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit tests for {@link AccountListPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowContentResolver.class, ShadowAccountManager.class, ShadowUserHelper.class})
-public class AccountListPreferenceControllerTest {
-    private static final int USER_ID = 0;
-    private static final String USER_NAME = "name";
-    private static final int NOT_THIS_USER_ID = 1;
-    private PreferenceControllerTestHelper<AccountListPreferenceController> mHelper;
-    private AccountManager mAccountManager = AccountManager.get(application);
-    private PreferenceCategory mPreferenceCategory;
-    private AccountListPreferenceController mController;
-    private FragmentController mFragmentController;
-
-    @Mock
-    private UserHelper mMockUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mMockUserHelper);
-
-        // Set up user info
-        when(mMockUserHelper.getCurrentProcessUserInfo())
-                .thenReturn(new UserInfo(USER_ID, USER_NAME, 0));
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-
-        // Add authenticated account types so that they are listed below
-        addAuthenticator(/* type= */ "com.acct1", /* labelRes= */ R.string.account_type1_label);
-        addAuthenticator(/* type= */ "com.acct2", /* labelRes= */ R.string.account_type2_label);
-
-        mPreferenceCategory = new PreferenceCategory(application);
-        mHelper = new PreferenceControllerTestHelper<>(application,
-                AccountListPreferenceController.class, mPreferenceCategory);
-        mHelper.markState(Lifecycle.State.CREATED);
-        mController = mHelper.getController();
-        mFragmentController = mHelper.getMockFragmentController();
-    }
-
-    @After
-    public void reset() {
-        removeAllAccounts();
-        ShadowContentResolver.reset();
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void onCreate_preferenceCategoryTitleShouldBeSet() {
-        String expectedTitle = application.getString(R.string.account_list_title, "name");
-        assertThat(mPreferenceCategory.getTitle()).isEqualTo(expectedTitle);
-    }
-
-    @Test
-    public void refreshUi_hasNoAccounts_shouldDisplayNoAccountPref() {
-        mController.refreshUi();
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
-        Preference noAccountPref = mPreferenceCategory.getPreference(0);
-
-        assertThat(noAccountPref.getTitle()).isEqualTo(
-                application.getString(R.string.no_accounts_added));
-    }
-
-    @Test
-    public void refreshUi_hasAccounts_shouldDisplayAccounts() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
-
-        mController.refreshUi();
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-
-        Preference firstPref = mPreferenceCategory.getPreference(0);
-        assertThat(firstPref.getTitle()).isEqualTo("Account1");
-        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
-
-        Preference secondPref = mPreferenceCategory.getPreference(1);
-        assertThat(secondPref.getTitle()).isEqualTo("Account2");
-        assertThat(secondPref.getSummary()).isEqualTo("Type 2");
-    }
-
-    @Test
-    public void refreshUi_hasUnauthenticatedAccount_shouldNotDisplayAccount() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
-        // There is not authenticator for account type "com.acct3" so this account should not
-        // appear in the list of displayed accounts.
-        addAccount(/* name= */ "Account3", /* type= */ "com.acct3");
-
-        mController.refreshUi();
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-
-        Preference firstPref = mPreferenceCategory.getPreference(0);
-        assertThat(firstPref.getTitle()).isEqualTo("Account1");
-        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
-
-        Preference secondPref = mPreferenceCategory.getPreference(1);
-        assertThat(secondPref.getTitle()).isEqualTo("Account2");
-        assertThat(secondPref.getSummary()).isEqualTo("Type 2");
-    }
-
-    @Test
-    public void onAccountsUpdate_isThisUser_shouldForceUpdate() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
-
-        mController.refreshUi();
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-
-        getShadowAccountManager().removeAllAccounts();
-        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
-
-        mController.onAccountsUpdate(new UserHandle(USER_ID));
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
-        Preference firstPref = mPreferenceCategory.getPreference(0);
-        assertThat(firstPref.getTitle()).isEqualTo("Account3");
-        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
-    }
-
-    @Test
-    public void onAccountsUpdate_updatedUserIsNotCurrentUser_shouldNotForceUpdate() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
-
-        mController.refreshUi();
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-
-        getShadowAccountManager().removeAllAccounts();
-        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
-
-        mController.onAccountsUpdate(new UserHandle(NOT_THIS_USER_ID));
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-    }
-
-    @Test
-    public void onUsersUpdate_shouldForceUpdate() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
-
-        mController.refreshUi();
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-
-        getShadowAccountManager().removeAllAccounts();
-        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
-
-        mController.onUsersUpdate();
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
-        Preference firstPref = mPreferenceCategory.getPreference(0);
-        assertThat(firstPref.getTitle()).isEqualTo("Account3");
-        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
-    }
-
-    @Test
-    public void onAccountPreferenceClicked_shouldLaunchAccountDetailsFragment() {
-        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
-        mController.refreshUi();
-
-        Preference firstPref = mPreferenceCategory.getPreference(0);
-        firstPref.performClick();
-
-        verify(mFragmentController).launchFragment(any(AccountDetailsFragment.class));
-    }
-
-    private void addAccount(String name, String type) {
-        getShadowAccountManager().addAccount(new Account(name, type));
-    }
-
-    private void removeAllAccounts() {
-        getShadowAccountManager().removeAllAccounts();
-    }
-
-    private void addAuthenticator(String type, int labelRes) {
-        getShadowAccountManager().addAuthenticator(
-                new AuthenticatorDescription(type, "com.android.car.settings",
-                        labelRes, 0, 0, 0, false));
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(mAccountManager);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java
deleted file mode 100644
index 8947f93..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java
+++ /dev/null
@@ -1,182 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-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;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowIntent;
-import org.robolectric.shadows.ShadowUserManager;
-
-/**
- * Tests for AccountSettingsFragment class.
- */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class, ShadowUserHelper.class})
-public class AccountSettingsFragmentTest {
-    private final int mUserId = UserHandle.myUserId();
-
-    private FragmentController<AccountSettingsFragment> mFragmentController;
-    private AccountSettingsFragment mFragment;
-
-    @Mock
-    private UserHelper mMockUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mMockUserHelper);
-        // Set up user info
-        when(mMockUserHelper.getCurrentProcessUserInfo())
-                .thenReturn(new UserInfo(mUserId, "USER", /* flags= */ 0));
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void cannotModifyUsers_addAccountButtonShouldNotBeVisible() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
-        initFragment();
-
-        assertThat(getToolbar().getMenuItems()).hasSize(1);
-        assertThat(getToolbar().getMenuItems().get(0).isVisible()).isFalse();
-    }
-
-    @Test
-    public void canModifyUsers_addAccountButtonShouldBeVisible() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-        initFragment();
-
-        assertThat(getToolbar().getMenuItems()).hasSize(1);
-        assertThat(getToolbar().getMenuItems().get(0).isVisible()).isTrue();
-    }
-
-    @Test
-    public void clickAddAccountButton_shouldOpenChooseAccountFragment() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-        initFragment();
-
-        MenuItem addAccountButton = getToolbar().getMenuItems().get(0);
-        addAccountButton.performClick();
-
-        Intent intent = Shadows.shadowOf(mFragment.getActivity()).getNextStartedActivity();
-        ShadowIntent shadowIntent = Shadows.shadowOf(intent);
-        assertThat(shadowIntent.getIntentClass()).isEqualTo(
-                CarSettingActivities.ChooseAccountActivity.class);
-    }
-
-    @Test
-    public void clickAddAccountButton_shouldNotOpenChooseAccountFragmentWhenOneType() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-        getShadowUserManager().addProfile(mUserId, mUserId,
-                String.valueOf(mUserId), /* profileFlags= */ 0);
-        addAccountAndDescription(mUserId, "accountName", R.string.account_type1_label);
-        initFragment();
-
-        MenuItem addAccountButton = getToolbar().getMenuItems().get(0);
-        addAccountButton.performClick();
-
-        Intent intent = Shadows.shadowOf(mFragment.getActivity()).getNextStartedActivity();
-        ShadowIntent shadowIntent = Shadows.shadowOf(intent);
-        assertThat(shadowIntent.getIntentClass()).isEqualTo(AddAccountActivity.class);
-    }
-
-    @Test
-    public void clickAddAccountButton_shouldOpenChooseAccountFragmentWhenTwoTypes() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-        getShadowUserManager().addProfile(mUserId, mUserId,
-                String.valueOf(mUserId), /* profileFlags= */ 0);
-        addAccountAndDescription(mUserId, "accountName1", R.string.account_type1_label);
-        addAccountAndDescription(mUserId, "accountName2", R.string.account_type2_label);
-        initFragment();
-
-        getToolbar().getMenuItems().get(0).performClick();
-
-        Intent intent = Shadows.shadowOf(mFragment.getActivity()).getNextStartedActivity();
-        ShadowIntent shadowIntent = Shadows.shadowOf(intent);
-        assertThat(shadowIntent.getIntentClass()).isEqualTo(
-                CarSettingActivities.ChooseAccountActivity.class);
-    }
-
-    private void initFragment() {
-        mFragment = new AccountSettingsFragment();
-        mFragmentController = FragmentController.of(mFragment);
-        mFragmentController.setup();
-    }
-
-    private void addAccountAndDescription(int profileId, String accountName, int labelId) {
-        String type = accountName + "_type";
-        getShadowAccountManager().addAccountAsUser(profileId, new Account(accountName, type));
-        getShadowAccountManager().addAuthenticatorAsUser(profileId,
-                new AuthenticatorDescription(type, "com.android.car.settings",
-                        labelId, /* iconId= */ R.drawable.ic_add, /* smallIconId= */
-                        0, /* prefId= */ 0));
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(application));
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(AccountManager.get(application));
-    }
-
-    private ToolbarController getToolbar() {
-        return requireToolbar(mFragment.requireActivity());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java
deleted file mode 100644
index 30e9de2..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java
+++ /dev/null
@@ -1,223 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.accounts.Account;
-import android.content.ContentResolver;
-import android.content.SyncAdapterType;
-import android.content.SyncInfo;
-import android.os.Bundle;
-import android.os.UserHandle;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for the {@link AccountSyncDetailsFragment}.
- */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowContentResolver.class, ShadowAccountManager.class})
-public class AccountSyncDetailsFragmentTest {
-    private static final int USER_ID = 3;
-    private static final String ACCOUNT_TYPE = "com.acct1";
-    private static final String AUTHORITY = "authority";
-    private static final String AUTHORITY_2 = "authority2";
-
-    private final Account mAccount = new Account("Name", ACCOUNT_TYPE);
-    private final UserHandle mUserHandle = new UserHandle(USER_ID);
-
-    private FragmentController<AccountSyncDetailsFragment> mFragmentController;
-    private AccountSyncDetailsFragment mFragment;
-    @Mock
-    ShadowContentResolver.SyncListener mMockSyncListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowContentResolver.setSyncListener(mMockSyncListener);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowContentResolver.reset();
-    }
-
-    @Test
-    public void onInit_doesNotHaveActiveSyncs_actionButtonShouldSaySyncNow() {
-        initFragment();
-
-        MenuItem syncButton = getSyncButton();
-        assertThat(syncButton.getTitle()).isEqualTo(
-                application.getString(R.string.sync_button_sync_now));
-    }
-
-    @Test
-    public void onInit_hasActiveSyncs_actionButtonShouldSayCancelSync() {
-        SyncInfo syncInfo = mock(SyncInfo.class);
-        List<SyncInfo> syncs = new ArrayList<>();
-        syncs.add(syncInfo);
-        ShadowContentResolver.setCurrentSyncs(syncs);
-
-        initFragment();
-
-        MenuItem syncButton = getSyncButton();
-        assertThat(syncButton.getTitle()).isEqualTo(
-                application.getString(R.string.sync_button_sync_cancel));
-    }
-
-    @Test
-    public void onButtonClicked_doesNotHaveActiveSyncs_shouldSyncSyncableAdapters() {
-        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
-        initFragment();
-
-        getSyncButton().performClick();
-
-        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
-        verify(mMockSyncListener, times(2)).onSyncRequested(eq(mAccount), argument.capture(),
-                eq(USER_ID), any(Bundle.class));
-
-        List<String> values = argument.getAllValues();
-
-        assertThat(values).contains(AUTHORITY);
-        assertThat(values).contains(AUTHORITY_2);
-    }
-
-    @Test
-    public void onButtonClicked_doesNotHaveActiveSyncs_oneTimeSyncIsOff_shouldNotSyncOffAdapters() {
-        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
-        // Turns off one time sync and automatic sync for the adapter
-        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
-        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY_2, /* sync= */ false,
-                USER_ID);
-        initFragment();
-
-        getSyncButton().performClick();
-
-        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
-        verify(mMockSyncListener, times(1)).onSyncRequested(eq(mAccount), argument.capture(),
-                eq(USER_ID), any(Bundle.class));
-
-        List<String> values = argument.getAllValues();
-
-        assertThat(values).contains(AUTHORITY);
-        assertThat(values).doesNotContain(AUTHORITY_2);
-    }
-
-    @Test
-    public void onButtonClicked_doesNotHaveActiveSyncs_oneTimeSyncIsOn_shouldSyncOffAdapters() {
-        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
-        // Turns on one time sync and turns off automatic sync for the adapter
-        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
-        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY_2, /* sync= */ false,
-                USER_ID);
-        initFragment();
-
-        getSyncButton().performClick();
-
-        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
-        verify(mMockSyncListener, times(2)).onSyncRequested(eq(mAccount), argument.capture(),
-                eq(USER_ID), any(Bundle.class));
-
-        List<String> values = argument.getAllValues();
-
-        assertThat(values).contains(AUTHORITY);
-        assertThat(values).contains(AUTHORITY_2);
-    }
-
-    @Test
-    public void onButtonClicked_doesHaveActiveSyncs_shouldCancelSyncForSyncableAdapters() {
-        // Add active syncs
-        SyncInfo syncInfo = mock(SyncInfo.class);
-        List<SyncInfo> syncs = new ArrayList<>();
-        syncs.add(syncInfo);
-        ShadowContentResolver.setCurrentSyncs(syncs);
-
-        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
-        initFragment();
-
-        getSyncButton().performClick();
-
-        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
-        verify(mMockSyncListener, times(2)).onSyncCanceled(eq(mAccount), argument.capture(),
-                eq(USER_ID));
-
-        List<String> values = argument.getAllValues();
-
-        assertThat(values).contains(AUTHORITY);
-        assertThat(values).contains(AUTHORITY_2);
-    }
-
-    private MenuItem getSyncButton() {
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        return toolbar.getMenuItems().get(0);
-    }
-
-    private void initFragment() {
-        mFragment = AccountSyncDetailsFragment.newInstance(mAccount, mUserHandle);
-        mFragmentController = FragmentController.of(mFragment);
-        mFragmentController.setup();
-    }
-
-    private void setUpSyncAdapters(String... authorities) {
-        SyncAdapterType[] syncAdapters = new SyncAdapterType[authorities.length];
-        for (int i = 0; i < authorities.length; i++) {
-            String authority = authorities[i];
-            // Adds a sync adapter type that has the right account type and is visible.
-            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
-                    ACCOUNT_TYPE, /* userVisible= */ true, /* supportsUploading= */ true);
-            syncAdapters[i] = syncAdapterType;
-
-            // Sets that the sync adapter is syncable.
-            ShadowContentResolver.setIsSyncable(mAccount, authority, /* syncable= */ 1);
-        }
-        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountTypesHelperTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountTypesHelperTest.java
index fd6ff4f..a937a7a 100644
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountTypesHelperTest.java
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountTypesHelperTest.java
@@ -23,7 +23,6 @@
 
 import android.accounts.AccountManager;
 import android.accounts.AuthenticatorDescription;
-import android.car.userlib.CarUserManagerHelper;
 import android.content.SyncAdapterType;
 
 import com.android.car.settings.R;
@@ -34,7 +33,6 @@
 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.annotation.Config;
@@ -54,9 +52,6 @@
 
     private AccountTypesHelper mHelper;
 
-    @Mock
-    private CarUserManagerHelper mMockCarUserManagerHelper;
-
     private AccountManager mAccountManager = AccountManager.get(application);
 
     private int mOnChangeListenerInvocations;
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java
deleted file mode 100644
index a03f694..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,76 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-/** Unit test for {@link AccountsEntryPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserHelper.class})
-public class AccountsEntryPreferenceControllerTest {
-
-    @Mock
-    private UserHelper mMockUserHelper;
-    private AccountsEntryPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mMockUserHelper);
-
-        mController = new PreferenceControllerTestHelper<>(RuntimeEnvironment.application,
-                AccountsEntryPreferenceController.class).getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void getAvailabilityStatus_cannotModifyAccounts_disabledForUser() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_canModifyAccounts_available() {
-        when(mMockUserHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
deleted file mode 100644
index 134d5e7..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
+++ /dev/null
@@ -1,173 +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.
- */
-
-package com.android.car.settings.accounts;
-
-import static com.android.car.settings.accounts.ChooseAccountPreferenceController.ADD_ACCOUNT_REQUEST_CODE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ActivityResultCallback;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit tests for {@link ChooseAccountPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserHelper.class, ShadowContentResolver.class, ShadowAccountManager.class})
-public class ChooseAccountPreferenceControllerTest {
-    private static final int USER_ID = 0;
-
-    PreferenceControllerTestHelper<ChooseAccountPreferenceController> mHelper;
-    private PreferenceGroup mPreferenceGroup;
-    private ChooseAccountPreferenceController mController;
-    @Mock
-    private UserHelper mMockUserHelper;
-
-    private AccountManager mAccountManager = AccountManager.get(application);
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        // Set up user info
-        ShadowUserHelper.setInstance(mMockUserHelper);
-        when(mMockUserHelper.getCurrentProcessUserInfo())
-                .thenReturn(new UserInfo(USER_ID, "name", 0));
-
-        // Add authenticated account types
-        addAuthenticator(/* type= */ "com.acct1", /* label= */ R.string.account_type1_label);
-        addAuthenticator(/* type= */ "com.acct2", /* label= */ R.string.account_type2_label);
-
-        mPreferenceGroup = new LogicalPreferenceGroup(application);
-        mHelper = new PreferenceControllerTestHelper<>(application,
-                ChooseAccountPreferenceController.class, mPreferenceGroup);
-        // Mark state as started so the AuthenticatorHelper listener is attached.
-        mHelper.markState(Lifecycle.State.STARTED);
-        mController = mHelper.getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-        ShadowContentResolver.reset();
-    }
-
-    @Test
-    public void refreshUi_authenticatorPreferencesShouldBeSet() {
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-
-        Preference acct1Pref = mPreferenceGroup.getPreference(0);
-        assertThat(acct1Pref.getTitle()).isEqualTo("Type 1");
-
-        Preference acct2Pref = mPreferenceGroup.getPreference(1);
-        assertThat(acct2Pref.getTitle()).isEqualTo("Type 2");
-    }
-
-    @Test
-    public void onAccountsUpdate_currentUserUpdated_shouldForceUpdate() {
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-
-        addAuthenticator(/* type= */ "com.acct3", /* label= */ R.string.account_type3_label);
-
-        // Trigger an account update via the authenticator helper so that the state matches what
-        // it would be during actual execution.
-        mController.getAuthenticatorHelper().onReceive(application, null);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
-        Preference acct3Pref = mPreferenceGroup.getPreference(2);
-        assertThat(acct3Pref.getTitle()).isEqualTo("Type 3");
-    }
-
-    @Test
-    public void onPreferenceClick_shouldStartActivity() {
-        Preference acct1Pref = mPreferenceGroup.getPreference(0);
-        acct1Pref.performClick();
-
-        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
-
-        verify(mHelper.getMockFragmentController()).startActivityForResult(captor.capture(),
-                anyInt(), any(ActivityResultCallback.class));
-
-        Intent intent = captor.getValue();
-        assertThat(intent.getComponent().getClassName()).isEqualTo(
-                AddAccountActivity.class.getName());
-        assertThat(intent.getStringExtra(AddAccountActivity.EXTRA_SELECTED_ACCOUNT)).isEqualTo(
-                "com.acct1");
-    }
-
-    @Test
-    public void onAccountAdded_shouldGoBack() {
-        Preference acct1Pref = mPreferenceGroup.getPreference(0);
-        acct1Pref.performClick();
-
-        ArgumentCaptor<ActivityResultCallback> captor = ArgumentCaptor.forClass(
-                ActivityResultCallback.class);
-
-        verify(mHelper.getMockFragmentController()).startActivityForResult(any(Intent.class),
-                anyInt(), captor.capture());
-
-        ActivityResultCallback callback = captor.getValue();
-        callback.processActivityResult(ADD_ACCOUNT_REQUEST_CODE, /* resultCode= */ 0, /* data= */
-                null);
-
-        verify(mHelper.getMockFragmentController()).goBack();
-    }
-
-    private void addAuthenticator(String type, int labelRes) {
-        getShadowAccountManager().addAuthenticator(
-                new AuthenticatorDescription(type, "com.android.car.settings",
-                        labelRes, 0, 0, 0, false));
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(mAccountManager);
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java
deleted file mode 100644
index d560e10..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PermissionGroupInfo;
-import android.content.pm.PermissionInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowPackageManager;
-
-/** Unit test for {@link AppPermissionsEntryPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class AppPermissionsEntryPreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private AppPermissionsEntryPreferenceController mController;
-
-    private PermissionInfo mPermLocation;
-    private PermissionInfo mPermMic;
-    private PermissionInfo mPermCamera;
-    private PermissionInfo mPermSms;
-    private PermissionInfo mPermContacts;
-    private PermissionInfo mPermPhone;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        PreferenceControllerTestHelper<AppPermissionsEntryPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        AppPermissionsEntryPreferenceController.class, mPreference);
-        mController = controllerHelper.getController();
-        controllerHelper.markState(Lifecycle.State.STARTED);
-
-        mPermLocation = new PermissionInfo();
-        mPermLocation.name = "Permission1";
-        mPermLocation.group = "android.permission-group.LOCATION";
-        PermissionGroupInfo groupLocation = new PermissionGroupInfo();
-        groupLocation.name = mPermLocation.group;
-        groupLocation.nonLocalizedLabel = "Location";
-        getShadowPackageManager().addPermissionGroupInfo(groupLocation);
-
-        mPermMic = new PermissionInfo();
-        mPermMic.name = "Permission2";
-        mPermMic.group = "android.permission-group.MICROPHONE";
-        PermissionGroupInfo groupMic = new PermissionGroupInfo();
-        groupMic.name = mPermMic.group;
-        groupMic.nonLocalizedLabel = "Microphone";
-        getShadowPackageManager().addPermissionGroupInfo(groupMic);
-
-        mPermCamera = new PermissionInfo();
-        mPermCamera.name = "Permission3";
-        mPermCamera.group = "android.permission-group.CAMERA";
-        PermissionGroupInfo groupCamera = new PermissionGroupInfo();
-        groupCamera.name = mPermCamera.group;
-        groupCamera.nonLocalizedLabel = "Camera";
-        getShadowPackageManager().addPermissionGroupInfo(groupCamera);
-
-        mPermSms = new PermissionInfo();
-        mPermSms.name = "Permission4";
-        mPermSms.group = "android.permission-group.SMS";
-        PermissionGroupInfo groupSms = new PermissionGroupInfo();
-        groupSms.name = mPermSms.group;
-        groupSms.nonLocalizedLabel = "Sms";
-        getShadowPackageManager().addPermissionGroupInfo(groupSms);
-
-        mPermContacts = new PermissionInfo();
-        mPermContacts.name = "Permission5";
-        mPermContacts.group = "android.permission-group.CONTACTS";
-        PermissionGroupInfo groupContacts = new PermissionGroupInfo();
-        groupContacts.name = mPermContacts.group;
-        groupContacts.nonLocalizedLabel = "Contacts";
-        getShadowPackageManager().addPermissionGroupInfo(groupContacts);
-
-        mPermPhone = new PermissionInfo();
-        mPermPhone.name = "Permission6";
-        mPermPhone.group = "android.permission-group.PHONE";
-        PermissionGroupInfo groupPhone = new PermissionGroupInfo();
-        groupPhone.name = mPermPhone.group;
-        groupPhone.nonLocalizedLabel = "Phone";
-
-        getShadowPackageManager().addPermissionGroupInfo(groupPhone);
-    }
-
-
-    @Test
-    public void refreshUi_noGrantedPermissions_setsNullSummary() {
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isNull();
-    }
-
-    @Test
-    public void refreshUi_grantedPermissions_aboveMax_setsSummary_maxCountDefinedByController() {
-        setupPackageWithPermissions(mPermLocation, mPermMic, mPermCamera, mPermSms);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(
-                "Apps using location, microphone, and camera");
-    }
-
-    @Test
-    public void refreshUi_grantedPermissions_setsSummary_inOrderDefinedByController() {
-        setupPackageWithPermissions(mPermPhone, mPermMic, mPermContacts, mPermSms);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo("Apps using microphone, sms, and contacts");
-    }
-
-    @Test
-    public void refreshUi_grantedPermissions_onlyTwo_setsSummary() {
-        setupPackageWithPermissions(mPermLocation, mPermCamera);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo("Apps using location and camera");
-    }
-
-    @Test
-    public void refreshUi_grantedPermissions_onlyOne_setsSummary() {
-        setupPackageWithPermissions(mPermCamera);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo("Apps using camera");
-    }
-
-    private void setupPackageWithPermissions(PermissionInfo... permissions) {
-        PackageInfo info = new PackageInfo();
-        info.packageName = "fake.package.name";
-        info.permissions = permissions;
-        getShadowPackageManager().addPackage(info);
-    }
-
-    private ShadowPackageManager getShadowPackageManager() {
-        return Shadow.extract(mContext.getPackageManager());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
deleted file mode 100644
index 7351482..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
+++ /dev/null
@@ -1,120 +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.
- */
-
-package com.android.car.settings.applications;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.CarSettingActivities;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.applications.ApplicationsState;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowIntent;
-
-import java.util.ArrayList;
-
-/** Unit test for {@link ApplicationsSettingsPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class ApplicationsSettingsPreferenceControllerTest {
-
-    private static final String SOURCE = "source";
-    private static final int UID = 12;
-    private static final String LABEL = "label";
-    private static final String SIZE_STR = "12.34 MB";
-
-    private Context mContext;
-    private LogicalPreferenceGroup mLogicalPreferenceGroup;
-    private PreferenceControllerTestHelper<ApplicationsSettingsPreferenceController>
-            mPreferenceControllerHelper;
-    private ApplicationsSettingsPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mLogicalPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                ApplicationsSettingsPreferenceController.class, mLogicalPreferenceGroup);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void defaultInitialize_hasNoPreference() {
-        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void onDataLoaded_addPreference_hasOnePreference() {
-        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
-        ApplicationInfo appInfo = new ApplicationInfo();
-        appInfo.uid = UID;
-        appInfo.sourceDir = SOURCE;
-
-        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
-                1234L);
-        appEntry.label = LABEL;
-        appEntry.sizeStr = SIZE_STR;
-        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
-        apps.add(appEntry);
-
-        mController.onDataLoaded(apps);
-
-        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
-        assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
-    }
-
-    @Test
-    public void preferenceClick_launchesDetailFragment() {
-        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
-        ApplicationInfo appInfo = new ApplicationInfo();
-        appInfo.uid = UID;
-        appInfo.sourceDir = SOURCE;
-
-        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
-                1234L);
-        appEntry.label = LABEL;
-        appEntry.sizeStr = SIZE_STR;
-        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
-        apps.add(appEntry);
-
-        mController.onDataLoaded(apps);
-
-        Preference preference = mLogicalPreferenceGroup.getPreference(0);
-        preference.performClick();
-
-        Intent intent = Shadows.shadowOf(RuntimeEnvironment.application).getNextStartedActivity();
-        ShadowIntent shadowIntent = Shadows.shadowOf(intent);
-        assertThat(shadowIntent.getIntentClass()).isEqualTo(
-                CarSettingActivities.ApplicationsDetailsActivity.class);
-    }
-
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java
index 39209b0..8825d08 100644
--- a/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java
@@ -25,10 +25,10 @@
 import android.content.ComponentName;
 import android.content.pm.UserInfo;
 
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.car.settings.testutils.ShadowDefaultDialerManager;
 import com.android.car.settings.testutils.ShadowSmsApplication;
 import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
 
 import org.junit.After;
 import org.junit.Test;
@@ -81,13 +81,13 @@
         UserInfo userInfo = new UserInfo();
         userInfo.id = 123;
         DevicePolicyManager dpm = mock(DevicePolicyManager.class);
-        UserHelper userHelper = mock(UserHelper.class);
-        ShadowUserHelper.setInstance(userHelper);
-        when(userHelper.getAllUsers()).thenReturn(Collections.singletonList(userInfo));
+        ProfileHelper profileHelper = mock(ProfileHelper.class);
+        ShadowUserHelper.setInstance(profileHelper);
+        when(profileHelper.getAllProfiles()).thenReturn(Collections.singletonList(userInfo));
         when(dpm.getProfileOwnerAsUser(userInfo.id)).thenReturn(
                 new ComponentName(PACKAGE_NAME, "cls"));
 
-        assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME, dpm, userHelper))
+        assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME, dpm, profileHelper))
                 .isTrue();
     }
 
@@ -97,13 +97,13 @@
         when(dpm.isDeviceOwnerAppOnAnyUser(PACKAGE_NAME)).thenReturn(true);
 
         assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME, dpm,
-                mock(UserHelper.class))).isTrue();
+                mock(ProfileHelper.class))).isTrue();
     }
 
     @Test
     public void isProfileOrDeviceOwner_returnsFalse() {
         assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME,
-                mock(DevicePolicyManager.class), mock(UserHelper.class))).isFalse();
+                mock(DevicePolicyManager.class), mock(ProfileHelper.class))).isFalse();
     }
 
 }
diff --git a/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
deleted file mode 100644
index 072fb44..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.INotificationManager;
-import android.app.NotificationChannel;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-import androidx.preference.TwoStatePreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-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.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class NotificationsPreferenceControllerTest {
-    private static final String PKG_NAME = "package.name";
-    private static final int UID = 1001010;
-    private Context mContext;
-    private NotificationsPreferenceController mController;
-    private PreferenceControllerTestHelper<NotificationsPreferenceController>
-            mPreferenceControllerHelper;
-    private TwoStatePreference mTwoStatePreference;
-    @Mock
-    private INotificationManager mMockManager;
-    @Mock
-    private NotificationChannel mMockChannel;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        mTwoStatePreference = new SwitchPreference(mContext);
-
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                NotificationsPreferenceController.class, mTwoStatePreference);
-        mController = mPreferenceControllerHelper.getController();
-        mController.mNotificationManager = mMockManager;
-
-        PackageInfo packageInfo = new PackageInfo();
-        packageInfo.packageName = PKG_NAME;
-
-        ApplicationInfo applicationInfo = new ApplicationInfo();
-        applicationInfo.packageName = PKG_NAME;
-        packageInfo.applicationInfo = applicationInfo;
-        packageInfo.applicationInfo.uid = UID;
-        mController.setPackageInfo(packageInfo);
-    }
-
-    @Test
-    public void onCreate_notificationEnabled_isChecked() throws Exception {
-        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
-
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mTwoStatePreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void onCreate_notificationDisabled_isNotChecked() throws Exception {
-        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
-
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mTwoStatePreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void callChangeListener_setEnable_enablingNotification() throws Exception {
-        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
-
-        mTwoStatePreference.callChangeListener(true);
-
-        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, true);
-    }
-
-    @Test
-    public void callChangeListener_setDisable_disablingNotification() throws Exception {
-        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
-
-        mTwoStatePreference.callChangeListener(false);
-
-        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, false);
-    }
-
-    @Test
-    public void callChangeListener_onlyHasDefaultChannel_updateChannel() throws Exception {
-        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(true);
-        when(mMockManager
-                .getNotificationChannelForPackage(
-                        PKG_NAME, UID, NotificationChannel.DEFAULT_CHANNEL_ID, null, true))
-                .thenReturn(mMockChannel);
-
-        mTwoStatePreference.callChangeListener(true);
-
-        verify(mMockManager).updateNotificationChannelForPackage(PKG_NAME, UID, mMockChannel);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
deleted file mode 100644
index aff1287..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.defaultapps;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.ui.preference.CarUiPreference;
-import com.android.settingslib.applications.DefaultAppInfo;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class DefaultAppEntryBasePreferenceControllerTest {
-    private static final CharSequence TEST_LABEL = "Test Label";
-
-    private static class TestDefaultAppEntryBasePreferenceController extends
-            DefaultAppEntryBasePreferenceController<Preference> {
-
-        private DefaultAppInfo mDefaultAppInfo;
-
-        TestDefaultAppEntryBasePreferenceController(Context context,
-                String preferenceKey, FragmentController fragmentController,
-                CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected Class<Preference> getPreferenceType() {
-            return Preference.class;
-        }
-
-        @Nullable
-        @Override
-        protected DefaultAppInfo getCurrentDefaultAppInfo() {
-            return mDefaultAppInfo;
-        }
-
-        protected void setCurrentDefaultAppInfo(DefaultAppInfo defaultAppInfo) {
-            mDefaultAppInfo = defaultAppInfo;
-        }
-    }
-
-    private Context mContext;
-    private CarUiPreference mPreference;
-    private PreferenceControllerTestHelper<TestDefaultAppEntryBasePreferenceController>
-            mControllerHelper;
-    private TestDefaultAppEntryBasePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new CarUiPreference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TestDefaultAppEntryBasePreferenceController.class,
-                mPreference);
-        mController = mControllerHelper.getController();
-    }
-
-    @Test
-    public void refreshUi_hasDefaultAppWithLabel_summaryAndIconAreSet() {
-        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
-        when(defaultAppInfo.loadLabel()).thenReturn(TEST_LABEL);
-        when(defaultAppInfo.loadIcon()).thenReturn(mContext.getDrawable(R.drawable.test_icon));
-        mController.setCurrentDefaultAppInfo(defaultAppInfo);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(TEST_LABEL);
-        assertThat(mPreference.getIcon()).isNotNull();
-    }
-
-    @Test
-    public void refreshUi_hasDefaultAppWithoutLabel_summaryAndIconAreNotSet() {
-        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
-        when(defaultAppInfo.loadLabel()).thenReturn(null);
-        when(defaultAppInfo.loadIcon()).thenReturn(null);
-        mController.setCurrentDefaultAppInfo(defaultAppInfo);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.app_list_preference_none));
-        assertThat(mPreference.getIcon()).isNull();
-    }
-
-    @Test
-    public void refreshUi_hasNoDefaultApp_summaryAndIconAreNotSet() {
-        mController.setCurrentDefaultAppInfo(null);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.app_list_preference_none));
-        assertThat(mPreference.getIcon()).isNull();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
deleted file mode 100644
index 3897a50..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.defaultapps;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-
-import com.android.car.settings.R;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class DefaultAppUtilsTest {
-
-    @Test
-    public void setSafeIcon_smallerThanLimit() {
-        Context context = RuntimeEnvironment.application;
-        Drawable drawable = context.getDrawable(R.drawable.test_icon);
-        int height = drawable.getMinimumHeight();
-        int width = drawable.getMinimumWidth();
-
-        // Set to some value larger than current height or width;
-        int testMaxDimensions = Math.max(height, width) + 1;
-        Drawable icon = DefaultAppUtils.getSafeIcon(drawable, testMaxDimensions);
-
-        assertThat(icon.getMinimumHeight()).isEqualTo(height);
-        assertThat(icon.getMinimumWidth()).isEqualTo(width);
-    }
-
-    @Test
-    public void setSafeIcon_largerThanLimit() {
-        Context context = RuntimeEnvironment.application;
-        Drawable drawable = context.getDrawable(R.drawable.test_icon);
-        int height = drawable.getMinimumHeight();
-        int width = drawable.getMinimumWidth();
-
-        // Set to some value smaller than current height or width;
-        int testMaxDimensions = Math.min(height, width) - 1;
-        Drawable icon = DefaultAppUtils.getSafeIcon(drawable, testMaxDimensions);
-
-        assertThat(icon.getMinimumHeight()).isEqualTo(testMaxDimensions);
-        assertThat(icon.getMinimumWidth()).isEqualTo(testMaxDimensions);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
deleted file mode 100644
index cd57170..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.defaultapps;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.ui.preference.CarUiRadioButtonPreference;
-import com.android.settingslib.applications.DefaultAppInfo;
-
-import com.google.android.collect.Lists;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class DefaultAppsPickerBasePreferenceControllerTest {
-
-    private static class TestDefaultAppsPickerBasePreferenceController extends
-            DefaultAppsPickerBasePreferenceController {
-
-        private List<DefaultAppInfo> mCandidates;
-        private String mKey;
-        private CharSequence mMessage;
-        private boolean mIncludeNone = true;
-
-        TestDefaultAppsPickerBasePreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        public void setTestCandidates(List<DefaultAppInfo> candidates) {
-            mCandidates = candidates;
-        }
-
-        public void setTestMessage(String s) {
-            mMessage = s;
-        }
-
-        public void setIncludeNonePreference(boolean include) {
-            mIncludeNone = include;
-        }
-
-        @Override
-        protected List<DefaultAppInfo> getCandidates() {
-            return mCandidates;
-        }
-
-        @Override
-        protected String getCurrentDefaultKey() {
-            return mKey;
-        }
-
-        @Override
-        protected void setCurrentDefault(String key) {
-            mKey = key;
-        }
-
-        @Override
-        protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
-            return mMessage;
-        }
-
-        @Override
-        protected boolean includeNonePreference() {
-            return mIncludeNone;
-        }
-    }
-
-    private Context mContext;
-    private PreferenceGroup mPreferenceGroup;
-    private PreferenceControllerTestHelper<TestDefaultAppsPickerBasePreferenceController>
-            mControllerHelper;
-    private TestDefaultAppsPickerBasePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TestDefaultAppsPickerBasePreferenceController.class, mPreferenceGroup);
-        mController = mControllerHelper.getController();
-    }
-
-    @Test
-    public void refreshUi_noCandidates_hasSingleNoneElement() {
-        mController.setCurrentDefault("");
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        // Has the "None" element.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getTitle()).isEqualTo(
-                mContext.getString(R.string.app_list_preference_none));
-        assertThat(preference.getIcon()).isNotNull();
-    }
-
-    @Test
-    public void refreshUi_noCandidates_noNoneElement() {
-        mController.setCurrentDefault("");
-        mController.setIncludeNonePreference(false);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        // None element removed.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_hasAdditionalCandidate_hasTwoElements() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-    }
-
-    @Test
-    public void refreshUi_hasAdditionalCandidateAsDefault_secondElementIsSelected() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-        mController.setCurrentDefault(testKey);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        CarUiRadioButtonPreference preference = mPreferenceGroup.findPreference(testKey);
-        assertThat(preference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void performClick_currentDefaultApp_nothingHappened() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-        mController.setCurrentDefault(testKey);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
-        CarUiRadioButtonPreference otherOption =
-                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(currentDefault.isChecked()).isTrue();
-        assertThat(otherOption.isChecked()).isFalse();
-
-        currentDefault.performClick();
-
-        currentDefault = mPreferenceGroup.findPreference(testKey);
-        otherOption = (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(currentDefault.isChecked()).isTrue();
-        assertThat(otherOption.isChecked()).isFalse();
-    }
-
-    @Test
-    public void performClick_otherOptionNoMessage_otherOptionSelected() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-        mController.setCurrentDefault(testKey);
-        mController.setTestMessage(null);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
-        CarUiRadioButtonPreference otherOption =
-                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(currentDefault.isChecked()).isTrue();
-        assertThat(otherOption.isChecked()).isFalse();
-
-        otherOption.performClick();
-
-        currentDefault = mPreferenceGroup.findPreference(testKey);
-        otherOption = (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(currentDefault.isChecked()).isFalse();
-        assertThat(otherOption.isChecked()).isTrue();
-    }
-
-    @Test
-    public void performClick_otherOptionHasMessage_dialogOpened() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-        mController.setCurrentDefault(testKey);
-        mController.setTestMessage("Non-empty message");
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
-        CarUiRadioButtonPreference otherOption =
-                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(currentDefault.isChecked()).isTrue();
-        assertThat(otherOption.isChecked()).isFalse();
-
-        otherOption.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                eq(ConfirmationDialogFragment.TAG));
-    }
-
-    @Test
-    public void performClick_otherOptionNoMessage_newKeySet() {
-        String testKey = "testKey";
-
-        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
-        when(testApp.getKey()).thenReturn(testKey);
-        mController.setTestCandidates(Lists.newArrayList(testApp));
-
-        // Currently, the testApp is the default selection.
-        mController.setCurrentDefault(testKey);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mController.refreshUi();
-
-        // This preference represents the "None" option.
-        CarUiRadioButtonPreference otherOption =
-                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
-        assertThat(mController.getCurrentDefaultKey()).isEqualTo(testKey);
-
-        otherOption.performClick();
-        assertThat(mController.getCurrentDefaultKey()).isEqualTo("");
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
deleted file mode 100644
index 2021d26..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.managedomainurls;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.ResolveInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowApplicationPackageManager;
-import com.android.settingslib.applications.ApplicationsState;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.Arrays;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowApplicationPackageManager.class})
-public class DomainUrlsPreferenceControllerTest {
-
-    private static final String TEST_PACKAGE_NAME = "com.example.test";
-    private static final int TEST_PACKAGE_ID = 1;
-    private static final String TEST_PATH = "TEST_PATH";
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<DomainUrlsPreferenceController> mControllerHelper;
-    private DomainUrlsPreferenceController mController;
-    private ApplicationsState.AppEntry mAppEntry;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                DomainUrlsPreferenceController.class);
-        mController = mControllerHelper.getController();
-
-        ApplicationInfo info = new ApplicationInfo();
-        info.packageName = TEST_PACKAGE_NAME;
-        info.uid = TEST_PACKAGE_ID;
-        info.sourceDir = TEST_PATH;
-        mAppEntry = new ApplicationsState.AppEntry(mContext, info, TEST_PACKAGE_ID);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowApplicationPackageManager.reset();
-    }
-
-    @Test
-    public void refreshUi_isBrowserApp_isDisabled() {
-        setupIsBrowserApp(true);
-
-        mController.setAppEntry(mAppEntry);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_isNotBrowserApp_isEnabled() {
-        setupIsBrowserApp(false);
-
-        mController.setAppEntry(mAppEntry);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_isBrowserApp_summarySet() {
-        setupIsBrowserApp(true);
-
-        mController.setAppEntry(mAppEntry);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isNotNull();
-    }
-
-    @Test
-    public void refreshUi_isNotBrowserApp_summarySet() {
-        setupIsBrowserApp(false);
-
-        mController.setAppEntry(mAppEntry);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isNotNull();
-    }
-
-    @Test
-    public void performClick_isNotBrowserApp_opensDialog() {
-        setupIsBrowserApp(false);
-
-        mController.setAppEntry(mAppEntry);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        mPreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
-    }
-
-    private void setupIsBrowserApp(boolean isBrowserApp) {
-        ResolveInfo resolveInfo = new ResolveInfo();
-        resolveInfo.activityInfo = new ActivityInfo();
-        resolveInfo.handleAllWebDataURI = isBrowserApp;
-        AppLaunchSettingsBasePreferenceController.sBrowserIntent.setPackage(TEST_PACKAGE_NAME);
-        getShadowPackageManager().addResolveInfoForIntent(
-                AppLaunchSettingsBasePreferenceController.sBrowserIntent,
-                Arrays.asList(resolveInfo));
-    }
-
-    private ShadowApplicationPackageManager getShadowPackageManager() {
-        return Shadow.extract(mContext.getPackageManager());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
deleted file mode 100644
index 9358aff..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit test for {@link BluetoothAddressPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothAddressPreferenceControllerTest {
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-    }
-
-    @Test
-    public void refreshUi_setsAddress() {
-        Context context = RuntimeEnvironment.application;
-
-        // Make sure controller is available.
-        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ true);
-        BluetoothAdapter.getDefaultAdapter().enable();
-        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
-        String address = "address";
-        getShadowBluetoothAdapter().setAddress(address);
-
-        // Construct controller.
-        Preference preference = new Preference(context);
-        PreferenceControllerTestHelper<BluetoothAddressPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(context,
-                        BluetoothAddressPreferenceController.class,
-                        preference);
-        controllerHelper.markState(Lifecycle.State.CREATED);
-
-        controllerHelper.getController().refreshUi();
-
-        assertThat(preference.getTitle()).isEqualTo(
-                context.getString(R.string.bluetooth_vehicle_mac_address, address));
-    }
-
-    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
-        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
deleted file mode 100644
index 25d58ba..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
-import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowUserManager;
-import org.robolectric.util.ReflectionHelpers;
-
-import java.util.Arrays;
-
-/** Unit test for {@link BluetoothBondedDevicesPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothBondedDevicesPreferenceControllerTest {
-
-    @Mock
-    private CachedBluetoothDevice mBondedCachedDevice;
-    @Mock
-    private BluetoothDevice mBondedDevice;
-    @Mock
-    private CachedBluetoothDeviceManager mCachedDeviceManager;
-    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private PreferenceGroup mPreferenceGroup;
-    private PreferenceControllerTestHelper<BluetoothBondedDevicesPreferenceController>
-            mControllerHelper;
-    private BluetoothBondedDevicesPreferenceController mController;
-    private Context mContext;
-    private UserHandle mMyUserHandle;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mMyUserHandle = UserHandle.of(UserHandle.myUserId());
-
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
-                null);
-        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mCachedDeviceManager);
-
-        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
-        when(mBondedCachedDevice.getDevice()).thenReturn(mBondedDevice);
-        BluetoothDevice unbondedDevice = mock(BluetoothDevice.class);
-        when(unbondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
-        CachedBluetoothDevice unbondedCachedDevice = mock(CachedBluetoothDevice.class);
-        when(unbondedCachedDevice.getDevice()).thenReturn(unbondedDevice);
-
-        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
-                Arrays.asList(mBondedCachedDevice, unbondedCachedDevice));
-
-        // Make sure controller is available.
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ true);
-        BluetoothAdapter.getDefaultAdapter().enable();
-        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
-
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                BluetoothBondedDevicesPreferenceController.class, mPreferenceGroup);
-        mController = mControllerHelper.getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mSaveRealCachedDeviceManager);
-    }
-
-    @Test
-    public void showsOnlyBondedDevices() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-        assertThat(devicePreference.getCachedDevice()).isEqualTo(mBondedCachedDevice);
-    }
-
-    @Test
-    public void onDeviceBondStateChanged_refreshesUi() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-
-        // Unbond the only bonded device.
-        when(mBondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
-        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
-        mController.onDeviceBondStateChanged(mBondedCachedDevice, BluetoothDevice.BOND_NONE);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void onDeviceClicked_notConnected_connectsToDevice() {
-        when(mBondedCachedDevice.isConnected()).thenReturn(false);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        devicePreference.performClick();
-
-        verify(mBondedCachedDevice).connect(/* connectAllProfiles= */ true);
-    }
-
-    @Test
-    public void onDeviceClicked_connected_showsDisconnectConfirmDialog() {
-        when(mBondedCachedDevice.isConnected()).thenReturn(true);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        devicePreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(BluetoothDisconnectConfirmDialogFragment.class), isNull());
-    }
-
-    @Test
-    public void devicePreferenceButtonClicked_noUserRestrictions_launchesDetailsFragment() {
-        getShadowUserManager().setUserRestriction(mMyUserHandle, DISALLOW_CONFIG_BLUETOOTH, false);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(devicePreference.isSecondaryActionVisible()).isTrue();
-        devicePreference.performSecondaryActionClick();
-
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(
-                any(BluetoothDeviceDetailsFragment.class));
-    }
-
-    @Test
-    public void devicePreferenceButton_disallowConfigBluetooth_actionStaysHidden() {
-        getShadowUserManager().setUserRestriction(mMyUserHandle, DISALLOW_CONFIG_BLUETOOTH, true);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        assertThat(devicePreference.isSecondaryActionVisible()).isFalse();
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_hasRestrictions_buttonHidden() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        CarUxRestrictions restrictions = new CarUxRestrictions.Builder(
-                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
-        mController.onUxRestrictionsChanged(restrictions);
-
-        assertThat(devicePreference.isSecondaryActionVisible()).isFalse();
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_restrictionToggled_buttonShown() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        BluetoothDevicePreference devicePreference =
-                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
-
-        CarUxRestrictions restrictions = new CarUxRestrictions.Builder(
-                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
-        mController.onUxRestrictionsChanged(restrictions);
-
-        CarUxRestrictions noRestrictions = new CarUxRestrictions.Builder(
-                true, CarUxRestrictions.UX_RESTRICTIONS_BASELINE, 0).build();
-        mController.onUxRestrictionsChanged(noRestrictions);
-
-        assertThat(devicePreference.isSecondaryActionVisible()).isTrue();
-    }
-
-    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
-        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
deleted file mode 100644
index c6029e5..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-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.app.Activity;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.util.ReflectionHelpers;
-
-/** Unit test for {@link BluetoothDeviceDetailsFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothDeviceDetailsFragmentTest {
-
-    @Mock
-    private CachedBluetoothDevice mCachedDevice;
-    @Mock
-    private CachedBluetoothDeviceManager mCachedDeviceManager;
-    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private Context mContext;
-    private FragmentController<BluetoothDeviceDetailsFragment> mFragmentController;
-    private BluetoothDeviceDetailsFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
-                null);
-        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mCachedDeviceManager);
-
-        String address = "00:11:22:33:AA:BB";
-        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address);
-        when(mCachedDeviceManager.findDevice(device)).thenReturn(mCachedDevice);
-        when(mCachedDevice.getAddress()).thenReturn(address);
-
-        mFragment = BluetoothDeviceDetailsFragment.newInstance(mCachedDevice);
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mSaveRealCachedDeviceManager);
-    }
-
-    @Test
-    public void forgetButtonClicked_unpairsDevice() {
-        mFragmentController.setup();
-
-        findForgetButton(mFragment.requireActivity()).performClick();
-
-        verify(mCachedDevice).unpair();
-    }
-
-    @Test
-    public void forgetButtonClicked_goesBack() {
-        mFragmentController.setup();
-
-        findForgetButton(mFragment.requireActivity()).performClick();
-
-        assertThat(
-                ((BaseTestActivity) mFragment.requireActivity()).getOnBackPressedFlag()).isTrue();
-    }
-
-    @Test
-    public void connectionButtonClicked_deviceConnected_disconnectsDevice() {
-        when(mCachedDevice.isConnected()).thenReturn(true);
-        mFragmentController.setup();
-
-        findConnectionButton(mFragment.requireActivity()).performClick();
-
-        verify(mCachedDevice).disconnect();
-    }
-
-    @Test
-    public void connectionButtonClicked_deviceNotConnected_connectsDevice() {
-        when(mCachedDevice.isConnected()).thenReturn(false);
-        mFragmentController.setup();
-
-        findConnectionButton(mFragment.requireActivity()).performClick();
-
-        verify(mCachedDevice).connect(/* connectAllProfiles= */ true);
-    }
-
-    @Test
-    public void deviceConnected_connectionButtonShowsDisconnect() {
-        when(mCachedDevice.isConnected()).thenReturn(true);
-        mFragmentController.setup();
-
-        assertThat(findConnectionButton(mFragment.requireActivity()).getTitle()).isEqualTo(
-                mContext.getString(R.string.disconnect));
-    }
-
-    @Test
-    public void deviceNotConnected_connectionButtonShowsConnect() {
-        when(mCachedDevice.isConnected()).thenReturn(false);
-        mFragmentController.setup();
-
-        assertThat(findConnectionButton(mFragment.requireActivity()).getTitle()).isEqualTo(
-                mContext.getString(R.string.connect));
-    }
-
-    @Test
-    public void deviceBusy_connectionButtonDisabled() {
-        when(mCachedDevice.isBusy()).thenReturn(true);
-        mFragmentController.setup();
-
-        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void deviceNotBusy_connectionButtonEnabled() {
-        when(mCachedDevice.isBusy()).thenReturn(false);
-        mFragmentController.setup();
-
-        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void onStart_listensForDeviceAttributesChanges() {
-        mFragmentController.create().start();
-
-        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
-    }
-
-    @Test
-    public void onStop_stopsListeningForDeviceAttributeChanges() {
-        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
-                CachedBluetoothDevice.Callback.class);
-        mFragmentController.create().start();
-        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
-
-        mFragmentController.stop();
-
-        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
-    }
-
-    @Test
-    public void deviceAttributesChanged_updatesConnectionButtonState() {
-        when(mCachedDevice.isBusy()).thenReturn(true);
-        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
-                CachedBluetoothDevice.Callback.class);
-        mFragmentController.create().start();
-        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isFalse();
-        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
-
-        when(mCachedDevice.isBusy()).thenReturn(false);
-        callbackCaptor.getValue().onDeviceAttributesChanged();
-
-        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isTrue();
-    }
-
-    private MenuItem findForgetButton(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        return toolbar.getMenuItems().get(1);
-    }
-
-    private MenuItem findConnectionButton(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        return toolbar.getMenuItems().get(0);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
deleted file mode 100644
index 29ad8f7..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothClass;
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.util.ReflectionHelpers;
-
-import java.util.StringJoiner;
-
-/** Unit test for {@link BluetoothDeviceNamePreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothDeviceNamePreferenceControllerTest {
-
-    @Mock
-    private CachedBluetoothDevice mDevice;
-    @Mock
-    private CachedBluetoothDeviceManager mCachedDeviceManager;
-    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<BluetoothDeviceNamePreferenceController>
-            mControllerHelper;
-    private BluetoothDeviceNamePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
-                null);
-        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mCachedDeviceManager);
-
-        // Make sure controller is available.
-        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ true);
-        BluetoothAdapter.getDefaultAdapter().enable();
-        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
-
-        mPreference = new Preference(context);
-        mControllerHelper = new PreferenceControllerTestHelper<>(context,
-                BluetoothDeviceNamePreferenceController.class);
-        mController = mControllerHelper.getController();
-        mController.setCachedDevice(mDevice);
-        mControllerHelper.setPreference(mPreference);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mSaveRealCachedDeviceManager);
-    }
-
-    @Test
-    public void refreshUi_setsDeviceNameAsTitle() {
-        String name = "name";
-        when(mDevice.getName()).thenReturn(name);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getTitle()).isEqualTo(name);
-    }
-
-    @Test
-    public void refreshUi_setsCarConnectionSummaryAsSummary() {
-        String summary = "summary";
-        when(mDevice.getCarConnectionSummary()).thenReturn(summary);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(summary);
-    }
-
-    @Test
-    public void refreshUi_setsIcon() {
-        when(mDevice.getBtClass()).thenReturn(
-                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
-
-        mController.refreshUi();
-
-        assertThat(mPreference.getIcon()).isNotNull();
-    }
-
-    @Test
-    public void refreshUi_hearingAidDevice_setsBatteryStatusesAsSummary() {
-        String summary = "summary";
-        when(mDevice.getCarConnectionSummary()).thenReturn(summary);
-        String otherSummary = "other summary";
-        when(mCachedDeviceManager.getSubDeviceSummary(mDevice)).thenReturn("other summary");
-
-        mController.refreshUi();
-
-        String expected = new StringJoiner(System.lineSeparator()).add(summary).add(
-                otherSummary).toString();
-        assertThat(mPreference.getSummary()).isEqualTo(expected);
-    }
-
-    @Test
-    public void preferenceClicked_launchesRenameDialog() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        mPreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(RemoteRenameDialogFragment.class), eq(RemoteRenameDialogFragment.TAG));
-    }
-
-    @Test
-    public void preferenceClicked_handled() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        assertThat(
-                mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference)).isTrue();
-    }
-
-    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
-        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
deleted file mode 100644
index 3997d36..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-/** Unit test for {@link BluetoothDevicePickerFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothDevicePickerFragmentTest {
-
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private FragmentController<BluetoothDevicePickerFragment> mFragmentController;
-    private BluetoothDevicePickerFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
-                null);
-
-        mFragment = new BluetoothDevicePickerFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-    }
-
-    @Test
-    public void onStart_setsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
-                mFragment.requireActivity());
-    }
-
-    @Test
-    public void onStart_showsProgressBar() {
-        mFragmentController.setup();
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-
-        assertThat(toolbar.getProgressBar().isVisible()).isTrue();
-    }
-
-    @Test
-    public void onStop_clearsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start().resume().pause().stop();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
-    }
-
-    @Test
-    public void onStop_hidesProgressBar() {
-        mFragmentController.setup().onPause();
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        toolbar.getProgressBar().setVisible(true);
-
-        mFragmentController.stop();
-
-        assertThat(toolbar.getProgressBar().isVisible()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java
index 66e4f57..7290e1e 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java
@@ -19,7 +19,7 @@
 import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -103,7 +103,7 @@
                 UserHandle.of(UserHandle.myUserId()), DISALLOW_CONFIG_BLUETOOTH, true);
 
         assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                DISABLED_FOR_USER);
+                DISABLED_FOR_PROFILE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
deleted file mode 100644
index 1df16a6..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothClass;
-import android.content.Context;
-import android.os.SystemProperties;
-
-import androidx.preference.Preference;
-
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-/** Unit test for {@link BluetoothDevicePreference}. */
-@RunWith(RobolectricTestRunner.class)
-public class BluetoothDevicePreferenceTest {
-
-    @Mock
-    private CachedBluetoothDevice mCachedDevice;
-    private Context mContext;
-    private BluetoothDevicePreference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
-    }
-
-    @Test
-    public void actionIsHiddenByDefault() {
-        assertThat(mPreference.isSecondaryActionVisible()).isFalse();
-    }
-
-    @Test
-    public void onAttached_registersDeviceCallback() {
-        mPreference.onAttached();
-
-        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
-    }
-
-    @Test
-    public void onAttached_setsDeviceNameAsTitle() {
-        String name = "name";
-        when(mCachedDevice.getName()).thenReturn(name);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.getTitle()).isEqualTo(name);
-    }
-
-    @Test
-    public void onAttached_setsCarConnectionSummaryAsSummary() {
-        String summary = "summary";
-        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.getSummary()).isEqualTo(summary);
-    }
-
-    @Test
-    public void onAttached_setsIcon() {
-        when(mCachedDevice.getBtClass()).thenReturn(
-                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.getIcon()).isNotNull();
-    }
-
-    @Test
-    public void onAttached_deviceNotBusy_setsEnabled() {
-        when(mCachedDevice.isBusy()).thenReturn(false);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void onAttached_deviceBusy_setsNotEnabled() {
-        when(mCachedDevice.isBusy()).thenReturn(true);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void onAttached_deviceNameNotHumanReadable_setsHidden() {
-        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void onAttached_deviceNameNotHumanReadable_showWithoutNamesTrue_setsShown() {
-        SystemProperties.set("persist.bluetooth.showdeviceswithoutnames", Boolean.TRUE.toString());
-        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
-        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
-
-        mPreference.onAttached();
-
-        assertThat(mPreference.isVisible()).isTrue();
-    }
-
-    @Test
-    public void onDetached_unregistersDeviceCallback() {
-        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
-                CachedBluetoothDevice.Callback.class);
-        mPreference.onAttached();
-        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
-
-        mPreference.onDetached();
-
-        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
-    }
-
-    @Test
-    public void onDeviceAttributesChanged_refreshesUi() {
-        String name = "name";
-        when(mCachedDevice.getName()).thenReturn(name);
-        String summary = "summary";
-        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
-        when(mCachedDevice.isBusy()).thenReturn(false);
-        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
-                CachedBluetoothDevice.Callback.class);
-        mPreference.onAttached();
-        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
-
-        assertThat(mPreference.getTitle()).isEqualTo(name);
-        assertThat(mPreference.getSummary()).isEqualTo(summary);
-        assertThat(mPreference.isEnabled()).isTrue();
-
-        String updatedName = "updatedName";
-        when(mCachedDevice.getName()).thenReturn(updatedName);
-        String updatedSummary = "updatedSummary";
-        when(mCachedDevice.getCarConnectionSummary()).thenReturn(updatedSummary);
-        when(mCachedDevice.isBusy()).thenReturn(true);
-
-        callbackCaptor.getValue().onDeviceAttributesChanged();
-
-        assertThat(mPreference.getTitle()).isEqualTo(updatedName);
-        assertThat(mPreference.getSummary()).isEqualTo(updatedSummary);
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void equals_devicesEqual_returnsTrue() {
-        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
-                mCachedDevice);
-
-        assertThat(mPreference.equals(otherPreference)).isTrue();
-    }
-
-    @Test
-    public void equals_devicesNotEqual_returnsFalse() {
-        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
-                mock(CachedBluetoothDevice.class));
-
-        assertThat(mPreference.equals(otherPreference)).isFalse();
-    }
-
-    @Test
-    public void compareTo_sameType_usesDeviceCompareTo() {
-        CachedBluetoothDevice otherDevice = mock(CachedBluetoothDevice.class);
-        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
-                otherDevice);
-        when(mCachedDevice.compareTo(otherDevice)).thenReturn(1);
-        when(otherDevice.compareTo(mCachedDevice)).thenReturn(-1);
-
-        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(1);
-        assertThat(otherPreference.compareTo(mPreference)).isEqualTo(-1);
-    }
-
-    @Test
-    public void compareTo_differentType_fallsBackToDefaultCompare() {
-        mPreference.setOrder(1);
-        Preference otherPreference = new Preference(mContext);
-        otherPreference.setOrder(2);
-
-        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(-1);
-        verify(mCachedDevice, never()).compareTo(any());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java
deleted file mode 100644
index a0fc315..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.AlertDialog;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.content.DialogInterface;
-
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowDialog;
-import org.robolectric.util.ReflectionHelpers;
-
-/** Unit test for {@link BluetoothDisconnectConfirmDialogFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothDisconnectConfirmDialogFragmentTest {
-
-    @Mock
-    private CachedBluetoothDevice mCachedDevice;
-    @Mock
-    private CachedBluetoothDeviceManager mCachedDeviceManager;
-    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private BluetoothDisconnectConfirmDialogFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(
-                RuntimeEnvironment.application, /* onInitCallback= */ null);
-        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mCachedDeviceManager);
-
-        String address = "00:11:22:33:AA:BB";
-        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address);
-        when(mCachedDeviceManager.findDevice(device)).thenReturn(mCachedDevice);
-        when(mCachedDevice.getAddress()).thenReturn(address);
-        when(mCachedDevice.isConnected()).thenReturn(true);
-
-        mFragment = BluetoothDisconnectConfirmDialogFragment.newInstance(mCachedDevice);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
-                mSaveRealCachedDeviceManager);
-    }
-
-    @Test
-    public void confirmDisconnect_disconnectsFromDevice() {
-        AlertDialog dialog = showDialog(mFragment);
-
-        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
-
-        verify(mCachedDevice).disconnect();
-    }
-
-    @Test
-    public void deviceNoLongerConnected_dismiss() {
-        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
-                CachedBluetoothDevice.Callback.class);
-        AlertDialog dialog = showDialog(mFragment);
-        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
-
-        when(mCachedDevice.isConnected()).thenReturn(false);
-        callbackCaptor.getValue().onDeviceAttributesChanged();
-
-        assertThat(dialog.isShowing()).isFalse();
-    }
-
-    private AlertDialog showDialog(BluetoothDisconnectConfirmDialogFragment fragment) {
-        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
-        fragment.show(activity.getSupportFragmentManager(), /* tag= */ null);
-        return (AlertDialog) ShadowDialog.getLatestDialog();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java
index ec00913..0148d47 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java
@@ -20,7 +20,7 @@
 import static android.os.UserManager.DISALLOW_BLUETOOTH;
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -70,7 +70,7 @@
                 FEATURE_BLUETOOTH, /* supported= */ true);
         getShadowUserManager().setUserRestriction(mMyUserHandle, DISALLOW_BLUETOOTH, true);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
deleted file mode 100644
index bab965f..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothEventManager;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.util.ReflectionHelpers;
-
-/** Unit test for {@link BluetoothPairingSelectionFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothPairingSelectionFragmentTest {
-
-    @Mock
-    private BluetoothEventManager mEventManager;
-    private BluetoothEventManager mSaveRealEventManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private FragmentController<BluetoothPairingSelectionFragment> mFragmentController;
-    private BluetoothPairingSelectionFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
-                null);
-        mSaveRealEventManager = mLocalBluetoothManager.getEventManager();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mEventManager);
-
-        mFragment = new BluetoothPairingSelectionFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mSaveRealEventManager);
-    }
-
-    @Test
-    public void onStart_setsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
-                mFragment.requireActivity());
-    }
-
-    @Test
-    public void onStart_registersEventListener() {
-        mFragmentController.create().start();
-
-        verify(mEventManager).registerCallback(any(BluetoothCallback.class));
-    }
-
-    @Test
-    public void onStart_showsProgressBar() {
-        mFragmentController.setup();
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-
-        assertThat(toolbar.getProgressBar().isVisible()).isTrue();
-    }
-
-    @Test
-    public void onStop_clearsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start().resume().pause().stop();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
-    }
-
-    @Test
-    public void onStop_unregistersEventListener() {
-        ArgumentCaptor<BluetoothCallback> callbackCaptor = ArgumentCaptor.forClass(
-                BluetoothCallback.class);
-        mFragmentController.create().start().resume().pause().stop();
-
-        verify(mEventManager).registerCallback(callbackCaptor.capture());
-        verify(mEventManager).unregisterCallback(callbackCaptor.getValue());
-    }
-
-    @Test
-    public void onStop_hidesProgressBar() {
-        mFragmentController.setup().onPause();
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        toolbar.getProgressBar().setVisible(true);
-
-        mFragmentController.stop();
-
-        assertThat(toolbar.getProgressBar().isVisible()).isFalse();
-    }
-
-    @Test
-    public void onDeviceBondStateChanged_deviceBonded_goesBack() {
-        ArgumentCaptor<BluetoothCallback> callbackCaptor = ArgumentCaptor.forClass(
-                BluetoothCallback.class);
-        mFragmentController.setup();
-        verify(mEventManager).registerCallback(callbackCaptor.capture());
-
-        callbackCaptor.getValue().onDeviceBondStateChanged(mock(CachedBluetoothDevice.class),
-                BluetoothDevice.BOND_BONDED);
-
-        assertThat(
-                ((BaseTestActivity) mFragment.requireActivity()).getOnBackPressedFlag()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java
index c4e2d80..86f17fc 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java
@@ -21,7 +21,7 @@
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
 import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -104,7 +104,7 @@
         getShadowUserManager().setUserRestriction(
                 UserHandle.of(UserHandle.myUserId()), DISALLOW_BLUETOOTH, true);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java
deleted file mode 100644
index d998769..0000000
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.bluetooth;
-
-import static android.bluetooth.BluetoothAdapter.STATE_OFF;
-import static android.bluetooth.BluetoothAdapter.STATE_ON;
-import static android.bluetooth.BluetoothAdapter.STATE_TURNING_OFF;
-import static android.bluetooth.BluetoothAdapter.STATE_TURNING_ON;
-import static android.os.UserManager.DISALLOW_BLUETOOTH;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Activity;
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowUserManager;
-
-/** Unit test for {@link BluetoothSettingsFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothSettingsFragmentTest {
-
-    private Context mContext;
-    private LocalBluetoothManager mLocalBluetoothManager;
-    private FragmentController<BluetoothSettingsFragment> mFragmentController;
-    private BluetoothSettingsFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = ApplicationProvider.getApplicationContext();
-        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
-                null);
-        mFragment = new BluetoothSettingsFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-    }
-
-    @Test
-    public void onStart_setsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
-                mFragment.requireActivity());
-    }
-
-    @Test
-    public void onStart_initializesSwitchState() {
-        getShadowBluetoothAdapter().setState(STATE_ON);
-
-        mFragmentController.create().start();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
-    }
-
-    @Test
-    public void onStop_clearsBluetoothManagerForegroundActivity() {
-        mFragmentController.create().start().resume().pause().stop();
-
-        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
-    }
-
-    @Test
-    public void switchCheckedOn_enablesAdapter() {
-        mFragmentController.setup();
-        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isFalse();
-
-        findSwitch(mFragment.requireActivity()).performClick();
-
-        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
-    }
-
-    @Test
-    public void switchCheckedOff_disablesAdapter() {
-        getShadowBluetoothAdapter().setState(STATE_ON);
-        BluetoothAdapter.getDefaultAdapter().enable();
-        mFragmentController.setup();
-        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
-
-        findSwitch(mFragment.requireActivity()).performClick();
-
-        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_turningOn_setsSwitchChecked() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_TURNING_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
-    }
-
-    @Test
-    public void stateChanged_turningOn_setsSwitchDisabled() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_TURNING_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_on_setsSwitchChecked() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
-    }
-
-    @Test
-    public void stateChanged_on_setsSwitchEnabled() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void stateChanged_on_userRestricted_setsSwitchDisabled() {
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()), DISALLOW_BLUETOOTH, true);
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_turningOff_setsSwitchUnchecked() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_TURNING_OFF);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_turningOff_setsSwitchDisabled() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_TURNING_OFF);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_off_setsSwitchUnchecked() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_OFF);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_off_setsSwitchEnabled() {
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_OFF);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void stateChanged_off_userRestricted_setsSwitchDisabled() {
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()), DISALLOW_BLUETOOTH, true);
-        mFragmentController.setup();
-
-        sendStateChangedIntent(STATE_OFF);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void stateChanged_fragmentStopped_doesNothing() {
-        mFragmentController.setup();
-        mFragmentController.stop();
-
-        sendStateChangedIntent(STATE_TURNING_ON);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    private void sendStateChangedIntent(int state) {
-        Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED);
-        intent.putExtra(BluetoothAdapter.EXTRA_STATE, state);
-        mContext.sendBroadcast(intent);
-        Robolectric.flushForegroundThreadScheduler();
-    }
-
-    private MenuItem findSwitch(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        return toolbar.getMenuItems().get(0);
-    }
-
-    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
-        return Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
index 32cce97..8b1339c 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
@@ -19,7 +19,7 @@
 import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -92,7 +92,7 @@
         Context context = spy(RuntimeEnvironment.application);
         Resources resources = spy(context.getResources());
         when(context.getResources()).thenReturn(resources);
-        when(resources.getIntArray(R.array.config_unbonded_device_filter_whitelist))
+        when(resources.getIntArray(R.array.config_unbonded_device_filter_allowlist))
                 .thenReturn(mUnbondedDeviceFilter);
 
         mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
@@ -204,7 +204,7 @@
                 UserHandle.of(UserHandle.myUserId()), DISALLOW_CONFIG_BLUETOOTH, true);
 
         assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                DISABLED_FOR_USER);
+                DISABLED_FOR_PROFILE);
     }
 
     private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java
index a3d5e4a..c2396f0 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java
@@ -21,7 +21,7 @@
 import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -121,7 +121,7 @@
         getShadowUserManager().setUserRestriction(
                 UserHandle.of(UserHandle.myUserId()), DISALLOW_BLUETOOTH, true);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
     }
 
     @Test
@@ -131,7 +131,7 @@
         getShadowUserManager().setUserRestriction(
                 UserHandle.of(UserHandle.myUserId()), DISALLOW_CONFIG_BLUETOOTH, true);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java b/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java
deleted file mode 100644
index 9771164..0000000
--- a/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.common;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertThrows;
-
-import android.car.Car;
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.drivingstate.CarUxRestrictionsManager;
-import android.content.Context;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.ShadowCar;
-
-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.RuntimeEnvironment;
-import org.robolectric.android.controller.ActivityController;
-
-/** Unit test for {@link BaseCarSettingsActivity}. */
-@RunWith(RobolectricTestRunner.class)
-public class BaseCarSettingsActivityTest {
-
-    private static final String TEST_TAG = "test_tag";
-
-    private Context mContext;
-    private ActivityController<TestBaseCarSettingsActivity> mActivityController;
-    private TestBaseCarSettingsActivity mActivity;
-
-    @Mock
-    private CarUxRestrictionsManager mMockCarUxRestrictionsManager;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* time= */ 0).build();
-        when(mMockCarUxRestrictionsManager.getCurrentCarUxRestrictions())
-                .thenReturn(noSetupRestrictions);
-        ShadowCar.setCarManager(Car.CAR_UX_RESTRICTION_SERVICE, mMockCarUxRestrictionsManager);
-        mContext = RuntimeEnvironment.application;
-        mActivityController = ActivityController.of(new TestBaseCarSettingsActivity());
-        mActivity = mActivityController.get();
-        mActivityController.setup();
-    }
-
-    @Test
-    public void onPreferenceStartFragment_launchesFragment() {
-        Preference pref = new Preference(mContext);
-        pref.setFragment(TestFragment.class.getName());
-
-        mActivity.onPreferenceStartFragment(/* caller= */ null, pref);
-
-        assertThat(mActivity.getSupportFragmentManager().findFragmentById(
-                R.id.fragment_container)).isInstanceOf(TestFragment.class);
-    }
-
-    @Test
-    public void launchFragment_dialogFragment_throwsError() {
-        DialogFragment dialogFragment = new DialogFragment();
-
-        assertThrows(IllegalArgumentException.class,
-                () -> mActivity.launchFragment(dialogFragment));
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_topFragmentInBackStackHasUpdatedUxRestrictions() {
-        TestFragment fragmentA = new TestFragment();
-        TestFragment fragmentB = new TestFragment();
-
-        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
-                /* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
-                /* timestamp= */ 0
-        ).build();
-
-        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
-                /* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
-                /* timestamp= */ 0
-        ).build();
-
-        mActivity.launchFragment(fragmentA);
-        mActivity.onUxRestrictionsChanged(oldUxRestrictions);
-        mActivity.launchFragment(fragmentB);
-        mActivity.onUxRestrictionsChanged(newUxRestrictions);
-
-        assertThat(fragmentB.getUxRestrictions().toString())
-                .isEqualTo(newUxRestrictions.toString());
-    }
-
-    @Test
-    public void onBackStackChanged_uxRestrictionsChanged_currentFragmentHasUpdatedUxRestrictions() {
-        TestFragment fragmentA = new TestFragment();
-        TestFragment fragmentB = new TestFragment();
-
-        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
-                /* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
-                /* timestamp= */ 0
-        ).build();
-
-        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
-                /* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
-                /* timestamp= */ 0
-        ).build();
-
-        mActivity.launchFragment(fragmentA);
-        mActivity.onUxRestrictionsChanged(oldUxRestrictions);
-        mActivity.launchFragment(fragmentB);
-        mActivity.onUxRestrictionsChanged(newUxRestrictions);
-        mActivity.goBack();
-
-        assertThat(fragmentA.getUxRestrictions().toString())
-                .isEqualTo(newUxRestrictions.toString());
-    }
-
-    /** Simple instance of {@link BaseCarSettingsActivity}. */
-    private static class TestBaseCarSettingsActivity extends BaseCarSettingsActivity {
-
-        @Nullable
-        @Override
-        protected Fragment getInitialFragment() {
-            return new TestFragment();
-        }
-    }
-
-    /** Simple Fragment for testing use. */
-    public static class TestFragment extends Fragment implements
-            CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
-        private CarUxRestrictions mCarUxRestrictions;
-
-        @Override
-        public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
-            mCarUxRestrictions = restrictionInfo;
-        }
-
-        public CarUxRestrictions getUxRestrictions() {
-            return mCarUxRestrictions;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
deleted file mode 100644
index 06ec55b..0000000
--- a/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.common;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.view.View;
-
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.DialogTestUtils;
-import com.android.car.settings.testutils.FragmentController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowDialog;
-
-@RunWith(RobolectricTestRunner.class)
-public class ConfirmationDialogFragmentTest {
-
-    private static final String TEST_ARG_KEY = "arg_key";
-    private static final String TEST_ARG_VALUE = "arg_value";
-    private static final String TEST_TITLE = "Test Title";
-    private static final String TEST_MESSAGE = "Test Message";
-
-    private ConfirmationDialogFragment.Builder mDialogFragmentBuilder;
-    private Fragment mFragment;
-    @Mock
-    private ConfirmationDialogFragment.ConfirmListener mConfirmListener;
-    @Mock
-    private ConfirmationDialogFragment.RejectListener mRejectListener;
-    @Mock
-    private ConfirmationDialogFragment.DismissListener mDismissListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mFragment = FragmentController.of(new Fragment()).setup();
-        mDialogFragmentBuilder = new ConfirmationDialogFragment.Builder(
-                RuntimeEnvironment.application);
-        mDialogFragmentBuilder.setTitle(TEST_TITLE);
-        mDialogFragmentBuilder.setMessage(TEST_MESSAGE);
-        mDialogFragmentBuilder.addArgumentString(TEST_ARG_KEY, TEST_ARG_VALUE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowDialog.reset();
-    }
-
-    @Test
-    public void buildDialogFragment_hasTitleAndMessage() {
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        // TODO(b/148687802): Figure out why title returns empty string.
-        // assertThat(DialogTestUtils.getTitle(dialogFragment)).isEqualTo(TEST_TITLE);
-        assertThat(DialogTestUtils.getMessage(dialogFragment)).isEqualTo(TEST_MESSAGE);
-    }
-
-    @Test
-    public void buildDialogFragment_positiveButtonSet_negativeAndNeutralButtonNotVisible() {
-        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label, null);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
-                View.VISIBLE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
-                View.GONE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
-                View.GONE);
-    }
-
-    @Test
-    public void buildDialogFragment_negativeButtonSet_positiveAndNeutralButtonNotVisible() {
-        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label, null);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
-                View.GONE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
-                View.VISIBLE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
-                View.GONE);
-    }
-
-    @Test
-    public void buildDialogFragment_neutralButtonSet_positiveAndNegativeButtonNotVisible() {
-        mDialogFragmentBuilder.setNeutralButton(R.string.test_neutral_button_label, null);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
-                View.GONE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
-                View.GONE);
-        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
-                View.VISIBLE);
-    }
-
-    @Test
-    public void clickPositiveButton_callsCallbackWithArgs() {
-        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label,
-                mConfirmListener);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
-        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
-        verify(mConfirmListener).onConfirm(bundle.capture());
-        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
-    }
-
-    @Test
-    public void clickNegativeButton_callsCallbackWithArgs() {
-        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label,
-                mRejectListener);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
-        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
-        verify(mRejectListener).onReject(bundle.capture());
-        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
-    }
-
-    @Test
-    public void dismissDialog_callsCallbackWithArgs() {
-        mDialogFragmentBuilder.setDismissListener(mDismissListener);
-        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
-        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
-
-        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
-        dialog.dismiss();
-        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
-        verify(mDismissListener).onDismiss(bundle.capture());
-        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
index d912632..6382835 100644
--- a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
@@ -17,16 +17,11 @@
 package com.android.car.settings.common;
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
-import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
 import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 import static org.testng.Assert.assertThrows;
 
@@ -56,10 +51,6 @@
 @RunWith(RobolectricTestRunner.class)
 public class PreferenceControllerTest {
 
-    private static final CarUxRestrictions LIMIT_STRINGS_UX_RESTRICTIONS =
-            new CarUxRestrictions.Builder(/* reqOpt= */ true,
-                    CarUxRestrictions.UX_RESTRICTIONS_LIMIT_STRING_LENGTH, /* timestamp= */
-                    0).build();
     private static final CarUxRestrictions NO_SETUP_UX_RESTRICTIONS =
             new CarUxRestrictions.Builder(/* reqOpt= */ true,
                     CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, /* timestamp= */ 0).build();
@@ -137,23 +128,6 @@
     }
 
     @Test
-    public void onUxRestrictionsChanged_created_available_updatesState() {
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-
-        mController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
-
-        // onCreate, onUxRestrictionsChanged.
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_notCreated_available_doesNotUpdateState() {
-        mController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
-
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
-    }
-
-    @Test
     public void onUxRestrictionsChanged_created_restricted_preferenceDisabled() {
         mControllerHelper.markState(Lifecycle.State.CREATED);
 
@@ -238,69 +212,6 @@
     }
 
     @Test
-    public void refreshUi_notCreated_doesNothing() {
-        mController.refreshUi();
-
-        verify(mPreference, never()).setVisible(anyBoolean());
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_created_available_preferenceShownAndEnabled() {
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        reset(mPreference);
-
-        mController.refreshUi();
-
-        verify(mPreference).setVisible(true);
-        verify(mPreference).setEnabled(true);
-    }
-
-    @Test
-    public void refreshUi_created_availableForViewing_preferenceShownAndDisabled() {
-        mController.setAvailabilityStatus(AVAILABLE_FOR_VIEWING);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        reset(mPreference);
-
-        mController.refreshUi();
-
-        verify(mPreference).setVisible(true);
-        verify(mPreference).setEnabled(false);
-    }
-
-    @Test
-    public void refreshUi_created_notAvailable_preferenceHidden() {
-        mController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        reset(mPreference);
-
-        mController.refreshUi();
-
-        verify(mPreference).setVisible(false);
-    }
-
-    @Test
-    public void refreshUi_created_available_updatesState() {
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-
-        mController.refreshUi();
-
-        // onCreate, refreshUi.
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
-        assertThat(mController.getUpdateStateArg()).isEqualTo(mPreference);
-    }
-
-    @Test
-    public void refreshUi_created_notAvailable_doesNotUpdateState() {
-        mController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-
-        mController.refreshUi();
-
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
-    }
-
-    @Test
     public void lifecycle_unsupportedOnDevice_doesNotCallSubclassHooks() {
         mController.setAvailabilityStatus(UNSUPPORTED_ON_DEVICE);
         mControllerHelper.markState(Lifecycle.State.STARTED);
@@ -330,13 +241,6 @@
     }
 
     @Test
-    public void onCreate_available_updatesState() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(1);
-    }
-
-    @Test
     public void onStart_callsSubclassHook() {
         mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
 
@@ -344,14 +248,6 @@
     }
 
     @Test
-    public void onStart_available_updatesState() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        // onCreate, onStart.
-        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
-    }
-
-    @Test
     public void onResume_callsSubclassHook() {
         mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
 
diff --git a/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java
deleted file mode 100644
index b04a211..0000000
--- a/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Copyright 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.
- */
-
-package com.android.car.settings.common;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.testng.Assert.assertThrows;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentSender;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.DummyFragment;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.Toolbar;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowToast;
-
-/** Unit test for {@link SettingsFragment}. */
-@RunWith(RobolectricTestRunner.class)
-public class SettingsFragmentTest {
-
-    private static final String TEST_TAG = "test_tag";
-
-    private Context mContext;
-    private FragmentController<TestSettingsFragment> mFragmentController;
-    private SettingsFragment mFragment;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mFragmentController = FragmentController.of(new TestSettingsFragment());
-        mFragment = mFragmentController.get();
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @Test
-    public void use_returnsController() {
-        mFragmentController.setup();
-        assertThat(mFragment.use(FakePreferenceController.class,
-                R.string.tpk_fake_controller)).isNotNull();
-    }
-
-    @Test
-    public void onAttach_registersLifecycleObservers() {
-        mFragmentController.create();
-        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
-                R.string.tpk_fake_controller);
-        assertThat(controller.getOnCreateInternalCallCount()).isEqualTo(1);
-        mFragmentController.destroy();
-        assertThat(controller.getOnDestroyInternalCallCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_propagatesToControllers() {
-        mFragmentController.setup();
-        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
-                R.string.tpk_fake_controller);
-        CarUxRestrictions uxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_NO_KEYBOARD, /* timestamp= */ 0).build();
-        mFragment.onUxRestrictionsChanged(uxRestrictions);
-        assertThat(controller.getUxRestrictions()).isEqualTo(uxRestrictions);
-    }
-
-    @Test
-    public void onUxRestrictedPreferenceTapped_showToast() {
-        mFragmentController.setup();
-        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
-                R.string.tpk_fake_controller);
-        CarUxRestrictions uxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, /* timestamp= */ 0).build();
-        mFragment.onUxRestrictionsChanged(uxRestrictions);
-        controller.getPreference().performClick();
-        assertThat(ShadowToast.showedToast(
-                mContext.getString(R.string.restricted_while_driving))).isTrue();
-    }
-
-    @Test
-    public void onDisplayPreferenceDialog_unknownPreferenceType_throwsIllegalArgumentException() {
-        mFragmentController.setup();
-
-        assertThrows(IllegalArgumentException.class,
-                () -> mFragment.onDisplayPreferenceDialog(new Preference(mContext)));
-    }
-
-    @Test
-    public void launchFragment_otherFragment_opensFragment() {
-        mFragmentController.setup();
-        TestSettingsFragment otherFragment = new TestSettingsFragment();
-        mFragment.launchFragment(otherFragment);
-        assertThat(
-                mFragment.getFragmentManager().findFragmentById(R.id.fragment_container)).isEqualTo(
-                otherFragment);
-    }
-
-    @Test
-    public void launchFragment_dialogFragment_throwsError() {
-        mFragmentController.setup();
-        DialogFragment dialogFragment = new DialogFragment();
-        assertThrows(IllegalArgumentException.class,
-                () -> mFragment.launchFragment(dialogFragment));
-    }
-
-    @Test
-    public void showDialog_noTag_launchesDialogFragment() {
-        mFragmentController.setup();
-        DialogFragment dialogFragment = mock(DialogFragment.class);
-        mFragment.showDialog(dialogFragment, /* tag= */ null);
-        verify(dialogFragment).show(mFragment.getFragmentManager(), null);
-    }
-
-    @Test
-    public void showDialog_withTag_launchesDialogFragment() {
-        mFragmentController.setup();
-        DialogFragment dialogFragment = mock(DialogFragment.class);
-        mFragment.showDialog(dialogFragment, TEST_TAG);
-        verify(dialogFragment).show(mFragment.getFragmentManager(), TEST_TAG);
-    }
-
-    @Test
-    public void findDialogByTag_retrieveOriginalDialog_returnsDialog() {
-        mFragmentController.setup();
-        DialogFragment dialogFragment = new DialogFragment();
-        mFragment.showDialog(dialogFragment, TEST_TAG);
-        assertThat(mFragment.findDialogByTag(TEST_TAG)).isEqualTo(dialogFragment);
-    }
-
-    @Test
-    public void findDialogByTag_notDialogFragment_returnsNull() {
-        mFragmentController.setup();
-        TestSettingsFragment fragment = new TestSettingsFragment();
-        mFragment.getFragmentManager().beginTransaction().add(fragment, TEST_TAG).commit();
-        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
-    }
-
-    @Test
-    public void findDialogByTag_noSuchFragment_returnsNull() {
-        mFragmentController.setup();
-        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
-    }
-
-    @Test
-    public void startActivityForResult_largeRequestCode_throwsError() {
-        mFragmentController.setup();
-        assertThrows(() -> mFragment.startActivityForResult(new Intent(), 0xffff,
-                mock(ActivityResultCallback.class)));
-    }
-
-    @Test
-    public void startActivityForResult_tooManyRequests_throwsError() {
-        mFragmentController.setup();
-        assertThrows(() -> {
-            for (int i = 0; i < 0xff; i++) {
-                mFragment.startActivityForResult(new Intent(), i,
-                        mock(ActivityResultCallback.class));
-            }
-        });
-    }
-
-    @Test
-    public void startIntentSenderForResult_largeRequestCode_throwsError() {
-        mFragmentController.setup();
-        assertThrows(
-                () -> mFragment.startIntentSenderForResult(
-                        mock(IntentSender.class), /* requestCode= */ 0xffff,
-                        /* fillInIntent= */ null, /* flagsMask= */ 0,
-                        /* flagsValues= */ 0, /* options= */ null,
-                        mock(ActivityResultCallback.class)));
-    }
-
-    @Test
-    public void startIntentSenderForResult_tooManyRequests_throwsError() {
-        mFragmentController.setup();
-        assertThrows(() -> {
-            for (int i = 0; i < 0xff; i++) {
-                mFragment.startIntentSenderForResult(
-                        mock(IntentSender.class), /* requestCode= */ 0xffff,
-                        /* fillInIntent= */ null, /* flagsMask= */ 0,
-                        /* flagsValues= */ 0, /* options= */ null,
-                        mock(ActivityResultCallback.class));
-            }
-        });
-    }
-
-    @Test
-    public void onActivityResult_hasValidRequestCode_triggersOnActivityResult() {
-        mFragmentController.setup();
-        ActivityResultCallback callback = mock(ActivityResultCallback.class);
-
-        int reqCode = 100;
-        int resCode = -1;
-        mFragment.startActivityForResult(new Intent(), reqCode, callback);
-        int fragmentReqCode = (1 << 8) + reqCode;
-        mFragment.onActivityResult(fragmentReqCode, resCode, new Intent());
-        verify(callback).processActivityResult(eq(reqCode), eq(resCode), any(Intent.class));
-    }
-
-    @Test
-    public void onActivityResult_wrongRequestCode_doesntTriggerOnActivityResult() {
-        mFragmentController.setup();
-        ActivityResultCallback callback = mock(ActivityResultCallback.class);
-
-        int reqCode = 100;
-        int resCode = -1;
-        mFragment.startActivityForResult(new Intent(), reqCode,
-                callback);
-        int fragmentReqCode = (2 << 8) + reqCode;
-        mFragment.onActivityResult(fragmentReqCode, resCode, new Intent());
-        verify(callback, never()).processActivityResult(anyInt(), anyInt(),
-                any(Intent.class));
-    }
-
-    @Test
-    public void onActivityCreated_hasAppIconIfRoot() {
-        mFragmentController.setup();
-        DummyFragment otherFragment = new DummyFragment();
-        mFragment.launchFragment(otherFragment);
-
-        ToolbarController toolbar = requireToolbar(otherFragment.requireActivity());
-
-        assertThat(toolbar.getState()).isEquivalentAccordingToCompareTo(Toolbar.State.HOME);
-    }
-
-    @Test
-    public void onActivityCreated_hasBackArrowIconIfNotRoot() {
-        mFragmentController.setup();
-
-        TestSettingsFragment otherFragment = new TestSettingsFragment();
-        mFragment.launchFragment(otherFragment);
-
-        ToolbarController toolbar = requireToolbar(otherFragment.requireActivity());
-
-        assertThat(toolbar.getState()).isEquivalentAccordingToCompareTo(Toolbar.State.SUBPAGE);
-        assertThat(toolbar.getNavButtonMode()).isEquivalentAccordingToCompareTo(
-                Toolbar.NavButtonMode.BACK);
-    }
-
-    /** Concrete {@link SettingsFragment} for testing. */
-    public static class TestSettingsFragment extends SettingsFragment {
-        @Override
-        protected int getPreferenceScreenResId() {
-            return R.xml.settings_fragment;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java b/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
deleted file mode 100644
index 90e4186..0000000
--- a/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.datausage;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.net.INetworkStatsService;
-import android.net.NetworkPolicy;
-import android.net.NetworkPolicyManager;
-import android.os.Bundle;
-import android.text.format.DateUtils;
-import android.util.Pair;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowINetworkStatsServiceStub;
-import com.android.car.settings.testutils.ShadowNetworkPolicyEditor;
-import com.android.car.settings.testutils.ShadowNetworkPolicyManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
-import java.time.ZonedDateTime;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/** Unit test for {@link AppDataUsageFragment}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowNetworkPolicyEditor.class, ShadowNetworkPolicyManager.class,
-        ShadowINetworkStatsServiceStub.class})
-public class AppDataUsageFragmentTest {
-
-    private static final String KEY_START = "start";
-    private static final String KEY_END = "end";
-
-    private AppDataUsageFragment mFragment;
-    private FragmentController<AppDataUsageFragment> mFragmentController;
-
-    @Mock
-    private NetworkPolicy mNetworkPolicy;
-
-    @Mock
-    private NetworkPolicyManager mNetworkPolicyManager;
-
-    @Mock
-    private INetworkStatsService mINetworkStatsService;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mFragment = new AppDataUsageFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        ShadowNetworkPolicyManager.setNetworkPolicyManager(mNetworkPolicyManager);
-        ShadowINetworkStatsServiceStub.setINetworkStatsSession(mINetworkStatsService);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowNetworkPolicyEditor.reset();
-        ShadowINetworkStatsServiceStub.reset();
-        ShadowNetworkPolicyManager.reset();
-    }
-
-    @Test
-    public void onActivityCreated_policyIsNull_startAndEndDateShouldHaveFourWeeksDifference() {
-        mFragmentController.create();
-
-        Bundle bundle = mFragment.getBundle();
-        long start = bundle.getLong(KEY_START);
-        long end = bundle.getLong(KEY_END);
-        long timeDiff = end - start;
-
-        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
-    }
-
-    @Test
-    public void onActivityCreated_iteratorIsEmpty_startAndEndDateShouldHaveFourWeeksDifference() {
-        ShadowNetworkPolicyEditor.setNetworkPolicy(mNetworkPolicy);
-
-        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
-        Iterator iterator = list.iterator();
-        ShadowNetworkPolicyManager.setCycleIterator(iterator);
-        mFragmentController.create();
-
-        Bundle bundle = mFragment.getBundle();
-        long start = bundle.getLong(KEY_START);
-        long end = bundle.getLong(KEY_END);
-        long timeDiff = end - start;
-
-        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
-    }
-
-    @Test
-    public void onActivityCreated_iteratorIsNotEmpty_startAndEndDateShouldBeLastOneInIterator() {
-        ShadowNetworkPolicyEditor.setNetworkPolicy(mNetworkPolicy);
-
-        ZonedDateTime start1 = ZonedDateTime.now();
-        ZonedDateTime end1 = ZonedDateTime.now();
-        ZonedDateTime start2 = ZonedDateTime.now();
-        ZonedDateTime end2 = ZonedDateTime.now();
-
-        Pair pair1 = new Pair(start1, end1);
-        Pair pair2 = new Pair(start2, end2);
-
-        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
-        list.add(pair1);
-        list.add(pair2);
-
-        Iterator iterator = list.iterator();
-        ShadowNetworkPolicyManager.setCycleIterator(iterator);
-        mFragmentController.create();
-
-        Bundle bundle = mFragment.getBundle();
-        long start = bundle.getLong(KEY_START);
-        long end = bundle.getLong(KEY_END);
-
-        assertThat(start).isEqualTo(start2.toInstant().toEpochMilli());
-        assertThat(end).isEqualTo(end2.toInstant().toEpochMilli());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
deleted file mode 100644
index 070c0cb..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,93 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class AutoDatetimeTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private SwitchPreference mPreference;
-    private PreferenceControllerTestHelper<AutoDatetimeTogglePreferenceController>
-            mPreferenceControllerHelper;
-    private AutoDatetimeTogglePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                AutoDatetimeTogglePreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_unchecked() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_checked() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
-        mPreference.setChecked(true);
-        mPreference.callChangeListener(true);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-    }
-
-    @Test
-    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
-        mPreference.setChecked(false);
-        mPreference.callChangeListener(false);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
deleted file mode 100644
index fa06e67..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,93 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class AutoTimeZoneTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private SwitchPreference mPreference;
-    private PreferenceControllerTestHelper<AutoTimeZoneTogglePreferenceController>
-            mPreferenceControllerHelper;
-    private AutoTimeZoneTogglePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                AutoTimeZoneTogglePreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_unchecked() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_checked() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
-        mPreference.setChecked(true);
-        mController.handlePreferenceChanged(mPreference, true);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-    }
-
-    @Test
-    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
-        mPreference.setChecked(false);
-        mController.handlePreferenceChanged(mPreference, false);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
deleted file mode 100644
index 54f6368..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
+++ /dev/null
@@ -1,85 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class DatePickerPreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<DatePickerPreferenceController>
-            mPreferenceControllerHelper;
-    private DatePickerPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                DatePickerPreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_disabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_enabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_disabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_enabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
deleted file mode 100644
index 36f6d28..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,100 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-import androidx.preference.TwoStatePreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class TimeFormatTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private TwoStatePreference mPreference;
-    private PreferenceControllerTestHelper<TimeFormatTogglePreferenceController>
-            mPreferenceControllerHelper;
-    private TimeFormatTogglePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TimeFormatTogglePreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_24HourSet_shouldCheckPreference() {
-        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
-                TimeFormatTogglePreferenceController.HOURS_24);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testRefreshUi_12HourSet_shouldUncheckPreference() {
-        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
-                TimeFormatTogglePreferenceController.HOURS_12);
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void testOnPreferenceChange_24HourSet_shouldSendIntent() {
-        mPreference.setChecked(true);
-        mPreference.callChangeListener(true);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
-                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR);
-    }
-
-    @Test
-    public void testOnPreferenceChange_12HourSet_shouldSendIntent() {
-        mPreference.setChecked(false);
-        mPreference.callChangeListener(false);
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
-                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimePickerFragmentTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimePickerFragmentTest.java
deleted file mode 100644
index 98efc70..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/TimePickerFragmentTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Activity;
-import android.widget.TimePicker;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.shadows.ShadowSettings;
-
-/** Unit test for {@link TimePickerFragment}. */
-@RunWith(RobolectricTestRunner.class)
-public class TimePickerFragmentTest {
-
-    private TimePickerFragment mFragment;
-    private FragmentController<TimePickerFragment> mFragmentController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mFragment = new TimePickerFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @Test
-    public void onActivityCreated_isNot24HourFormat_timePickerShouldShow12HourTimeFormat() {
-        ShadowSettings.set24HourTimeFormat(false);
-        mFragmentController.create().start();
-        TimePicker timePicker = findTimePicker(mFragment.requireActivity());
-
-        assertThat(timePicker.is24HourView()).isFalse();
-    }
-
-    @Test
-    public void onActivityCreated_is24HourFormat_timePickerShouldShow24HourTimeFormat() {
-        ShadowSettings.set24HourTimeFormat(true);
-        mFragmentController.create().start();
-        TimePicker timePicker = findTimePicker(mFragment.requireActivity());
-
-        assertThat(timePicker.is24HourView()).isTrue();
-    }
-
-    private TimePicker findTimePicker(Activity activity) {
-        return activity.findViewById(R.id.time_picker);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
deleted file mode 100644
index 5210f29..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
+++ /dev/null
@@ -1,85 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class TimePickerPreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<TimePickerPreferenceController>
-            mPreferenceControllerHelper;
-    private TimePickerPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TimePickerPreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_disabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_enabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_disabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_enabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
deleted file mode 100644
index 72f277b..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
+++ /dev/null
@@ -1,85 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class TimeZonePickerPreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<TimeZonePickerPreferenceController>
-            mPreferenceControllerHelper;
-    private TimeZonePickerPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TimeZonePickerPreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void testRefreshUi_disabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_enabled() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
-        mController.refreshUi();
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_disabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_fromBroadcastReceiver_enabled() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
deleted file mode 100644
index 5d8e2ee..0000000
--- a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
+++ /dev/null
@@ -1,164 +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.
- */
-
-package com.android.car.settings.datetime;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-
-import android.app.timezonedetector.ManualTimeZoneSuggestion;
-import android.app.timezonedetector.TimeZoneDetector;
-import android.content.Context;
-import android.content.Intent;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.datetime.ZoneGetter;
-
-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.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@RunWith(RobolectricTestRunner.class)
-public class TimeZonePickerScreenPreferenceControllerTest {
-
-    private PreferenceGroup mPreferenceGroup;
-    private PreferenceControllerTestHelper<TimeZonePickerScreenPreferenceController>
-            mPreferenceControllerHelper;
-    private TimeZonePickerScreenPreferenceController mController;
-    @Mock
-    private TimeZoneDetector mTimeZoneDetector;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(context);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
-                TimeZonePickerScreenPreferenceController.class, mPreferenceGroup);
-        mController = mPreferenceControllerHelper.getController();
-
-        // Test setup.
-        mController.mTimeZoneDetector = mTimeZoneDetector;
-    }
-
-    @Test
-    public void testOnCreate_hasElements() {
-        List<Map<String, Object>> testTimeZones = new ArrayList<>();
-        testTimeZones.add(
-                createTimeZoneMap("testKey1", "Midway", "GMT-11:00", -1100));
-        testTimeZones.add(
-                createTimeZoneMap("testKey2", "Tijuana", "GMT-07:00", -700));
-        testTimeZones.add(
-                createTimeZoneMap("testKey3", "Coordinated Universal Time", "GMT+00:00", 0));
-        testTimeZones.add(
-                createTimeZoneMap("testKey4", "Kabul", "GMT+04:30", 430));
-        mController.setZonesList(testTimeZones);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
-    }
-
-    @Test
-    public void testOnPreferenceClick_setTimeZoneCalled() {
-        List<Map<String, Object>> testTimeZone = new ArrayList<>();
-        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
-        mController.setZonesList(testTimeZone);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        Preference preference = mPreferenceGroup.findPreference("testKey");
-        preference.performClick();
-        ManualTimeZoneSuggestion suggestion =
-                TimeZoneDetector.createManualTimeZoneSuggestion("testKey", "Test debug info");
-        verify(mTimeZoneDetector).suggestManualTimeZone(suggestion);
-    }
-
-    @Test
-    public void testOnPreferenceClick_fragmentControllerGoBack() {
-        List<Map<String, Object>> testTimeZone = new ArrayList<>();
-        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
-        mController.setZonesList(testTimeZone);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        Preference preference = mPreferenceGroup.findPreference("testKey");
-        preference.performClick();
-        verify(mPreferenceControllerHelper.getMockFragmentController()).goBack();
-    }
-
-    @Test
-    public void testOnPreferenceClick_broadcastFired() {
-        List<Map<String, Object>> testTimeZone = new ArrayList<>();
-        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
-        mController.setZonesList(testTimeZone);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        Preference preference = mPreferenceGroup.findPreference("testKey");
-        preference.performClick();
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired.size()).isEqualTo(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
-    }
-
-    @Test
-    public void testTimeZonesComparator() {
-        List<Map<String, Object>> testTimeZones = new ArrayList<>();
-        testTimeZones.add(createTimeZoneMap("testKey1", "Oral",
-                "GMT+05:00", 500));
-        testTimeZones.add(createTimeZoneMap("testKey2", "Kathmandu",
-                "GMT+05:45", 545));
-        testTimeZones.add(createTimeZoneMap("testKey3", "Brazzaville",
-                "GMT+01:00", 100));
-        testTimeZones.add(createTimeZoneMap("testKey4", "Casablanca",
-                "GMT+01:00", 100));
-        testTimeZones.add(createTimeZoneMap("testKey5", "Nuuk",
-                "GMT-02:00", -200));
-        testTimeZones.add(createTimeZoneMap("testKey6", "St. John's",
-                "GMT-02:30", -230));
-        mController.setZonesList(testTimeZones);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-
-        List<String> computedOrder = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            computedOrder.add(mPreferenceGroup.getPreference(i).getTitle().toString());
-        }
-
-        assertThat(computedOrder).containsExactly("St. John's", "Nuuk", "Brazzaville", "Casablanca",
-                "Oral", "Kathmandu");
-    }
-
-    private Map<String, Object> createTimeZoneMap(String key, String timeZone, String offset,
-            int offsetValue) {
-        Map<String, Object> map = new HashMap<>();
-        map.put(ZoneGetter.KEY_ID, key);
-        map.put(ZoneGetter.KEY_DISPLAY_LABEL, timeZone);
-        map.put(ZoneGetter.KEY_OFFSET_LABEL, offset);
-        map.put(ZoneGetter.KEY_OFFSET, offsetValue);
-        return map;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java b/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
deleted file mode 100644
index b32cec6..0000000
--- a/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
+++ /dev/null
@@ -1,155 +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.
- */
-
-package com.android.car.settings.development;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowUserManager;
-
-@RunWith(RobolectricTestRunner.class)
-public class DevelopmentSettingsUtilTest {
-
-    private Context mContext;
-    private UserManager mUserManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mUserManager = UserManager.get(mContext);
-    }
-
-    @Test
-    public void isEnabled_settingsOff_isAdmin_shouldReturnFalse() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
-
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mUserManager))
-                .isFalse();
-    }
-
-    @Test
-    public void isEnabled_settingsOn_isAdmin_shouldReturnTrue() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mUserManager))
-                .isTrue();
-    }
-
-    @Test
-    public void isEnabled_settingsOn_notAdmin_shouldReturnFalse() {
-        setCurrentUserWithFlags(/* flags= */ 0);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mUserManager))
-                .isFalse();
-    }
-
-    @Test
-    public void isEnabled_hasDisallowDebuggingRestriction_shouldReturnFalse() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()),
-                UserManager.DISALLOW_DEBUGGING_FEATURES,
-                true);
-
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mUserManager))
-                .isFalse();
-    }
-
-    @Test
-    public void isEnabled_doesNotHaveDisallowDebuggingRestriction_shouldReturnTrue() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()),
-                UserManager.DISALLOW_DEBUGGING_FEATURES,
-                false);
-
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mUserManager))
-                .isTrue();
-    }
-
-    @Test
-    public void setDevelopmentSettingsEnabled_setTrue() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
-
-        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, true);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)).isEqualTo(1);
-    }
-
-    @Test
-    public void setDevelopmentSettingsEnabled_setFalse() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, false);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1)).isEqualTo(0);
-    }
-
-    @Test
-    public void isDeviceProvisioned_true() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                1);
-        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isTrue();
-    }
-
-    @Test
-    public void isDeviceProvisioned_false() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                0);
-        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isFalse();
-    }
-
-    private void setCurrentUserWithFlags(int flags) {
-        getShadowUserManager().addUser(UserHandle.myUserId(), "test name", flags);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
deleted file mode 100644
index 3c1d1c5..0000000
--- a/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,91 +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.
- */
-
-package com.android.car.settings.display;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-import androidx.preference.TwoStatePreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class AdaptiveBrightnessTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private AdaptiveBrightnessTogglePreferenceController mController;
-    private TwoStatePreference mTwoStatePreference;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mTwoStatePreference = new SwitchPreference(mContext);
-        PreferenceControllerTestHelper<AdaptiveBrightnessTogglePreferenceController>
-                preferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                AdaptiveBrightnessTogglePreferenceController.class, mTwoStatePreference);
-        mController = preferenceControllerHelper.getController();
-        preferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void testRefreshUi_manualMode_isNotChecked() {
-        Settings.System.putInt(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS_MODE,
-                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
-
-        mController.refreshUi();
-        assertThat(mTwoStatePreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_automaticMode_isChecked() {
-        Settings.System.putInt(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS_MODE,
-                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-
-        mController.refreshUi();
-        assertThat(mTwoStatePreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testHandlePreferenceChanged_setFalse() {
-        mTwoStatePreference.callChangeListener(false);
-        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS_MODE,
-                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
-    }
-
-    @Test
-    public void testHandlePreferenceChanged_setTrue() {
-        mTwoStatePreference.callChangeListener(true);
-        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS_MODE,
-                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
-        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
deleted file mode 100644
index 64c66cb..0000000
--- a/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ /dev/null
@@ -1,126 +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.
- */
-
-package com.android.car.settings.display;
-
-import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
-import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.UserHandle;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.common.SeekBarPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class BrightnessLevelPreferenceControllerTest {
-    private Context mContext;
-    private BrightnessLevelPreferenceController mController;
-    private SeekBarPreference mSeekBarPreference;
-    private int mMin;
-    private int mMax;
-    private int mMid;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        mMin = mContext.getResources().getInteger(
-                com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
-        mMax = mContext.getResources().getInteger(
-                com.android.internal.R.integer.config_screenBrightnessSettingMaximum);
-        mMid = (mMax + mMin) / 2;
-
-        mSeekBarPreference = new SeekBarPreference(mContext);
-        PreferenceControllerTestHelper<BrightnessLevelPreferenceController>
-                preferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                BrightnessLevelPreferenceController.class, mSeekBarPreference);
-        mController = preferenceControllerHelper.getController();
-        preferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void testRefreshUi_maxSet() {
-        mController.refreshUi();
-        assertThat(mSeekBarPreference.getMax()).isEqualTo(GAMMA_SPACE_MAX);
-    }
-
-    @Test
-    public void testRefreshUi_minValue() {
-        Settings.System.putIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, mMin, UserHandle.myUserId());
-
-        mController.refreshUi();
-        assertThat(mSeekBarPreference.getValue()).isEqualTo(0);
-    }
-
-    @Test
-    public void testRefreshUi_maxValue() {
-        Settings.System.putIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, mMax, UserHandle.myUserId());
-
-        mController.refreshUi();
-        assertThat(mSeekBarPreference.getValue()).isEqualTo(GAMMA_SPACE_MAX);
-    }
-
-    @Test
-    public void testRefreshUi_midValue() {
-        Settings.System.putIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, mMid, UserHandle.myUserId());
-
-        mController.refreshUi();
-        assertThat(mSeekBarPreference.getValue()).isEqualTo(
-                convertLinearToGamma(mMid,
-                        mMin, mMax));
-    }
-
-    @Test
-    public void testHandlePreferenceChanged_minValue() throws Settings.SettingNotFoundException {
-        mSeekBarPreference.callChangeListener(0);
-        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
-        assertThat(currentSettingsVal).isEqualTo(mMin);
-    }
-
-    @Test
-    public void testHandlePreferenceChanged_maxValue() throws Settings.SettingNotFoundException {
-        mSeekBarPreference.callChangeListener(GAMMA_SPACE_MAX);
-        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
-        assertThat(currentSettingsVal).isEqualTo(mMax);
-    }
-
-    @Test
-    public void testHandlePreferenceChanged_midValue() throws Settings.SettingNotFoundException {
-        mSeekBarPreference.callChangeListener(convertLinearToGamma(mMid, mMin, mMax));
-        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
-        assertThat(currentSettingsVal).isEqualTo(mMid);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
deleted file mode 100644
index ebfec1d..0000000
--- a/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.inputmethod;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ServiceInfo;
-import android.view.inputmethod.InputMethodInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.view.inputmethod.InputMethodSubtype;
-import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowDevicePolicyManager;
-import com.android.car.settings.testutils.ShadowInputMethodManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
-public class EnabledKeyboardPreferenceControllerTest {
-    private static final String DUMMY_LABEL = "dummy label";
-    private static final String DUMMY_ID = "dummy id";
-    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
-    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
-    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
-    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
-    private List<String> mPermittedList;
-    private PreferenceControllerTestHelper<EnabledKeyboardPreferenceController> mControllerHelper;
-    private PreferenceGroup mPreferenceGroup;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                EnabledKeyboardPreferenceController.class, mPreferenceGroup);
-
-        mPermittedList = new ArrayList<>();
-        mPermittedList.add(DUMMY_PACKAGE_NAME);
-        mPermittedList.add(ALLOWED_PACKAGE_NAME);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @After
-    public void tearDown() {
-        getShadowInputMethodManager(mContext).reset();
-        getShadowDevicePolicyManager(mContext).reset();
-    }
-
-    @Test
-    public void refreshUi_permitAllInputMethods() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(DUMMY_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void refreshUi_hasAllowedImeByOrganization() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void refreshUi_disallowedByOrganization() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_skipVoiceTyping() {
-        List<InputMethodInfo> infos =
-                createInputMethodInfoList(InputMethodUtil.GOOGLE_VOICE_TYPING);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceIcon() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getIcon()).isEqualTo(
-                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceTitle() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getTitle()).isEqualTo(
-                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceSummary() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        InputMethodManager inputMethodManager =
-                (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getSummary()).isEqualTo(
-                InputMethodUtil.getSummaryString(mContext, inputMethodManager, infos.get(0)));
-    }
-
-    @Test
-    public void performClick_launchSettingsActivity() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        preference.performClick();
-
-        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(intent).isNotNull();
-        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MAIN);
-        assertThat(intent.getComponent().getClassName()).isEqualTo(DUMMY_SETTINGS_ACTIVITY);
-        assertThat(intent.getComponent().getPackageName()).isEqualTo(DISALLOWED_PACKAGE_NAME);
-    }
-
-    @Test
-    public void performClick_missingSettingsActivity_noCrash() {
-        // Set to true if you'd like Robolectric to strictly simulate the real Android behavior when
-        // calling {@link Context#startActivity(android.content.Intent)}. Real Android throws a
-        // {@link android.content.ActivityNotFoundException} if given an {@link Intent} that is not
-        // known to the {@link android.content.pm.PackageManager.
-        // DUMMY_SETTINGS_ACTIVITY shouldn't exist, so it throws ActivityNotFoundException.
-        ShadowApplication.getInstance().checkActivities(true);
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        preference.performClick();
-
-        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(intent).isNull();
-    }
-
-    @Test
-    public void performClick_noSettingsActivity_noCrash() {
-        ShadowApplication.getInstance().checkActivities(true);
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(
-                DISALLOWED_PACKAGE_NAME, /* settingsActivity= */ null);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        preference.performClick();
-
-        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(intent).isNull();
-    }
-
-    private List<InputMethodInfo> createInputMethodInfoList(String packageName) {
-        return createInputMethodInfoList(packageName, DUMMY_SETTINGS_ACTIVITY);
-    }
-
-    private List<InputMethodInfo> createInputMethodInfoList(String packageName,
-            String settingsName) {
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createMockInputMethodInfoWithSubtypes(
-                packageManager, getShadowInputMethodManager(mContext), packageName, settingsName));
-        return infos;
-    }
-
-    private static InputMethodInfo createMockInputMethodInfoWithSubtypes(
-            PackageManager packageManager, ShadowInputMethodManager inputMethodManager,
-            String packageName, String settingsName) {
-        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName,
-                settingsName);
-        List<InputMethodSubtype> subtypes = createSubtypes();
-        inputMethodManager.setEnabledInputMethodSubtypeList(subtypes);
-
-        return mockInfo;
-    }
-
-    private static InputMethodInfo createMockInputMethodInfo(
-            PackageManager packageManager, String packageName, String settingsName) {
-        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
-        when(mockInfo.getPackageName()).thenReturn(packageName);
-        when(mockInfo.getId()).thenReturn(DUMMY_ID);
-        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
-        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
-        when(mockInfo.getSettingsActivity()).thenReturn(settingsName);
-        return mockInfo;
-    }
-
-    private static List<InputMethodSubtype> createSubtypes() {
-        List<InputMethodSubtype> subtypes = new ArrayList<>();
-        subtypes.add(createSubtype(1, "en_US"));
-        subtypes.add(createSubtype(2, "de_BE"));
-        subtypes.add(createSubtype(3, "oc-FR"));
-        return subtypes;
-    }
-
-    private static InputMethodSubtype createSubtype(int id, String locale) {
-        return new InputMethodSubtypeBuilder().setSubtypeId(id).setSubtypeLocale(locale)
-                .setIsAuxiliary(false).setIsAsciiCapable(true).build();
-    }
-
-    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
-    }
-
-    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
deleted file mode 100644
index 4221005..0000000
--- a/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.inputmethod;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.app.admin.DevicePolicyManager;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ServiceInfo;
-import android.graphics.drawable.Drawable;
-import android.provider.Settings;
-import android.view.inputmethod.InputMethodInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.view.inputmethod.InputMethodSubtype;
-import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
-
-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.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-@RunWith(RobolectricTestRunner.class)
-public class InputMethodUtilTest {
-    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
-    private static final String DUMMY_LABEL = "dummy label";
-    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
-    private static final String SUBTYPES_STRING =
-            "English (United States), German (Belgium), and Occitan (France)";
-    private static final String DUMMY_ENABLED_INPUT_METHODS =
-            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
-                    + ".VoiceInputMethodService:com.google.android.apps.automotive.inputmethod/"
-                    + ".InputMethodService";
-    private static final String DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT =
-            "com.google.android.apps.automotive.inputmethod/.InputMethodService";
-    private static final String DUMMY_ENABLED_INPUT_METHOD_ID =
-            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
-                    + ".VoiceInputMethodService";
-    private static final String DUMMY_DISABLED_INPUT_METHOD_ID = "disabled input method id";
-    private Context mContext;
-    private List<InputMethodInfo> mDummyEnabledInputMethodsListAllDefaultable;
-    private List<InputMethodInfo> mDummyEnabledInputMethodsListOneDefaultable;
-
-    @Mock
-    private PackageManager mPackageManager;
-    @Mock
-    private InputMethodManager mInputMethodManager;
-    @Mock
-    private DevicePolicyManager mDevicePolicyManager;
-    @Mock
-    private Drawable mIcon;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-
-        Settings.Secure.putString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS, DUMMY_ENABLED_INPUT_METHODS);
-        Settings.Secure.putString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD, DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-
-        mDummyEnabledInputMethodsListOneDefaultable = Arrays
-                .stream(DUMMY_ENABLED_INPUT_METHODS.split(
-                        String.valueOf(InputMethodUtil.INPUT_METHOD_DELIMITER)))
-                .collect(Collectors.toList())
-                .stream().map(
-                        result -> {
-                            InputMethodInfo info = createMockInputMethodInfo(
-                                    mPackageManager, DUMMY_PACKAGE_NAME);
-                            when(info.getId()).thenReturn(result);
-                            when(info.isDefault(mContext)).thenReturn(result.equals(
-                                    DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT));
-                            return info;
-                        })
-                .collect(Collectors.toList());
-        mDummyEnabledInputMethodsListAllDefaultable = Arrays
-                .stream(DUMMY_ENABLED_INPUT_METHODS.split(String.valueOf(InputMethodUtil
-                        .INPUT_METHOD_DELIMITER)))
-                .collect(Collectors.toList())
-                .stream().map(
-                        result -> {
-                            InputMethodInfo info = createMockInputMethodInfo(
-                                    mPackageManager, DUMMY_PACKAGE_NAME);
-                            when(info.getId()).thenReturn(result);
-                            when(info.isDefault(mContext)).thenReturn(true);
-                            return info;
-                        })
-                .collect(Collectors.toList());
-    }
-
-    @Test
-    public void getPermittedAndEnabledInputMethodList_noEnabledInputMethods_returnsNull() {
-        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(null);
-
-        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
-                mInputMethodManager, mDevicePolicyManager);
-
-        assertThat(results).isNull();
-    }
-
-    @Test
-    public void getPermittedAndEnabledInputMethodList_noPermittedMethods_returnsEmptyList() {
-        String secondDummyPackageName = "Different package";
-        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(
-                mPackageManager, mInputMethodManager, DUMMY_PACKAGE_NAME);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(Collections.singletonList(info));
-        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser())
-                .thenReturn(Collections.singletonList(secondDummyPackageName));
-
-        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
-                mInputMethodManager, mDevicePolicyManager);
-
-        assertThat(results).isNotNull();
-        assertThat(results).isEmpty();
-    }
-
-    @Test
-    public void getPermittedAndEnabledInputMethodList_withGoogleTypingIME_doesNotIncludeIME() {
-        InputMethodInfo dummyIME = createMockInputMethodInfoWithSubtypes(
-                mPackageManager, mInputMethodManager, DUMMY_PACKAGE_NAME);
-        InputMethodInfo googleVoiceTypingIME = createMockInputMethodInfoWithSubtypes(
-                mPackageManager, mInputMethodManager, InputMethodUtil.GOOGLE_VOICE_TYPING);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(Arrays.asList(dummyIME, googleVoiceTypingIME));
-        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
-
-        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
-                mInputMethodManager, mDevicePolicyManager);
-
-        assertThat(results).contains(dummyIME);
-        assertThat(results).doesNotContain(googleVoiceTypingIME);
-    }
-
-    @Test
-    public void getPackageIcon_hasApplicationIcon() throws NameNotFoundException {
-        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
-                mInputMethodManager, DUMMY_PACKAGE_NAME);
-        when(mPackageManager.getApplicationIcon(eq(info.getPackageName()))).thenReturn(mIcon);
-        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(mIcon);
-    }
-
-    @Test
-    public void getPackageIcon_noApplicationIcon() throws NameNotFoundException {
-        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
-                mInputMethodManager, DUMMY_PACKAGE_NAME);
-        when(mPackageManager.getApplicationIcon(DUMMY_PACKAGE_NAME)).thenThrow(
-                new NameNotFoundException());
-        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(
-                InputMethodUtil.NO_ICON);
-    }
-
-    @Test
-    public void getPackageLabel() {
-        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
-                mInputMethodManager, DUMMY_PACKAGE_NAME);
-        assertThat(InputMethodUtil.getPackageLabel(mPackageManager, info)).isEqualTo(
-                DUMMY_LABEL);
-    }
-
-    @Test
-    public void getSummaryString() {
-        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
-                mInputMethodManager, DUMMY_PACKAGE_NAME);
-        assertThat(InputMethodUtil.getSummaryString(mContext, mInputMethodManager, info)).isEqualTo(
-                SUBTYPES_STRING);
-    }
-
-    @Test
-    public void isInputMethodEnabled_isDisabled_returnsFalse() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
-
-        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
-                .isFalse();
-    }
-
-    @Test
-    public void isInputMethodEnabled_isEnabled_returnsTrue() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-
-        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
-                .isTrue();
-    }
-
-    @Test
-    public void enableInputMethod_alreadyEnabled_remainsUnchanged() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-
-        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
-
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(DUMMY_ENABLED_INPUT_METHODS);
-    }
-
-    @Test
-    public void enableInputMethod_noEnabledInputMethods_addsIME() {
-        Settings.Secure.putString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS, "");
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-
-        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
-
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-    }
-
-    @Test
-    public void enableInputMethod_someEnabledInputMethods_addsIME() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
-
-        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
-
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHODS + ":"
-                        + DUMMY_DISABLED_INPUT_METHOD_ID);
-    }
-
-    @Test
-    public void disableInputMethod_notEnabled_remainsUnchanged() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
-
-        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
-
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(DUMMY_ENABLED_INPUT_METHODS);
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-    }
-
-    @Test
-    public void disableInputMethod_notDefault_removesIMEWhileDefaultRemainsSame() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
-
-        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
-
-        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
-                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
-                splitConcatenatedIdsIntoSet(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT));
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-    }
-
-    @Test
-    public void disableInputMethod_twoDefaultableIMEsEnabled_removesIMEAndChangesDefault() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
-
-        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
-
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID);
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID);
-    }
-
-    @Test
-    public void disableInputMethod_isDefaultWithNoOtherDefaultableEnabled_remainsUnchanged() {
-        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
-        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-        when(mInputMethodManager.getEnabledInputMethodList())
-                .thenReturn(mDummyEnabledInputMethodsListOneDefaultable);
-
-        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
-
-        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
-                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
-                splitConcatenatedIdsIntoSet(DUMMY_ENABLED_INPUT_METHODS));
-        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
-                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
-    }
-
-    private static InputMethodInfo createMockInputMethodInfoWithSubtypes(
-            PackageManager packageManager, InputMethodManager inputMethodManager,
-            String packageName) {
-        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName);
-        List<InputMethodSubtype> subtypes = createSubtypes();
-        when(inputMethodManager.getEnabledInputMethodSubtypeList(
-                eq(mockInfo), anyBoolean())).thenReturn(subtypes);
-        return mockInfo;
-    }
-
-    private static InputMethodInfo createMockInputMethodInfo(
-            PackageManager packageManager, String packageName) {
-        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
-        when(mockInfo.getPackageName()).thenReturn(packageName);
-        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
-        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
-        when(mockInfo.getSettingsActivity()).thenReturn(DUMMY_SETTINGS_ACTIVITY);
-        return mockInfo;
-    }
-
-    private static List<InputMethodSubtype> createSubtypes() {
-        List<InputMethodSubtype> subtypes = new ArrayList<>();
-        subtypes.add(createSubtype(1, "en_US"));
-        subtypes.add(createSubtype(2, "de_BE"));
-        subtypes.add(createSubtype(3, "oc-FR"));
-        return subtypes;
-    }
-
-    private static InputMethodSubtype createSubtype(int id, String locale) {
-        return new InputMethodSubtypeBuilder().setSubtypeId(id).setSubtypeLocale(locale)
-                .setIsAuxiliary(false).setIsAsciiCapable(true).build();
-    }
-
-    private Set<String> splitConcatenatedIdsIntoSet(String ids) {
-        Set<String> result = new HashSet<>();
-
-        if (ids == null || ids.isEmpty()) {
-            return result;
-        }
-
-        InputMethodUtil.sInputMethodSplitter.setString(ids);
-        while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
-            result.add(InputMethodUtil.sInputMethodSplitter.next());
-        }
-
-        return result;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
deleted file mode 100644
index d9897bf..0000000
--- a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.inputmethod;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.pm.PackageManager;
-import android.content.pm.ServiceInfo;
-import android.view.inputmethod.InputMethodInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.view.inputmethod.InputMethodSubtype;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowDevicePolicyManager;
-import com.android.car.settings.testutils.ShadowInputMethodManager;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
-public class KeyboardManagementPreferenceControllerTest {
-    private static final String DUMMY_LABEL = "dummy label";
-    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
-    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
-    private static final String DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE =
-            "dummy id defaultable direct boot aware";
-    private static final String DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
-            "dummy id defaultable not direct boot aware";
-    private static final String DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE =
-            "dummy id not defaultable direct boot aware";
-    private static final String DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
-            "dummy id not defaultable not direct boot aware";
-    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
-    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
-    private List<String> mPermittedList;
-    private PreferenceControllerTestHelper<KeyboardManagementPreferenceController>
-            mControllerHelper;
-    private PreferenceGroup mPreferenceGroup;
-    private Context mContext;
-    private InputMethodManager mInputMethodManager;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                KeyboardManagementPreferenceController.class, mPreferenceGroup);
-        mInputMethodManager = (InputMethodManager) mContext.getSystemService(Context
-                .INPUT_METHOD_SERVICE);
-
-        mPermittedList = new ArrayList<>();
-        mPermittedList.add(DUMMY_PACKAGE_NAME);
-        mPermittedList.add(ALLOWED_PACKAGE_NAME);
-
-        getShadowInputMethodManager(mContext).setInputMethodList(new ArrayList<>());
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void refreshUi_permitAllInputMethods_preferenceCountIs4() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
-    }
-
-    @Test
-    public void refreshUi_multiplteAllowedImeByOrganization_allPreferencesVisible() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(mPreferenceGroup.getPreference(i).isVisible()).isTrue();
-        }
-    }
-
-    @Test
-    public void refreshUi_multipleEnabledInputMethods_allPreferencesEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
-        }
-    }
-
-    @Test
-    public void refreshUi_multipleEnabledInputMethods_allPreferencesChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
-                    .isTrue();
-        }
-    }
-
-    @Test
-    public void refreshUi_disallowedByOrganization_noPreferencesShown() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_skipVoiceTyping() {
-        List<InputMethodInfo> infos =
-                createInputMethodInfoList(InputMethodUtil.GOOGLE_VOICE_TYPING);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceIcon() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getIcon()).isEqualTo(
-                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceTitle() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getTitle()).isEqualTo(
-                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
-    }
-
-    @Test
-    public void refreshUi_verifyPreferenceSummary() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-        getShadowInputMethodManager(mContext).setInputMethodList(infos);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-
-        InputMethodManager inputMethodManager =
-                (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-        Preference preference = mPreferenceGroup.getPreference(0);
-        assertThat(preference.getSummary()).isEqualTo(
-                InputMethodUtil.getSummaryString(mContext, inputMethodManager, infos.get(0)));
-    }
-
-    @Test
-    public void refreshUi_oneInputMethod_noneEnabled_oneInputMethodPreferenceInView() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void refreshUi_oneInputMethod_noneEnabled_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_oneInputMethod_noneEnabled_preferenceNotChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isFalse();
-    }
-
-    @Test
-    public void refreshUi_oneInputMethod_defaultable_notChecked_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_securityDialogShown() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_positive_noOtherPreferenceAdded() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_positive_inputMethodEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mInputMethodManager.getEnabledInputMethodList().get(0).getId())
-                .isEqualTo(DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_negative_noOtherPreferenceAdded() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
-                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_negative_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showSecurityDialog_negative_inputMethodDisabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isFalse();
-    }
-
-    @Test
-    public void performClick_toggleTrue_directBootWarningShown() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_positive_noOtherPreferenceAdded() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_positive_inputMethodEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        assertThat(mInputMethodManager.getEnabledInputMethodList().get(0).getId())
-                .isEqualTo(DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_negative_noOtherPreferenceAdded() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceNotChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isFalse();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_showDirectBootDialog_negative_inputMethodDisabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                securityDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
-        dialogFragment = bootDialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
-
-        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
-                .isEqualTo(0);
-    }
-
-    @Test
-    public void performClick_toggleFalse_noOtherPreferenceAdded() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
-    }
-
-    @Test
-    public void performClick_toggleFalse_preferenceNotChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
-                .isFalse();
-    }
-
-    @Test
-    public void performClick_toggleFalse_preferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        assertThat((mPreferenceGroup.getPreference(0)).isEnabled())
-                .isTrue();
-    }
-
-    @Test
-    public void performClick_toggleFalse_inputMethodDisabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-
-        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
-                .isEqualTo(0);
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_notClickDefaultablePreferenceDisabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup, DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)
-                .performClick();
-
-        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceNotChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)).isChecked()).isFalse();
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_notClickedDefaultablePreferenceChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
-    }
-
-    @Test
-    public void performClick_toggleTrue_twoDefaultable_allPreferencesEnabled() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
-        }
-    }
-
-    @Test
-    public void performClick_toggleTrue_twoDefaultable_allPreferencesChecked() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
-        );
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
-                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
-                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
-
-        mControllerHelper.getController().refreshUi();
-
-        getPreferenceFromGroupByKey(mPreferenceGroup,
-                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
-
-        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
-                ConfirmationDialogFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
-                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
-        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
-
-        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
-                    .isTrue();
-        }
-    }
-
-    private static InputMethodInfo createMockInputMethodInfo(
-            Context context, PackageManager packageManager,
-            ShadowInputMethodManager inputMethodManager, String packageName, String id,
-            boolean isDefaultable, boolean directBootAware) {
-        ServiceInfo mockServiceInfo = mock(ServiceInfo.class);
-        mockServiceInfo.directBootAware = directBootAware;
-
-        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
-        when(mockInfo.getPackageName()).thenReturn(packageName);
-        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
-        when(mockInfo.getServiceInfo()).thenReturn(mockServiceInfo);
-        when(mockInfo.getSettingsActivity()).thenReturn(DUMMY_SETTINGS_ACTIVITY);
-        when(mockInfo.getId()).thenReturn(id);
-        when(mockInfo.isDefault(context)).thenReturn(isDefaultable);
-        List<InputMethodSubtype> subtypes = createSubtypes();
-        inputMethodManager.setEnabledInputMethodSubtypeList(subtypes);
-        return mockInfo;
-    }
-
-    private static Preference getPreferenceFromGroupByKey(PreferenceGroup prefGroup, String key) {
-        for (int i = 0; i < prefGroup.getPreferenceCount(); i++) {
-            Preference pref = prefGroup.getPreference(i);
-            if (pref.getKey().equals(key)) {
-                return pref;
-            }
-        }
-        return null;
-    }
-
-    private static List<InputMethodSubtype> createSubtypes() {
-        List<InputMethodSubtype> subtypes = new ArrayList<>();
-        subtypes.add(createSubtype(1, "en_US"));
-        subtypes.add(createSubtype(2, "de_BE"));
-        subtypes.add(createSubtype(3, "oc-FR"));
-        return subtypes;
-    }
-
-    private static InputMethodSubtype createSubtype(int id, String locale) {
-        return new InputMethodSubtype.InputMethodSubtypeBuilder().setSubtypeId(id)
-                .setSubtypeLocale(locale).setIsAuxiliary(false).setIsAsciiCapable(true).build();
-    }
-
-    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
-    }
-
-    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
-    }
-
-    private List<InputMethodInfo> createInputMethodInfoList(String packageName, String... ids) {
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        List<String> idsList = Arrays.asList(ids);
-        idsList.forEach(id -> {
-            boolean defaultable;
-            boolean directBootAware;
-            switch (id) {
-                case DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE:
-                    defaultable = true;
-                    directBootAware = true;
-                    break;
-                case DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
-                    defaultable = true;
-                    directBootAware = false;
-                    break;
-                case DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE:
-                    defaultable = false;
-                    directBootAware = true;
-                    break;
-                default: //case DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
-                    defaultable = false;
-                    directBootAware = false;
-                    break;
-            }
-            infos.add(createMockInputMethodInfo(mContext, packageManager,
-                    getShadowInputMethodManager(mContext), packageName, id, defaultable,
-                    directBootAware));
-        });
-        return infos;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
deleted file mode 100644
index 884fcdc..0000000
--- a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.inputmethod;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.view.inputmethod.InputMethodInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowDevicePolicyManager;
-import com.android.car.settings.testutils.ShadowInputMethodManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
-public class KeyboardPreferenceControllerTest {
-    private static final String EMPTY = "";
-    private static final String DUMMY_LABEL = "dummy label";
-    private static final String DUMMY_LABEL_1 = "dummy label 1";
-    private static final String DUMMY_LABEL_2 = "dummy label 2";
-    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
-    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
-    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
-    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
-    private List<String> mPermittedList;
-    private PreferenceControllerTestHelper<KeyboardPreferenceController> mControllerHelper;
-    private Preference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                KeyboardPreferenceController.class, mPreference);
-
-        mPermittedList = new ArrayList<>();
-        mPermittedList.add(DUMMY_PACKAGE_NAME);
-        mPermittedList.add(ALLOWED_PACKAGE_NAME);
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowInputMethodManager.reset();
-        ShadowDevicePolicyManager.reset();
-    }
-
-    @Test
-    public void refreshUi_noInputMethodInfo() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(Collections.emptyList());
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
-    }
-
-    @Test
-    public void refreshUi_permitAllInputMethods_hasOneInputMethodInfo() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isNotNull();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
-    }
-
-    @Test
-    public void refreshUi_permitAllInputMethods_hasTwoInputMethodInfo() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_1));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isNotNull();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_1)).isTrue();
-    }
-
-    @Test
-    public void refreshUi_permitAllInputMethods_hasThreeInputMethodInfo() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
-
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_1));
-        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_2));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isNotNull();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_1)).isTrue();
-        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_2)).isTrue();
-    }
-
-    @Test
-    public void refreshUi_hasAllowedImeByOrganization() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createInputMethodInfo(packageManager, ALLOWED_PACKAGE_NAME, DUMMY_LABEL));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isEqualTo(DUMMY_LABEL);
-    }
-
-    @Test
-    public void refreshUi_disallowedByOrganization() {
-        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
-                mPermittedList);
-
-        List<InputMethodInfo> infos = new ArrayList<>();
-        PackageManager packageManager = mContext.getPackageManager();
-        infos.add(createInputMethodInfo(packageManager, DISALLOWED_PACKAGE_NAME, DUMMY_LABEL));
-        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
-
-        mControllerHelper.getController().refreshUi();
-        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
-    }
-
-    private static InputMethodInfo createInputMethodInfo(
-            PackageManager packageManager, String packageName, String label) {
-        ResolveInfo resolveInfo = mock(ResolveInfo.class);
-        ServiceInfo serviceInfo = new ServiceInfo();
-        ApplicationInfo applicationInfo = new ApplicationInfo();
-        applicationInfo.packageName = packageName;
-        applicationInfo.enabled = true;
-        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
-        serviceInfo.applicationInfo = applicationInfo;
-        serviceInfo.enabled = true;
-        serviceInfo.packageName = packageName;
-        serviceInfo.name = label;
-        serviceInfo.exported = true;
-        serviceInfo.nonLocalizedLabel = label;
-        resolveInfo.serviceInfo = serviceInfo;
-        resolveInfo.nonLocalizedLabel = label;
-        when(resolveInfo.loadLabel(packageManager)).thenReturn(label);
-        return new InputMethodInfo(resolveInfo,
-                /* isAuxIme= */ false,
-                DUMMY_SETTINGS_ACTIVITY,
-                /* subtypes= */ null,
-                /* isDefaultResId= */ 1,
-                /* forceDefault= */ false);
-    }
-
-    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
-    }
-
-    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
-        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java
deleted file mode 100644
index d5a3851..0000000
--- a/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,168 +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.
- */
-package com.android.car.settings.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.location.LocationManager;
-import android.os.Bundle;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-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.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class LocationFooterPreferenceControllerTest {
-    private static final String TEST_TEXT = "sample text";
-    private static final int TEST_RES_ID = 1024;
-
-    @Mock
-    private PackageManager mPackageManager;
-    @Mock
-    private Resources mResources;
-
-    private PreferenceControllerTestHelper<LocationFooterPreferenceController> mControllerHelper;
-    private PreferenceGroup mGroup;
-    private List<ResolveInfo> mResolveInfos;
-
-    @Before
-    public void setUp() throws PackageManager.NameNotFoundException {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mGroup = new LogicalPreferenceGroup(context);
-        mControllerHelper = new PreferenceControllerTestHelper<>(context,
-                LocationFooterPreferenceController.class, mGroup);
-        mControllerHelper.getController().setPackageManager(mPackageManager);
-
-        mResolveInfos = new ArrayList<>();
-        when(mPackageManager.queryBroadcastReceivers(any(Intent.class), anyInt()))
-                .thenReturn(mResolveInfos);
-        when(mPackageManager.getResourcesForApplication(any(ApplicationInfo.class)))
-                .thenReturn(mResources);
-        when(mResources.getString(TEST_RES_ID)).thenReturn(TEST_TEXT);
-    }
-
-    // Visibility Tests.
-    @Test
-    public void footer_isVisibleWhenThereAreValidInjections() {
-        mResolveInfos.add(
-                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.isVisible()).isTrue();
-    }
-
-    @Test
-    public void footer_isHiddenWhenThereAreNoValidInjections_notSystemApp() {
-        mResolveInfos.add(
-                getTestResolveInfo(/* isSystemApp= */ false, /* hasRequiredMetadata= */ true));
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.isVisible()).isFalse();
-    }
-
-    @Test
-    public void footer_isHiddenWhenThereAreNoValidInjections_noMetaData() {
-        mResolveInfos.add(
-                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ false));
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.isVisible()).isFalse();
-    }
-
-    // Correctness Tests.
-    @Test
-    public void onCreate_addsInjectedFooterToGroup() {
-        int numFooters = 3;
-        for (int i = 0; i < numFooters; i++) {
-            mResolveInfos.add(
-                    getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
-        }
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.getPreferenceCount()).isEqualTo(numFooters);
-    }
-
-    @Test
-    public void onCreate_injectedFooterHasCorrectText() {
-        mResolveInfos.add(
-                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.getPreference(0).getSummary()).isEqualTo(TEST_TEXT);
-    }
-
-    @Test
-    public void onCreate_injectedFooterIsNotSelectable() {
-        mResolveInfos.add(
-                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mGroup.getPreference(0).isSelectable()).isFalse();
-    }
-
-    /**
-     * Returns a ResolveInfo object for testing.
-     *
-     * <p>Injections are only valid if they are both a system app, and have the required METADATA.
-     *
-     * @param isSystemApp         true if the application is a system app.
-     * @param hasRequiredMetaData true if the broadcast receiver has a valid value for
-     *                            {@link LocationManager#METADATA_SETTINGS_FOOTER_STRING}
-     */
-    private ResolveInfo getTestResolveInfo(boolean isSystemApp, boolean hasRequiredMetaData) {
-        ResolveInfo testResolveInfo = new ResolveInfo();
-        ApplicationInfo testAppInfo = new ApplicationInfo();
-        if (isSystemApp) {
-            testAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
-        }
-        ActivityInfo testActivityInfo = new ActivityInfo();
-        testActivityInfo.name = "TestActivityName";
-        testActivityInfo.packageName = "TestPackageName";
-        testActivityInfo.applicationInfo = testAppInfo;
-        if (hasRequiredMetaData) {
-            testActivityInfo.metaData = new Bundle();
-            testActivityInfo.metaData.putInt(
-                    LocationManager.METADATA_SETTINGS_FOOTER_STRING, TEST_RES_ID);
-        }
-        testResolveInfo.activityInfo = testActivityInfo;
-        return testResolveInfo;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
deleted file mode 100644
index bd25e20..0000000
--- a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
+++ /dev/null
@@ -1,146 +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.
- */
-package com.android.car.settings.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.clearInvocations;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.content.Intent;
-import android.location.SettingInjectorService;
-import android.os.UserHandle;
-import android.util.ArrayMap;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.location.SettingsInjector;
-
-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.RuntimeEnvironment;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-@RunWith(RobolectricTestRunner.class)
-public class LocationServicesPreferenceControllerTest {
-
-    private static final int PROFILE_ID = UserHandle.USER_CURRENT;
-
-    @Mock
-    private SettingsInjector mSettingsInjector;
-    private Context mContext;
-    private PreferenceControllerTestHelper<LocationServicesPreferenceController> mControllerHelper;
-    private LocationServicesPreferenceController mController;
-    private PreferenceGroup mCategory;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mCategory = new PreferenceCategory(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                LocationServicesPreferenceController.class, mCategory);
-        mController = mControllerHelper.getController();
-        mController.setSettingsInjector(mSettingsInjector);
-    }
-
-    @Test
-    public void onStart_registersBroadcastReceiver() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
-        verify(mSettingsInjector).reloadStatusMessages();
-    }
-
-    @Test
-    public void onStop_unregistersBroadcastReceiver() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
-        verify(mSettingsInjector).reloadStatusMessages();
-
-        clearInvocations(mSettingsInjector);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
-        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
-        verify(mSettingsInjector, never()).reloadStatusMessages();
-    }
-
-    @Test
-    public void updateState_addsInjectedSettingsToPreferenceCategory() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
-        doReturn(samplePrefs).when(mSettingsInjector)
-                .getInjectedSettings(any(Context.class), anyInt());
-
-        mController.updateState(mCategory);
-
-        assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
-    }
-
-    @Test
-    public void updateState_updatesPreferenceSummary() {
-        Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
-        doReturn(samplePrefs).when(mSettingsInjector)
-                .getInjectedSettings(any(Context.class), anyInt());
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        String summary = "Summary";
-        samplePrefs.get(PROFILE_ID).get(0).setSummary(summary);
-
-        mController.updateState(mCategory);
-
-        assertThat(mCategory.getPreference(0).getSummary()).isEqualTo(summary);
-    }
-
-    @Test
-    public void preferenceCategory_isVisibleIfThereAreInjectedSettings() {
-        doReturn(getSamplePreferences()).when(mSettingsInjector)
-                .getInjectedSettings(any(Context.class), anyInt());
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mCategory.isVisible()).isTrue();
-    }
-
-    @Test
-    public void preferenceCategory_isHiddenIfThereAreNoInjectedSettings() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mCategory.isVisible()).isFalse();
-    }
-
-    private Map<Integer, List<Preference>> getSamplePreferences() {
-        Map<Integer, List<Preference>> preferences = new ArrayMap<>();
-        preferences.put(PROFILE_ID,
-                Arrays.asList(new Preference(mContext), new Preference(mContext),
-                        new Preference(mContext)));
-        return preferences;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java
deleted file mode 100644
index 147744b..0000000
--- a/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java
+++ /dev/null
@@ -1,107 +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.
- */
-package com.android.car.settings.location;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Service;
-import android.content.Intent;
-import android.location.LocationManager;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowLocationManager;
-import com.android.car.settings.testutils.ShadowSecureSettings;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
-public class LocationSettingsFragmentTest {
-    private FragmentController<LocationSettingsFragment> mFragmentController;
-    private LocationSettingsFragment mFragment;
-    private LocationManager mLocationManager;
-    private MenuItem mLocationSwitch;
-
-    @Before
-    public void setUp() {
-        Robolectric.getForegroundThreadScheduler().pause();
-        mLocationManager = (LocationManager) RuntimeEnvironment.application
-                .getSystemService(Service.LOCATION_SERVICE);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mFragment = new LocationSettingsFragment();
-        mFragmentController = FragmentController.of(mFragment);
-        mFragmentController.setup();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowSecureSettings.reset();
-    }
-
-    @Test
-    public void locationSwitch_toggle_shouldBroadcastLocationModeChangedIntent() {
-        initFragment();
-        mLocationSwitch.performClick();
-
-        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(intentsFired).hasSize(1);
-        Intent intentFired = intentsFired.get(0);
-        assertThat(intentFired.getAction()).isEqualTo(LocationManager.MODE_CHANGED_ACTION);
-    }
-
-    @Test
-    public void locationSwitch_checked_enablesLocation() {
-        initFragment();
-        mLocationSwitch.performClick();
-
-        assertThat(mLocationManager.isLocationEnabled()).isTrue();
-    }
-
-    @Test
-    public void locationSwitch_unchecked_disablesLocation() {
-        initFragment();
-        mLocationSwitch.performClick();
-
-        assertThat(mLocationManager.isLocationEnabled()).isTrue();
-
-        mLocationSwitch.performClick();
-
-        assertThat(mLocationManager.isLocationEnabled()).isFalse();
-    }
-
-    private void initFragment() {
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        mLocationSwitch = toolbar.getMenuItems().get(0);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
deleted file mode 100644
index cf87388..0000000
--- a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,101 +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.
- */
-package com.android.car.settings.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.UserHandle;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowLocationManager;
-import com.android.car.settings.testutils.ShadowSecureSettings;
-import com.android.settingslib.Utils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
-public class RecentLocationRequestsEntryPreferenceControllerTest {
-
-    private RecentLocationRequestsEntryPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        Context context = RuntimeEnvironment.application;
-        mPreference = new Preference(context);
-        PreferenceControllerTestHelper<RecentLocationRequestsEntryPreferenceController>
-                controllerHelper = new PreferenceControllerTestHelper<>(context,
-                RecentLocationRequestsEntryPreferenceController.class, mPreference);
-        mController = controllerHelper.getController();
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowSecureSettings.reset();
-    }
-
-    @Test
-    public void refreshUi_locationOn_preferenceIsEnabled() {
-        setLocationEnabled(true);
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_locationOff_preferenceIsDisabled() {
-        setLocationEnabled(false);
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void locationModeChangedBroadcastSent_locationOff_preferenceIsDisabled() {
-        setLocationEnabled(true);
-        mController.refreshUi();
-        setLocationEnabled(false);
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void locationModeChangedBroadcastSent_locationOn_preferenceIsEnabled() {
-        setLocationEnabled(false);
-        mController.refreshUi();
-        setLocationEnabled(true);
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    private void setLocationEnabled(boolean enabled) {
-        Utils.updateLocationEnabled(RuntimeEnvironment.application, enabled, UserHandle.myUserId(),
-                Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
deleted file mode 100644
index ccc58d2..0000000
--- a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
+++ /dev/null
@@ -1,109 +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.
- */
-package com.android.car.settings.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.location.RecentLocationApps;
-
-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.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class RecentLocationRequestsPreferenceControllerTest {
-
-    @Mock
-    private RecentLocationApps mRecentLocationApps;
-
-    private RecentLocationRequestsPreferenceController mController;
-    private PreferenceScreen mScreen;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
-        PreferenceControllerTestHelper<RecentLocationRequestsPreferenceController>
-                controllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                RecentLocationRequestsPreferenceController.class, mScreen);
-        mController = controllerHelper.getController();
-        mController.setRecentLocationApps(mRecentLocationApps);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void refreshUi_noRecentRequests_messageDisplayed() {
-        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(Collections.emptyList());
-        mController.refreshUi();
-
-        assertThat(mScreen.getPreference(0).getTitle()).isEqualTo(
-                mContext.getString(R.string.location_settings_recent_requests_empty_message));
-    }
-
-    @Test
-    public void refreshUi_someRecentRequests_preferencesAddedToScreen() {
-        List<RecentLocationApps.Request> list = Arrays.asList(
-                mock(RecentLocationApps.Request.class),
-                mock(RecentLocationApps.Request.class),
-                mock(RecentLocationApps.Request.class));
-        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list);
-        mController.refreshUi();
-
-        assertThat(mScreen.getPreferenceCount()).isEqualTo(list.size());
-    }
-
-    @Test
-    public void refreshUi_newRecentRequests_listIsUpdated() {
-        List<RecentLocationApps.Request> list1 = Arrays.asList(
-                mock(RecentLocationApps.Request.class),
-                mock(RecentLocationApps.Request.class),
-                mock(RecentLocationApps.Request.class));
-        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list1);
-
-        List<RecentLocationApps.Request> list2 = new ArrayList<>(list1);
-        list2.add(mock(RecentLocationApps.Request.class));
-
-        mController.refreshUi();
-        assertThat(mScreen.getPreferenceCount()).isEqualTo(list1.size());
-
-        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list2);
-        mController.refreshUi();
-
-        assertThat(mScreen.getPreferenceCount()).isEqualTo(list2.size());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
deleted file mode 100644
index 9baa364..0000000
--- a/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.ResolveInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowEuiccManager;
-import org.robolectric.shadows.ShadowPackageManager;
-
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-public class AddMobileNetworkPreferenceControllerTest {
-
-    private Context mContext;
-    private AddMobileNetworkPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        PreferenceControllerTestHelper<AddMobileNetworkPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        AddMobileNetworkPreferenceController.class, new Preference(mContext));
-        mController = controllerHelper.getController();
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowPackageManager.reset();
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccDisabled_isUnsupported() {
-        getShadowEuiccManager().setIsEnabled(false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccEnabled_intentResolves_isAvailable() {
-        getShadowEuiccManager().setIsEnabled(true);
-        getShadowPackageManager().addResolveInfoForIntent(
-                AddMobileNetworkPreferenceController.ADD_NETWORK_INTENT, new ResolveInfo());
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccEnabled_intentFailsToResolve_isUnsupported() {
-        getShadowEuiccManager().setIsEnabled(true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    private ShadowPackageManager getShadowPackageManager() {
-        return Shadow.extract(mContext.getPackageManager());
-    }
-
-    private ShadowEuiccManager getShadowEuiccManager() {
-        return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
deleted file mode 100644
index 3267886..0000000
--- a/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.robolectric.shadow.api.Shadow.extract;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkCapabilities;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowConnectivityManager;
-import com.android.car.settings.testutils.ShadowSubscriptionManager;
-import com.android.car.settings.testutils.ShadowTelephonyManager;
-
-import com.google.android.collect.Lists;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowNetwork;
-import org.robolectric.shadows.ShadowUserManager;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowConnectivityManager.class, ShadowTelephonyManager.class,
-        ShadowSubscriptionManager.class})
-public class MobileNetworkEntryPreferenceControllerTest {
-
-    private static final String TEST_NETWORK_NAME = "test network name";
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<MobileNetworkEntryPreferenceController>
-            mControllerHelper;
-    private MobileNetworkEntryPreferenceController mController;
-    private UserHandle mMyUserHandle;
-    @Mock
-    private NetworkCapabilities mNetworkCapabilities;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mMyUserHandle = UserHandle.of(UserHandle.myUserId());
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                MobileNetworkEntryPreferenceController.class, mPreference);
-        mController = mControllerHelper.getController();
-
-        // Setup to always make preference available.
-        getShadowConnectivityManager().clearAllNetworks();
-        getShadowConnectivityManager().addNetworkCapabilities(
-                ShadowNetwork.newInstance(ConnectivityManager.TYPE_MOBILE), mNetworkCapabilities);
-        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
-                true);
-        getShadowUserManager().setIsAdminUser(true);
-        getShadowUserManager().setUserRestriction(
-                mMyUserHandle, DISALLOW_CONFIG_MOBILE_NETWORKS, false);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowConnectivityManager.reset();
-        ShadowTelephonyManager.reset();
-    }
-
-    @Test
-    public void getAvailabilityStatus_noMobileNetwork_unsupported() {
-        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
-                false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_notAdmin_disabledForUser() {
-        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
-                true);
-        getShadowUserManager().setIsAdminUser(false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_hasRestriction_disabledForUser() {
-        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
-                true);
-        getShadowUserManager().setIsAdminUser(true);
-        getShadowUserManager().setUserRestriction(
-                mMyUserHandle, DISALLOW_CONFIG_MOBILE_NETWORKS, true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_hasMobileNetwork_isAdmin_noRestriction_available() {
-        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
-                true);
-        getShadowUserManager().setIsAdminUser(true);
-        getShadowUserManager().setUserRestriction(
-                mMyUserHandle, DISALLOW_CONFIG_MOBILE_NETWORKS, false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    @Ignore
-    public void refreshUi_noSims_disabled() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isFalse();
-    }
-
-    @Test
-    @Ignore
-    public void refreshUi_oneSim_enabled() {
-        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    @Ignore
-    public void refreshUi_oneSim_summaryIsDisplayName() {
-        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(TEST_NETWORK_NAME);
-    }
-
-    @Test
-    @Ignore
-    public void refreshUi_multiSim_enabled() {
-        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
-        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
-                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.isEnabled()).isTrue();
-    }
-
-    @Test
-    @Ignore
-    public void refreshUi_multiSim_summaryShowsCount() {
-        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
-        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
-                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
-                R.plurals.mobile_network_summary_count, 2, 2));
-    }
-
-    @Test
-    @Ignore
-    public void performClick_noSim_noFragmentStarted() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(
-                any(Fragment.class));
-    }
-
-    @Test
-    @Ignore
-    public void performClick_oneSim_startsMobileNetworkFragment() {
-        int subId = 1;
-        SubscriptionInfo info = createSubscriptionInfo(subId, /* simSlotIndex= */ 1,
-                TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreference.performClick();
-
-        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
-                MobileNetworkFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
-
-        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
-                -1)).isEqualTo(subId);
-    }
-
-    @Test
-    @Ignore
-    public void performClick_multiSim_startsMobileNetworkListFragment() {
-        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
-        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
-                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(
-                any(MobileNetworkListFragment.class));
-    }
-
-    private ShadowConnectivityManager getShadowConnectivityManager() {
-        return (ShadowConnectivityManager) extract(
-                mContext.getSystemService(ConnectivityManager.class));
-    }
-
-    private ShadowSubscriptionManager getShadowSubscriptionManager() {
-        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
-    }
-
-    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
-            String displayName) {
-        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
-                simSlotIndex, displayName, /* carrierName= */ "",
-                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
-                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", "mncString",
-                /* countryIso= */ "", /* isEmbedded= */ false,
-                /* accessRules= */ null, /* cardString= */ "");
-        return subInfo;
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
deleted file mode 100644
index 8a8e544..0000000
--- a/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowSubscriptionManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.Collections;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowSubscriptionManager.class})
-public class MobileNetworkFragmentTest {
-
-    private static final int SUB_ID = 1;
-    private static final String TEST_NAME = "Test Name";
-
-    private Context mContext;
-    private FragmentController<MobileNetworkFragment> mFragmentController;
-    private MobileNetworkFragment mFragment;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowSubscriptionManager.reset();
-    }
-
-    @Test
-    public void onMobileNetworkUpdated_startWithArgument_updateTitle() {
-        setUpFragmentWithSubId(SUB_ID, TEST_NAME);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
-                Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
-        getShadowSubscriptionManager().setActiveSubscriptionInfos(
-                createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
-                createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
-        mFragmentController.setup();
-
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        assertThat(toolbar.getTitle()).isEqualTo(TEST_NAME);
-    }
-
-    @Test
-    public void onMobileNetworkUpdated_noArgumentProvided_updateTitle() {
-        mFragment = new MobileNetworkFragment();
-        mFragmentController = FragmentController.of(mFragment);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
-                Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
-        getShadowSubscriptionManager().setActiveSubscriptionInfos(
-                createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
-                createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
-        mFragmentController.setup();
-
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        assertThat(toolbar.getTitle()).isEqualTo(TEST_NAME + "_1");
-    }
-
-    private void setUpFragmentWithSubId(int subId, String name) {
-        SubscriptionInfo info = createSubscriptionInfo(subId, name);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
-                Collections.singletonList(info));
-
-        mFragment = MobileNetworkFragment.newInstance(subId);
-        mFragmentController = FragmentController.of(mFragment);
-    }
-
-    private SubscriptionInfo createSubscriptionInfo(int subId, String name) {
-        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
-                /* simSlotIndex= */ 0, /* displayName= */ name, /* carrierName= */ "",
-                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
-                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
-                /* countryIso= */ "", /* isEmbedded= */ false,
-                /* accessRules= */ null, /* cardString= */ "");
-        return subInfo;
-    }
-
-    private ShadowSubscriptionManager getShadowSubscriptionManager() {
-        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
deleted file mode 100644
index 0d8b375..0000000
--- a/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowSubscriptionManager;
-
-import com.google.android.collect.Lists;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.List;
-
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowSubscriptionManager.class})
-public class MobileNetworkListPreferenceControllerTest {
-
-    private static final int SUB_ID = 1;
-    private Context mContext;
-    private PreferenceGroup mPreferenceGroup;
-    private PreferenceControllerTestHelper<MobileNetworkListPreferenceController> mControllerHelper;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                MobileNetworkListPreferenceController.class, mPreferenceGroup);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowSubscriptionManager.reset();
-    }
-
-    @Test
-    public void refreshUi_containsElements() {
-        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
-                /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void onPreferenceClicked_launchesFragment() {
-        SubscriptionInfo info = createSubscriptionInfo(SUB_ID, /* simSlotIndex= */ 1,
-                /* cardString= */"", "mncString");
-        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
-        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
-
-        mControllerHelper.getController().refreshUi();
-        Preference preference = mPreferenceGroup.getPreference(0);
-        preference.performClick();
-
-        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
-                MobileNetworkFragment.class);
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
-
-        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
-                -1)).isEqualTo(SUB_ID);
-    }
-
-    private ShadowSubscriptionManager getShadowSubscriptionManager() {
-        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
-    }
-
-    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
-            String cardString, String mncString) {
-        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
-                simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
-                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
-                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
-                /* countryIso= */ "", /* isEmbedded= */ false,
-                /* accessRules= */ null, cardString);
-        return subInfo;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/privacy/PrivacyExtraPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/privacy/PrivacyExtraPreferenceControllerTest.java
deleted file mode 100644
index aef3d38..0000000
--- a/tests/robotests/src/com/android/car/settings/privacy/PrivacyExtraPreferenceControllerTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2020 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.car.settings.privacy;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.ExtraSettingsLoader;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-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.RuntimeEnvironment;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@RunWith(RobolectricTestRunner.class)
-public class PrivacyExtraPreferenceControllerTest {
-
-    private static final Intent FAKE_INTENT = new Intent();
-
-    private Context mContext;
-    private PreferenceGroup mPreferenceGroup;
-    private PrivacyExtraPreferenceController mController;
-    private PreferenceControllerTestHelper<PrivacyExtraPreferenceController>
-            mPreferenceControllerHelper;
-
-    @Mock
-    private ExtraSettingsLoader mExtraSettingsLoaderMock;
-
-    @Mock
-    private Drawable mDrawable;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mPreferenceGroup.setIntent(FAKE_INTENT);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                PrivacyExtraPreferenceController.class, mPreferenceGroup);
-        mController = mPreferenceControllerHelper.getController();
-    }
-
-    @Test
-    public void onLoadPreferences_noPreferencesHaveIcons() {
-        Map<Preference, Bundle> preferenceBundleWithIconsMap = new HashMap<>();
-        for (int i = 0; i < 3; i++) {
-            Preference pref = new Preference(mContext);
-            pref.setIcon(mDrawable);
-            preferenceBundleWithIconsMap.put(pref, new Bundle());
-        }
-
-        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
-                preferenceBundleWithIconsMap);
-
-        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            assertThat(mPreferenceGroup.getPreference(i).getIcon()).isNull();
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/AddNewProfileTaskTest.java b/tests/robotests/src/com/android/car/settings/profiles/AddNewProfileTaskTest.java
new file mode 100644
index 0000000..495603c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/AddNewProfileTaskTest.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.user.CarUserManager;
+import android.car.user.UserCreationResult;
+import android.car.util.concurrent.AndroidAsyncFuture;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.os.UserManager;
+
+import androidx.annotation.Nullable;
+import androidx.test.InstrumentationRegistry;
+
+import com.android.internal.infra.AndroidFuture;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AddNewProfileTaskTest {
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private CarUserManager mCarUserManager;
+    @Mock
+    private AddNewProfileTask.AddNewProfileListener mAddNewProfileListener;
+    @Mock
+    private Context mContext;
+
+    private AddNewProfileTask mTask;
+
+    private final Resources mResources = InstrumentationRegistry.getTargetContext().getResources();
+
+    @Before
+    public void createAsyncTask() {
+        MockitoAnnotations.initMocks(this);
+        mTask = new AddNewProfileTask(mContext, mCarUserManager, mAddNewProfileListener);
+    }
+
+    @Test
+    public void testTaskCallsCreateNewUser() {
+        String newUserName = "Test name";
+        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
+
+        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
+
+        mTask.execute(newUserName);
+        Robolectric.flushBackgroundThreadScheduler();
+
+        verify(mCarUserManager).createUser(newUserName, /* flags= */ 0);
+    }
+
+    @Test
+    public void testSwitchToNewUserIfUserCreated() {
+        String newUserName = "Test name";
+        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
+
+        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
+
+        mTask.execute(newUserName);
+        Robolectric.flushBackgroundThreadScheduler();
+
+        verify(mCarUserManager).switchUser(newUser.id);
+    }
+
+    @Test
+    public void testOnUserAddedSuccessCalledIfUserCreated() {
+        String newUserName = "Test name";
+        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
+
+        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
+
+        mTask.execute(newUserName);
+        Robolectric.flushBackgroundThreadScheduler();
+
+        verify(mAddNewProfileListener).onProfileAddedSuccess();
+    }
+
+    @Test
+    public void testOnUserAddedFailureCalledIfNullReturned() {
+        String newUserName = "Test name";
+
+        mockCreateUser(/* user= */ null, UserCreationResult.STATUS_ANDROID_FAILURE);
+
+        mTask.execute(newUserName);
+        Robolectric.flushBackgroundThreadScheduler();
+
+        verify(mAddNewProfileListener).onProfileAddedFailure();
+    }
+
+    private void mockCreateUser(@Nullable UserInfo user, int status) {
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mContext.getResources()).thenReturn(mResources);
+
+        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
+        future.complete(new UserCreationResult(status,
+                user, /* errorMessage= */ null));
+        when(mCarUserManager.createUser(anyString(), anyInt()))
+                .thenReturn(new AndroidAsyncFuture<>(future));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/BroadcastReceiverHelpers.java b/tests/robotests/src/com/android/car/settings/profiles/BroadcastReceiverHelpers.java
new file mode 100644
index 0000000..e333129
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/BroadcastReceiverHelpers.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.profiles;
+
+import static junit.framework.Assert.fail;
+
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.BroadcastReceiver;
+import android.content.IntentFilter;
+
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.List;
+
+public class BroadcastReceiverHelpers {
+
+    private BroadcastReceiverHelpers() { }
+
+    public static BroadcastReceiver getRegisteredReceiverWithActions(List<String> actions) {
+        ShadowApplication.Wrapper wrapper = getRegisteredReceiverWrapperWithActions(actions);
+        return wrapper == null ? null : wrapper.broadcastReceiver;
+    }
+
+    private static ShadowApplication.Wrapper getRegisteredReceiverWrapperWithActions(
+            List<String> actions) {
+        List<ShadowApplication.Wrapper> registeredReceivers =
+                shadowOf(RuntimeEnvironment.application).getRegisteredReceivers();
+        if (registeredReceivers.isEmpty()) {
+            return null;
+        }
+        ShadowApplication.Wrapper returnWrapper = null;
+        for (ShadowApplication.Wrapper wrapper : registeredReceivers) {
+            if (matchesActions(wrapper.getIntentFilter(), actions)) {
+                if (returnWrapper == null) {
+                    returnWrapper = wrapper;
+                } else {
+                    fail("There are multiple receivers registered with this IntentFilter. "
+                            + "This util method cannot handle multiple receivers.");
+                }
+            }
+        }
+        return returnWrapper;
+    }
+
+    private static boolean matchesActions(IntentFilter filter, List<String> actions) {
+        if (filter.countActions() != actions.size()) {
+            return false;
+        }
+
+        for (String action : actions) {
+            if (!filter.matchAction(action)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/PermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/profiles/PermissionsPreferenceControllerTest.java
new file mode 100644
index 0000000..20d05a1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/PermissionsPreferenceControllerTest.java
@@ -0,0 +1,150 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowUserManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/**
+ * Test for the preference controller which populates the various permissions preferences.
+ * Note that the switch preference represents the opposite of the restriction it is controlling.
+ * i.e. DISALLOW_ADD_USER may be the restriction, but the switch represents "create new users".
+ */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserManager.class})
+public class PermissionsPreferenceControllerTest {
+
+    private static final String TEST_RESTRICTION = UserManager.DISALLOW_ADD_USER;
+    private static final UserInfo TEST_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<PermissionsPreferenceController>
+            mPreferenceControllerHelper;
+    private PermissionsPreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                PermissionsPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mController.setUserInfo(TEST_USER);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper.setPreference(mPreferenceGroup);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void testRefreshUi_populatesGroup() {
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
+    }
+
+    @Test
+    public void testRefreshUi_callingTwice_noDuplicates() {
+        mController.refreshUi();
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
+    }
+
+    @Test
+    public void testRefreshUi_setToFalse() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        preference.setChecked(true);
+        getShadowUserManager().setUserRestriction(
+                TEST_USER.getUserHandle(), TEST_RESTRICTION, true);
+        mController.refreshUi();
+        assertThat(preference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_setToTrue() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        preference.setChecked(false);
+        getShadowUserManager().setUserRestriction(
+                TEST_USER.getUserHandle(), TEST_RESTRICTION, false);
+        mController.refreshUi();
+        assertThat(preference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_changeToFalse() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        getShadowUserManager().setUserRestriction(
+                TEST_USER.getUserHandle(), TEST_RESTRICTION, true);
+        preference.callChangeListener(true);
+        assertThat(UserManager.get(mContext)
+                .hasUserRestriction(TEST_RESTRICTION, TEST_USER.getUserHandle())).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceChange_changeToTrue() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        getShadowUserManager().setUserRestriction(
+                TEST_USER.getUserHandle(), TEST_RESTRICTION, false);
+        preference.callChangeListener(false);
+        assertThat(UserManager.get(mContext)
+                .hasUserRestriction(TEST_RESTRICTION, TEST_USER.getUserHandle())).isTrue();
+    }
+
+    private SwitchPreference getPreferenceForRestriction(
+            PreferenceGroup preferenceGroup, String restriction) {
+        for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
+            SwitchPreference preference = (SwitchPreference) preferenceGroup.getPreference(i);
+            if (restriction.equals(preference.getExtras().getString(
+                    PermissionsPreferenceController.PERMISSION_TYPE_KEY))) {
+                return preference;
+            }
+        }
+        return null;
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadow.extract(mContext.getSystemService(UserManager.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceControllerTest.java
new file mode 100644
index 0000000..affe040
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfileDetailsBasePreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserIconProvider.class})
+public class ProfileDetailsBasePreferenceControllerTest {
+
+    private static class TestProfileDetailsBasePreferenceController extends
+            ProfileDetailsBasePreferenceController<Preference> {
+
+        TestProfileDetailsBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+    }
+
+    private static final List<String> LISTENER_ACTIONS =
+            Collections.singletonList(Intent.ACTION_USER_INFO_CHANGED);
+
+    private PreferenceControllerTestHelper<TestProfileDetailsBasePreferenceController>
+            mPreferenceControllerHelper;
+    private TestProfileDetailsBasePreferenceController mController;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestProfileDetailsBasePreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mPreference = new Preference(context);
+    }
+
+    @Test
+    public void testCheckInitialized_missingUserInfo() {
+        assertThrows(() -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testOnCreate_registerListener() {
+        mController.setUserInfo(new UserInfo());
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
+                .isNotNull();
+    }
+
+    @Test
+    public void testOnDestroy_unregisterListener() {
+        mController.setUserInfo(new UserInfo());
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
+                .isNull();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfileHelperTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfileHelperTest.java
new file mode 100644
index 0000000..e5eee39
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfileHelperTest.java
@@ -0,0 +1,552 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.profiles;
+
+import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetAliveUsers;
+import static android.os.UserManager.USER_TYPE_SYSTEM_HEADLESS;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManager;
+import android.car.user.CarUserManager;
+import android.car.user.UserCreationResult;
+import android.car.user.UserRemovalResult;
+import android.car.user.UserSwitchResult;
+import android.car.util.concurrent.AndroidAsyncFuture;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.car.settings.testutils.ShadowActivityManager;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+import com.android.car.settings.testutils.ShadowUserManager;
+import com.android.internal.infra.AndroidFuture;
+
+import org.junit.After;
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowProcess;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowActivityManager.class, ShadowUserManager.class,
+        ShadowUserIconProvider.class})
+public class ProfileHelperTest {
+
+    private static final String DEFAULT_ADMIN_NAME = "default_admin";
+    private static final String DEFAULT_GUEST_NAME = "default_guest";
+
+    private Context mContext;
+    private ProfileHelper mProfileHelper;
+
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private Resources mMockResources;
+    @Mock
+    private CarUserManager mMockCarUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mProfileHelper = new ProfileHelper(mMockUserManager, mMockResources,
+                DEFAULT_ADMIN_NAME, DEFAULT_GUEST_NAME, mMockCarUserManager);
+
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS))
+                .thenReturn(false);
+        when(mMockUserManager.isDemoUser()).thenReturn(false);
+        when(mMockUserManager.isGuestUser()).thenReturn(false);
+
+        ShadowUserManager.setIsHeadlessSystemUserMode(true);
+        ShadowActivityManager.setCurrentUser(10);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowActivityManager.reset();
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void canCurrentProcessModifyAccounts_baseline_returnsTrue() {
+        assertThat(mProfileHelper.canCurrentProcessModifyAccounts()).isTrue();
+    }
+
+    @Test
+    public void canCurrentProcessModifyAccounts_hasDisallowModifyAccounts_returnsFalse() {
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS))
+                .thenReturn(true);
+        assertThat(mProfileHelper.canCurrentProcessModifyAccounts()).isFalse();
+    }
+
+    @Test
+    public void canCurrentProcessModifyAccounts_isDemoUser_returnsFalse() {
+        when(mMockUserManager.isDemoUser()).thenReturn(true);
+        assertThat(mProfileHelper.canCurrentProcessModifyAccounts()).isFalse();
+    }
+
+    @Test
+    public void canCurrentProcessModifyAccounts_isGuestUser_returnsFalse() {
+        when(mMockUserManager.isGuestUser()).thenReturn(true);
+        assertThat(mProfileHelper.canCurrentProcessModifyAccounts()).isFalse();
+    }
+
+    @Test
+    public void testGetAllsers() {
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two admin, and two non-admin users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createNonAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        UserInfo user3 = createNonAdminUser(fgUserId + 2);
+        UserInfo user4 = createAdminUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return all non-system users
+        assertThat(mProfileHelper.getAllProfiles()).containsExactly(fgUser, user2, user3, user4);
+    }
+
+    @Test
+    public void testGetAllUsers_notHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(false);
+
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two admin, and two non-admin users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createNonAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        UserInfo user3 = createNonAdminUser(fgUserId + 2);
+        UserInfo user4 = createAdminUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return all users
+        assertThat(mProfileHelper.getAllProfiles())
+                .containsExactly(systemUser, fgUser, user2, user3, user4);
+    }
+
+    @Test
+    public void testGetAllSwitchableUsers() {
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two non-foreground users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createAdminUser(fgUserId);
+        UserInfo user1 = createAdminUser(fgUserId + 1);
+        UserInfo user2 = createAdminUser(fgUserId + 2);
+
+        mockGetUsers(systemUser, fgUser, user1, user2);
+
+        // Should return all non-foreground users.
+        assertThat(mProfileHelper.getAllSwitchableProfiles()).containsExactly(user1, user2);
+    }
+
+    @Test
+    public void testGetAllSwitchableUsers_notHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(false);
+
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two non-foreground users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createAdminUser(fgUserId);
+        UserInfo user1 = createAdminUser(fgUserId + 1);
+        UserInfo user2 = createAdminUser(fgUserId + 2);
+
+        mockGetUsers(systemUser, fgUser, user1, user2);
+
+        // Should return all non-foreground users.
+        assertThat(mProfileHelper.getAllSwitchableProfiles()).containsExactly(systemUser, user1,
+                user2);
+    }
+
+    @Test
+    public void testGetAllPersistentUsers() {
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two non-ephemeral users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        // Create two ephemeral users.
+        UserInfo user3 = createEphemeralUser(fgUserId + 2);
+        UserInfo user4 = createEphemeralUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return all non-ephemeral users.
+        assertThat(mProfileHelper.getAllPersistentProfiles()).containsExactly(fgUser, user2);
+    }
+
+    @Test
+    public void testGetAllPersistentUsers_notHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(false);
+
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two non-ephemeral users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        // Create two ephemeral users.
+        UserInfo user3 = createEphemeralUser(fgUserId + 2);
+        UserInfo user4 = createEphemeralUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return all non-ephemeral users.
+        assertThat(mProfileHelper.getAllPersistentProfiles()).containsExactly(systemUser, fgUser,
+                user2);
+    }
+
+    @Test
+    public void testGetAllAdminUsers() {
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two admin, and two non-admin users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createNonAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        UserInfo user3 = createNonAdminUser(fgUserId + 2);
+        UserInfo user4 = createAdminUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return only admin users.
+        assertThat(mProfileHelper.getAllAdminProfiles()).containsExactly(user2, user4);
+    }
+
+    @Test
+    public void testGetAllAdminUsers_notHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(false);
+
+        // Add system user
+        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
+
+        // Create two admin, and two non-admin users.
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createNonAdminUser(fgUserId);
+        UserInfo user2 = createAdminUser(fgUserId + 1);
+        UserInfo user3 = createNonAdminUser(fgUserId + 2);
+        UserInfo user4 = createAdminUser(fgUserId + 3);
+
+        mockGetUsers(systemUser, fgUser, user2, user3, user4);
+
+        // Should return only admin users.
+        assertThat(mProfileHelper.getAllAdminProfiles()).containsExactly(systemUser, user2, user4);
+    }
+
+    @Test
+    public void testRemoveUser_isAdminUser_cannotRemoveSystemUser() {
+        UserInfo systemUser = new UserInfo(
+                UserHandle.USER_SYSTEM,
+                "Driver",
+                /* iconPath= */ null,
+                /* flags= */ UserInfo.FLAG_ADMIN | UserInfo.FLAG_SYSTEM,
+                /* userType= */ USER_TYPE_SYSTEM_HEADLESS);
+
+        assertThat(mProfileHelper.removeProfile(mContext, systemUser))
+                .isEqualTo(ProfileHelper.REMOVE_PROFILE_RESULT_FAILED);
+    }
+
+    @Test
+    public void testRemoveUser_isAdmin_canRemoveOtherUsers() {
+        // Create admin user and non-admin user
+        int fgUserId = ActivityManager.getCurrentUser();
+        int nonAdminUserId = fgUserId + 1;
+        UserInfo fgUser = createAdminUser(fgUserId);
+        UserInfo nonAdminUser = createNonAdminUser(nonAdminUserId);
+
+        mockGetUsers(fgUser, nonAdminUser);
+        mockRemoveUser(nonAdminUserId, UserRemovalResult.STATUS_SUCCESSFUL);
+        // If Admin is removing non-current, non-system user, simply calls removeUser.
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        assertThat(mProfileHelper.removeProfile(mContext, nonAdminUser))
+                .isEqualTo(ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS);
+        verify(mMockCarUserManager).removeUser(nonAdminUserId);
+    }
+
+    @Test
+    public void testRemoveUser_isNonAdmin_cannotRemoveOtherUsers() {
+        // Create two non-admin users
+        int fgUserId = ActivityManager.getCurrentUser();
+        UserInfo fgUser = createNonAdminUser(fgUserId);
+        UserInfo user2 = createNonAdminUser(fgUserId + 1);
+        mockGetUsers(fgUser, user2);
+
+        // Make current user non-admin.
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+        // Mock so that removeUser always pretends it's successful.
+        mockRemoveUserSuccess();
+
+        // If Non-Admin is trying to remove someone other than themselves, they should fail.
+        assertThat(mProfileHelper.removeProfile(mContext, user2))
+                .isEqualTo(ProfileHelper.REMOVE_PROFILE_RESULT_FAILED);
+        verify(mMockCarUserManager, never()).removeUser(user2.id);
+    }
+
+
+    @Test
+    public void testRemoveUser_removesLastAdminUser_createsAndSwitchesToNewAdminUser() {
+        // Ensure admin status
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        // Create one admin and one non-admin
+        int baseId = 10;
+        UserInfo adminUser = createAdminUser(baseId);
+        UserInfo nonAdminInfo = createNonAdminUser(baseId + 1);
+        mockGetUsers(adminUser, nonAdminInfo);
+        UserInfo newAdminInfo = createAdminUser(baseId + 2);
+        mockRemoveUserSuccess();
+        mockCreateUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN,
+                UserCreationResult.STATUS_SUCCESSFUL, newAdminInfo);
+        mockSwitchUserSuccess();
+
+        assertThat(mProfileHelper.removeProfile(mContext, adminUser))
+                .isEqualTo(ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS);
+
+        verify(mMockCarUserManager).createUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN);
+        verify(mMockCarUserManager).switchUser(newAdminInfo.id);
+        verify(mMockCarUserManager).removeUser(adminUser.id);
+    }
+
+    @Test
+    public void testRemoveUser_removesLastAdminUserFailsCreateNewUser_doesNotRemoveOrSwitchUser() {
+        // Ensure admin status
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        // Create one admin and one non-admin
+        int baseId = 10;
+        UserInfo adminUser = createAdminUser(baseId);
+        UserInfo nonAdminInfo = createNonAdminUser(baseId + 1);
+        mockGetUsers(adminUser, nonAdminInfo);
+
+        // Fail to create a new user to force a failure case
+        mockCreateUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN,
+                UserCreationResult.STATUS_ANDROID_FAILURE, null);
+
+        assertThat(mProfileHelper.removeProfile(mContext, adminUser))
+                .isEqualTo(ProfileHelper.REMOVE_PROFILE_RESULT_FAILED);
+        verify(mMockCarUserManager).createUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN);
+        verify(mMockCarUserManager, never()).switchUser(anyInt());
+        verify(mMockCarUserManager, never()).removeUser(adminUser.id);
+    }
+
+    @Test
+    public void testRemoveUser_removeForegroundUser_callsSwitchToGuest() {
+        // Create foreground user
+        int baseId = 10;
+        ShadowProcess.setUid(baseId * UserHandle.PER_USER_RANGE); // User 10
+        UserInfo currentUser = createNonAdminUser(baseId);
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+        mockGetUsers(currentUser);
+
+        UserInfo guestUser = createGuestUser(baseId + 1);
+        mockRemoveUserSuccess();
+        mockCreateGuest(DEFAULT_GUEST_NAME, UserCreationResult.STATUS_SUCCESSFUL, guestUser);
+        mockSwitchUserSuccess();
+
+        assertUserRemoved(ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS, guestUser, currentUser);
+    }
+
+    @Test
+    public void testRemoveUser_removeForegroundUser_switchFails_returnsSetEphemeralResult() {
+        // Create foreground user
+        int baseId = 10;
+        ShadowProcess.setUid(baseId * UserHandle.PER_USER_RANGE); // User 10
+        UserInfo currentUser = createNonAdminUser(baseId);
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+        mockGetUsers(currentUser);
+
+        UserInfo guestUser = createGuestUser(baseId + 1);
+        mockRemoveUserSuccess();
+        mockCreateGuest(DEFAULT_GUEST_NAME, UserCreationResult.STATUS_SUCCESSFUL, guestUser);
+        mockSwitchUserFailure();
+
+        assertUserRemoved(ProfileHelper.REMOVE_PROFILE_RESULT_SWITCH_FAILED, guestUser,
+                currentUser);
+    }
+
+    private void assertUserRemoved(int expectedResult, UserInfo newUser, UserInfo removedUser) {
+        assertThat(mProfileHelper.removeProfile(mContext, removedUser)).isEqualTo(expectedResult);
+        verify(mMockCarUserManager).createGuest(newUser.name);
+        verify(mMockCarUserManager).switchUser(newUser.id);
+        verify(mMockCarUserManager).removeUser(removedUser.id);
+    }
+
+    @Test
+    public void testGetMaxSupportedRealUsers_isHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(true);
+        ShadowUserManager.setMaxSupportedUsers(7);
+
+        // Create System user, two managed profiles, and two normal users.
+        UserInfo user0 = createAdminUser(0);
+        UserInfo user1 = createNonAdminUser(10);
+        UserInfo user2 = createManagedProfile(11);
+        UserInfo user3 = createNonAdminUser(13);
+        UserInfo user4 = createManagedProfile(14);
+
+        mockGetUsers(user0, user1, user2, user3, user4);
+
+        // Max users - # managed profiles - headless system user.
+        assertThat(mProfileHelper.getMaxSupportedRealProfiles()).isEqualTo(4);
+    }
+
+    @Test
+    public void testGetMaxSupportedRealUsers_isNotHeadless() {
+        ShadowUserManager.setIsHeadlessSystemUserMode(false);
+        ShadowUserManager.setMaxSupportedUsers(7);
+
+        // Create System user, two managed profiles, and two normal users.
+        UserInfo user0 = createAdminUser(0);
+        UserInfo user1 = createNonAdminUser(10);
+        UserInfo user2 = createManagedProfile(11);
+        UserInfo user3 = createNonAdminUser(13);
+        UserInfo user4 = createManagedProfile(14);
+
+        mockGetUsers(user0, user1, user2, user3, user4);
+
+        // Max users - # managed profiles
+        assertThat(mProfileHelper.getMaxSupportedRealProfiles()).isEqualTo(5);
+    }
+
+    @Test
+    public void testCreateNewOrFindExistingGuest_ifGuestExists_returnsExistingGuest() {
+        // Create two users and a guest user.
+        UserInfo user1 = createAdminUser(10);
+        UserInfo user2 = createNonAdminUser(12);
+        UserInfo guestUser = createGuestUser(13);
+
+        mockGetUsers(user1, user2, guestUser);
+        mockCreateUserFail();
+
+        when(mMockUserManager.findCurrentGuestUser()).thenReturn(guestUser);
+
+        UserInfo guest = mProfileHelper.createNewOrFindExistingGuest(mContext);
+        assertThat(guest).isEqualTo(guestUser);
+    }
+
+    @Test
+    public void testCreateNewOrFindExistingGuest_ifNoGuest_createsNewGuest() {
+        // Create two users.
+        UserInfo user1 = createAdminUser(10);
+        UserInfo user2 = createNonAdminUser(12);
+
+        mockGetUsers(user1, user2);
+
+        // Create a user for the "new guest" user.
+        UserInfo guestInfo = createGuestUser(21);
+
+        mockCreateGuest(DEFAULT_GUEST_NAME, UserCreationResult.STATUS_SUCCESSFUL, guestInfo);
+
+        UserInfo guest = mProfileHelper.createNewOrFindExistingGuest(mContext);
+        verify(mMockCarUserManager).createGuest(DEFAULT_GUEST_NAME);
+        assertThat(guest).isEqualTo(guestInfo);
+    }
+
+    private UserInfo createAdminUser(int id) {
+        return new UserInfo(id, null, UserInfo.FLAG_ADMIN);
+    }
+
+    private UserInfo createNonAdminUser(int id) {
+        return new UserInfo(id, null, 0);
+    }
+
+    private UserInfo createEphemeralUser(int id) {
+        return new UserInfo(id, null, UserInfo.FLAG_EPHEMERAL);
+    }
+
+    private UserInfo createManagedProfile(int id) {
+        return new UserInfo(id, null, UserInfo.FLAG_MANAGED_PROFILE);
+    }
+
+    private UserInfo createGuestUser(int id) {
+        return new UserInfo(id, null, UserInfo.FLAG_GUEST);
+    }
+
+    private void mockGetUsers(UserInfo... users) {
+        mockUmGetAliveUsers(mMockUserManager, users);
+    }
+
+    private void mockRemoveUser(int userId, int status) {
+        when(mMockCarUserManager.removeUser(userId)).thenReturn(new UserRemovalResult(status));
+    }
+
+    private void mockRemoveUserSuccess() {
+        when(mMockCarUserManager.removeUser(anyInt()))
+                .thenReturn(new UserRemovalResult(UserRemovalResult.STATUS_SUCCESSFUL));
+    }
+
+    private void mockCreateUserFail() {
+        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
+        future.complete(new UserCreationResult(UserCreationResult.STATUS_ANDROID_FAILURE,
+                null, null));
+        AndroidAsyncFuture<UserCreationResult> asyncFuture = new AndroidAsyncFuture<>(future);
+        when(mMockCarUserManager.createUser(any(), anyInt())).thenReturn(asyncFuture);
+        when(mMockCarUserManager.createGuest(any())).thenReturn(asyncFuture);
+    }
+
+    private void mockCreateUser(String name, int flag, int status, UserInfo userInfo) {
+        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
+        future.complete(new UserCreationResult(status, userInfo, null));
+        when(mMockCarUserManager.createUser(name, flag))
+                .thenReturn(new AndroidAsyncFuture<>(future));
+    }
+
+    private void mockCreateGuest(String name, int status, UserInfo userInfo) {
+        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
+        future.complete(new UserCreationResult(status, userInfo, null));
+        when(mMockCarUserManager.createGuest(name)).thenReturn(new AndroidAsyncFuture<>(future));
+    }
+
+    private void mockSwitchUserSuccess() {
+        AndroidFuture<UserSwitchResult> future = new AndroidFuture<>();
+        future.complete(new UserSwitchResult(UserSwitchResult.STATUS_SUCCESSFUL, null));
+        when(mMockCarUserManager.switchUser(anyInt())).thenReturn(new AndroidAsyncFuture<>(future));
+    }
+
+    private void mockSwitchUserFailure() {
+        AndroidFuture<UserSwitchResult> future = new AndroidFuture<>();
+        future.complete(new UserSwitchResult(UserSwitchResult.STATUS_ANDROID_FAILURE, null));
+        when(mMockCarUserManager.switchUser(anyInt())).thenReturn(new AndroidAsyncFuture<>(future));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfileIconProviderTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfileIconProviderTest.java
new file mode 100644
index 0000000..e4e0834
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfileIconProviderTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_GUEST;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
+import android.os.UserManager;
+
+import com.android.car.settings.testutils.ShadowUserManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserManager.class})
+public class ProfileIconProviderTest {
+
+    private Context mContext;
+    private ProfileIconProvider mProfileIconProvider;
+    private UserInfo mUserInfo;
+    private UserManager mUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+
+        mProfileIconProvider = new ProfileIconProvider();
+        mUserInfo = new UserInfo(/* id= */ 10, "USER_NAME", /* flags= */ 0);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void getRoundedUserIcon_AssignsIconIfNotPresent() {
+        ShadowUserManager.setUserIcon(mUserInfo.id, null);
+
+        Drawable returnedIcon = mProfileIconProvider.getRoundedProfileIcon(mUserInfo, mContext);
+
+        assertThat(returnedIcon).isNotNull();
+        assertThat(getShadowUserManager().getUserIcon(mUserInfo.id)).isNotNull();
+    }
+
+    @Test
+    public void assignDefaultIcon_AssignsIconForNonGuest() {
+        ShadowUserManager.setUserIcon(mUserInfo.id, null);
+
+        Bitmap returnedIcon = mProfileIconProvider.assignDefaultIcon(
+                mUserManager, mContext.getResources(), mUserInfo);
+
+        assertThat(returnedIcon).isNotNull();
+        assertThat(getShadowUserManager().getUserIcon(mUserInfo.id)).isNotNull();
+    }
+
+    @Test
+    public void assignDefaultIcon_AssignsIconForGuest() {
+        UserInfo guestUserInfo =
+                new UserInfo(/* id= */ 11, "USER_NAME", FLAG_GUEST);
+        ShadowUserManager.setUserIcon(guestUserInfo.id, null);
+
+        Bitmap returnedIcon = mProfileIconProvider.assignDefaultIcon(
+                mUserManager, mContext.getResources(), guestUserInfo);
+
+        assertThat(returnedIcon).isNotNull();
+        assertThat(getShadowUserManager().getUserIcon(guestUserInfo.id)).isNotNull();
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadow.extract(mUserManager);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfilesBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfilesBasePreferenceControllerTest.java
new file mode 100644
index 0000000..eeecd70
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfilesBasePreferenceControllerTest.java
@@ -0,0 +1,208 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowUserHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
+public class ProfilesBasePreferenceControllerTest {
+
+    private static class TestProfilesBasePreferenceController extends
+            ProfilesBasePreferenceController {
+
+        TestProfilesBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected void profileClicked(UserInfo userInfo) {
+        }
+    }
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+
+    private static final List<String> LISTENER_ACTIONS =
+            Collections.singletonList(Intent.ACTION_USER_INFO_CHANGED);
+
+    private PreferenceControllerTestHelper<TestProfilesBasePreferenceController> mControllerHelper;
+    private TestProfilesBasePreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    private Context mContext;
+    @Mock
+    private ProfileHelper mProfileHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        MockitoAnnotations.initMocks(this);
+        ShadowUserHelper.setInstance(mProfileHelper);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestProfilesBasePreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+        when(mProfileHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
+        when(mProfileHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+        when(mProfileHelper.getAllLivingProfiles(any())).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUserHelper.reset();
+    }
+
+    @Test
+    public void onCreate_registersOnUsersUpdateListener() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
+                .isNotNull();
+    }
+
+    @Test
+    public void onCreate_populatesUsers() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        // Three users. Current user, other user, guest user.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+    }
+
+    @Test
+    public void onDestroy_unregistersOnUsersUpdateListener() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
+                .isNull();
+    }
+
+    @Test
+    public void refreshUi_userChange_updatesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        // Mock a change so that other user becomes an admin.
+        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(
+                Collections.singletonList(adminOtherUser));
+        when(mProfileHelper.getAllLivingProfiles(any())).thenReturn(
+                Arrays.asList(TEST_OTHER_USER, adminOtherUser));
+
+        mController.refreshUi();
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsNoneIn(currentPreferences);
+    }
+
+    @Test
+    public void refreshUi_noChange_doesNotUpdateGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        mController.refreshUi();
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsExactlyElementsIn(currentPreferences);
+    }
+
+    @Test
+    public void onUsersUpdated_updatesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        // Mock a change so that other user becomes an admin.
+        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(
+                Collections.singletonList(adminOtherUser));
+        when(mProfileHelper.getAllLivingProfiles(any())).thenReturn(
+                Arrays.asList(TEST_OTHER_USER, adminOtherUser));
+
+        mContext.sendBroadcast(new Intent(LISTENER_ACTIONS.get(0)));
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsNoneIn(currentPreferences);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfilesListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfilesListPreferenceControllerTest.java
new file mode 100644
index 0000000..868b197
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfilesListPreferenceControllerTest.java
@@ -0,0 +1,120 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowUserHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+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.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowUserManager;
+
+import java.util.Collections;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
+public class ProfilesListPreferenceControllerTest {
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", FLAG_ADMIN);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+
+    private PreferenceControllerTestHelper<ProfilesListPreferenceController> mControllerHelper;
+    private PreferenceGroup mPreferenceGroup;
+    private Context mContext;
+    @Mock
+    private ProfileHelper mProfileHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        MockitoAnnotations.initMocks(this);
+        ShadowUserHelper.setInstance(mProfileHelper);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ProfilesListPreferenceController.class, mPreferenceGroup);
+
+        getShadowUserManager().addUser(TEST_CURRENT_USER.id, TEST_CURRENT_USER.name,
+                TEST_CURRENT_USER.flags);
+        getShadowUserManager().switchUser(TEST_CURRENT_USER.id);
+        when(mProfileHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
+        when(mProfileHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+        when(mProfileHelper.getAllLivingProfiles(any())).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUserHelper.reset();
+    }
+
+    @Test
+    public void testPreferencePerformClick_currentAdminUser_openNewFragment() {
+        mPreferenceGroup.getPreference(0).performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(ProfileDetailsFragment.class));
+    }
+
+    @Test
+    public void testPreferencePerformClick_otherNonAdminUser_openNewFragment() {
+        mPreferenceGroup.getPreference(1).performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(ProfileDetailsPermissionsFragment.class));
+    }
+
+    @Test
+    public void testPreferencePerformClick_guestUser_noAction() {
+        mPreferenceGroup.getPreference(2).performClick();
+
+        verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(any());
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadows.shadowOf(UserManager.get(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/profiles/ProfilesPreferenceProviderTest.java b/tests/robotests/src/com/android/car/settings/profiles/ProfilesPreferenceProviderTest.java
new file mode 100644
index 0000000..d4765ab
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/profiles/ProfilesPreferenceProviderTest.java
@@ -0,0 +1,184 @@
+/*
+ * 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.
+ */
+
+package com.android.car.settings.profiles;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowUserHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+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.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
+public class ProfilesPreferenceProviderTest {
+
+    private static final String TEST_CURRENT_USER_NAME = "Current User";
+    private static final String TEST_OTHER_USER_1_NAME = "User 1";
+    private static final String TEST_OTHER_USER_2_NAME = "User 2";
+    private static final String TEST_GUEST_USER_1_NAME = "Guest 1";
+    private static final String TEST_GUEST_USER_2_NAME = "Guest 2";
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 14,
+            TEST_CURRENT_USER_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER_1 = new UserInfo(/* id= */ 10,
+            TEST_OTHER_USER_1_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER_2 = new UserInfo(/* id= */ 11,
+            TEST_OTHER_USER_2_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_GUEST_USER_1 = new UserInfo(/* id= */ 12,
+            TEST_GUEST_USER_1_NAME, /* flags= */ UserInfo.FLAG_GUEST);
+    private static final UserInfo TEST_GUEST_USER_2 = new UserInfo(/* id= */ 13,
+            TEST_GUEST_USER_2_NAME, /* flags= */ UserInfo.FLAG_GUEST);
+
+
+    private Context mContext;
+    @Mock
+    private ProfilesPreferenceProvider.ProfileClickListener mProfileClickListener;
+    @Mock
+    private ProfileHelper mProfileHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowUserHelper.setInstance(mProfileHelper);
+        mContext = RuntimeEnvironment.application;
+
+        List<UserInfo> users = Arrays.asList(TEST_OTHER_USER_1, TEST_GUEST_USER_1,
+                TEST_GUEST_USER_2,
+                TEST_OTHER_USER_2);
+
+        when(mProfileHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
+        when(mProfileHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(users);
+        when(mProfileHelper.getAllLivingProfiles(any())).thenReturn(
+                Arrays.asList(TEST_OTHER_USER_1, TEST_OTHER_USER_2));
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUserHelper.reset();
+    }
+
+    @Test
+    public void testCreateUserList_firstUserIsCurrentUser() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        Preference first = provider.createProfileList().get(0);
+        assertThat(first.getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+    }
+
+    @Test
+    public void testCreateUserList_repeatedGuestUserNotShown() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createProfileList();
+        assertThat(userList.size()).isEqualTo(4); // 3 real users + guest item.
+        assertThat(userList.get(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+    }
+
+    @Test
+    public void testCreateUserList_guestShownAsSeparateLastElement() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createProfileList();
+        assertThat(userList.get(userList.size() - 1).getTitle()).isEqualTo(
+                mContext.getString(R.string.user_guest));
+    }
+
+    @Test
+    public void testCreateUserList_currentUserNotShown() {
+        ProfilesPreferenceProvider provider = createProvider();
+        provider.setIncludeCurrentProfile(false);
+
+        List<Preference> userList = provider.createProfileList();
+        assertThat(userList.size()).isEqualTo(3); // 3 real users + guest item.
+        assertThat(userList.get(0).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(
+                mContext.getString(R.string.user_guest));
+    }
+
+    @Test
+    public void testCreateUserList_guestNotShown() {
+        ProfilesPreferenceProvider provider = createProvider();
+        provider.setIncludeGuest(false);
+
+        List<Preference> userList = provider.createProfileList();
+        assertThat(userList.size()).isEqualTo(3); // 3 real users.
+        assertThat(userList.get(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+    }
+
+    @Test
+    public void testPerformClick_currentUser_invokesUserClickListener() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createProfileList();
+        userList.get(0).performClick();
+        verify(mProfileClickListener).onProfileClicked(TEST_CURRENT_USER);
+    }
+
+    @Test
+    public void testPerformClick_otherUser_invokesUserClickListener() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createProfileList();
+        userList.get(1).performClick();
+        verify(mProfileClickListener).onProfileClicked(TEST_OTHER_USER_1);
+    }
+
+    @Test
+    public void testPerformClick_guestUser_doesntInvokeUserClickListener() {
+        ProfilesPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createProfileList();
+        userList.get(userList.size() - 1).performClick();
+        verify(mProfileClickListener, never()).onProfileClicked(any(UserInfo.class));
+    }
+
+    private ProfilesPreferenceProvider createProvider() {
+        return new ProfilesPreferenceProvider(mContext, mProfileClickListener);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
deleted file mode 100644
index da41a9d..0000000
--- a/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
+++ /dev/null
@@ -1,73 +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.
- */
-
-package com.android.car.settings.security;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/**
- * Tests for ChooseLockPatternFragment class.
- */
-@RunWith(RobolectricTestRunner.class)
-public class ChooseLockPatternFragmentTest {
-    private ChooseLockPatternFragment mFragment;
-
-    @Before
-    public void initFragment() {
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mFragment = FragmentController.of(new ChooseLockPatternFragment()).setup();
-    }
-
-    /**
-     * A test to verify that onComplete is called when save worker succeeds
-     */
-    @Test
-    public void testOnCompleteIsCalledWhenSaveWorkerSucceeds() {
-        ChooseLockPatternFragment spyFragment = spy(mFragment);
-        doNothing().when(spyFragment).onComplete();
-
-        spyFragment.onChosenLockSaveFinished(true);
-
-        verify(spyFragment).onComplete();
-    }
-
-    /**
-     * A test to verify that the UI stage is updated when save worker fails
-     */
-    @Test
-    public void testStageIsUpdatedWhenSaveWorkerFails() {
-        ChooseLockPatternFragment spyFragment = spy(mFragment);
-        doNothing().when(spyFragment).updateStage(ChooseLockPatternFragment.Stage.SaveFailure);
-
-        spyFragment.onChosenLockSaveFinished(false);
-
-        verify(spyFragment, never()).onComplete();
-        verify(spyFragment).updateStage(ChooseLockPatternFragment.Stage.SaveFailure);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
deleted file mode 100644
index 1dc1664..0000000
--- a/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
+++ /dev/null
@@ -1,74 +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.
- */
-
-package com.android.car.settings.security;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/**
- * Tests for ChooseLockPinPasswordFragment class.
- */
-@RunWith(RobolectricTestRunner.class)
-public class ChooseLockPinPasswordFragmentTest {
-    private ChooseLockPinPasswordFragment mFragment;
-
-    @Before
-    public void initFragment() {
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mFragment = FragmentController.of(
-                ChooseLockPinPasswordFragment.newPasswordInstance()).setup();
-    }
-
-    /**
-     * A test to verify that onComplete is called is finished when save worker succeeds
-     */
-    @Test
-    public void testOnCompleteIsCalledWhenSaveWorkerSucceeds() {
-        ChooseLockPinPasswordFragment spyFragment = spy(mFragment);
-        doNothing().when(spyFragment).onComplete();
-
-        spyFragment.onChosenLockSaveFinished(true);
-
-        verify(spyFragment).onComplete();
-    }
-
-    /**
-     * A test to verify that the UI stage is updated when save worker fails
-     */
-    @Test
-    public void testStageIsUpdatedWhenSaveWorkerFails() {
-        ChooseLockPinPasswordFragment spyFragment = spy(mFragment);
-        doNothing().when(spyFragment).updateStage(ChooseLockPinPasswordFragment.Stage.SaveFailure);
-
-        spyFragment.onChosenLockSaveFinished(false);
-
-        verify(spyFragment, never()).onComplete();
-        verify(spyFragment).updateStage(ChooseLockPinPasswordFragment.Stage.SaveFailure);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
deleted file mode 100644
index 3762d9b..0000000
--- a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
+++ /dev/null
@@ -1,76 +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.
- */
-
-package com.android.car.settings.security;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.view.View;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.internal.widget.LockscreenCredential;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-
-/**
- * Tests for ConfirmLockPinPasswordFragment class.
- */
-@RunWith(RobolectricTestRunner.class)
-public class ConfirmLockPinPasswordFragmentTest {
-
-    private TestSettingsScreenLockActivity mTestActivity;
-    private ConfirmLockPinPasswordFragment mPinFragment;
-
-    @Before
-    public void initFragment() {
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mTestActivity = Robolectric.setupActivity(TestSettingsScreenLockActivity.class);
-        mPinFragment = ConfirmLockPinPasswordFragment.newPinInstance();
-        mTestActivity.launchFragment(mPinFragment);
-    }
-
-    /**
-     * A test to verify that the Enter key is re-enabled when verification fails.
-     */
-    @Test
-    public void testEnterKeyIsEnabledWhenCheckFails() {
-        View enterKey = mPinFragment.getView().findViewById(R.id.key_enter);
-        enterKey.setEnabled(false);
-
-        mPinFragment.onCheckCompleted(false, 0);
-
-        assertThat(enterKey.isEnabled()).isTrue();
-    }
-
-    /**
-     * The containing activity of ConfirmLockPinPasswordFragment must implement two interfaces
-     */
-    private static class TestSettingsScreenLockActivity extends BaseTestActivity implements
-            CheckLockListener {
-
-        @Override
-        public void onLockVerified(LockscreenCredential lock) {
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/security/CredentialsResetPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/CredentialsResetPreferenceControllerTest.java
index 361c07b..d11fb6c 100644
--- a/tests/robotests/src/com/android/car/settings/security/CredentialsResetPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/CredentialsResetPreferenceControllerTest.java
@@ -19,7 +19,7 @@
 import static android.os.UserManager.DISALLOW_CONFIG_CREDENTIALS;
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -71,7 +71,7 @@
 
 
         assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                DISABLED_FOR_USER);
+                DISABLED_FOR_PROFILE);
     }
 
     private ShadowUserManager getShadowUserManager() {
diff --git a/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
deleted file mode 100644
index 6886d82..0000000
--- a/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,157 +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.
- */
-
-package com.android.car.settings.security;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-
-import android.app.admin.DevicePolicyManager;
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.internal.widget.LockscreenCredential;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-
-@RunWith(RobolectricTestRunner.class)
-public class LockTypeBasePreferenceControllerTest {
-
-    // Test classes used to test LockTypeBasePreferenceController.
-    private static class TestFragment extends Fragment {
-    }
-
-    private static class TestLockPreferenceController extends LockTypeBasePreferenceController {
-
-        TestLockPreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected Fragment fragmentToOpen() {
-            return new TestFragment();
-        }
-
-        @Override
-        protected int[] allowedPasswordQualities() {
-            return new int[]{MATCHING_PASSWORD_QUALITY};
-        }
-    }
-
-    private static final int MATCHING_PASSWORD_QUALITY =
-            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
-    private static final int NON_MATCHING_PASSWORD_QUALITY =
-            DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
-    private static final LockscreenCredential NONE_LOCKSCREEN_CREDENTIAL =
-            LockscreenCredential.createNone();
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<TestLockPreferenceController>
-            mPreferenceControllerHelper;
-    private TestLockPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TestLockPreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreference.getExtras().putParcelable(
-                PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, NONE_LOCKSCREEN_CREDENTIAL
-        );
-        mPreference.getExtras().putInt(
-                PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, NON_MATCHING_PASSWORD_QUALITY);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_returnsTrue() {
-        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_goesToNextFragment() {
-        mPreference.performClick();
-        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
-                any(TestFragment.class));
-    }
-
-    @Test
-    public void testRefreshUi_isCurrentLock() {
-        mController.setCurrentPasswordQuality(MATCHING_PASSWORD_QUALITY);
-        mController.refreshUi();
-        assertThat(mPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.current_screen_lock));
-    }
-
-    @Test
-    public void testRefreshUi_isNotCurrentLock() {
-        mController.setCurrentPasswordQuality(NON_MATCHING_PASSWORD_QUALITY);
-        mController.refreshUi();
-        assertThat(mPreference.getSummary()).isNotEqualTo(
-                mContext.getString(R.string.current_screen_lock));
-    }
-
-    @Test
-    public void testGetAvailabilityStatus_guestUser() {
-        Shadows.shadowOf(UserManager.get(mContext))
-                .addUser(UserHandle.myUserId(), "name", UserInfo.FLAG_GUEST);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void testGetAvailabilityStatus_otherUser() {
-        Shadows.shadowOf(UserManager.get(mContext))
-                .addUser(UserHandle.myUserId(), "name", /* flags= */ 0);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void testControllerPassword_isSet() {
-        assertThat(mController.getCurrentPassword()).isEqualTo(NONE_LOCKSCREEN_CREDENTIAL);
-    }
-
-    @Test
-    public void testControllerPasswordQuality_isSet() {
-        assertThat(mController.getCurrentPasswordQuality()).isEqualTo(
-                NON_MATCHING_PASSWORD_QUALITY);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java
index 17e54ee..f5cc196 100644
--- a/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java
@@ -17,7 +17,7 @@
 package com.android.car.settings.security;
 
 import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -56,7 +56,7 @@
     public void getAvailabilityStatus_guestUser_disabledForUser() {
         getShadowUserManager().addUser(UserHandle.myUserId(), "name", UserInfo.FLAG_GUEST);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
deleted file mode 100644
index 5813c0d..0000000
--- a/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
+++ /dev/null
@@ -1,194 +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.
- */
-
-package com.android.car.settings.sound;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.Car;
-import android.car.CarNotConnectedException;
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.media.CarAudioManager;
-import android.content.Context;
-import android.media.Ringtone;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.common.SeekBarPreference;
-import com.android.car.settings.testutils.ShadowCar;
-import com.android.car.settings.testutils.ShadowRingtoneManager;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowRingtoneManager.class})
-public class VolumeSettingsPreferenceControllerTest {
-
-    private static final int ZONE_ID = 1;
-    private static final int GROUP_ID = 0;
-    private static final int TEST_MIN_VOLUME = 0;
-    private static final int TEST_VOLUME = 40;
-    private static final int TEST_NEW_VOLUME = 80;
-    private static final int TEST_MAX_VOLUME = 100;
-
-    private PreferenceControllerTestHelper<TestVolumeSettingsPreferenceController>
-            mPreferenceControllerHelper;
-    private TestVolumeSettingsPreferenceController mController;
-    private PreferenceGroup mPreferenceGroup;
-    @Mock
-    private CarAudioManager mCarAudioManager;
-    @Mock
-    private Ringtone mRingtone;
-
-    /** Extend class to provide test resource which doesn't require internal android resources. */
-    public static class TestVolumeSettingsPreferenceController extends
-            VolumeSettingsPreferenceController {
-
-        public TestVolumeSettingsPreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        public int carVolumeItemsXml() {
-            return R.xml.test_car_volume_items;
-        }
-    }
-
-    @Before
-    public void setUp() throws CarNotConnectedException {
-        MockitoAnnotations.initMocks(this);
-        ShadowCar.setCarManager(Car.AUDIO_SERVICE, mCarAudioManager);
-        ShadowRingtoneManager.setRingtone(mRingtone);
-
-        Context context = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(context);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
-                TestVolumeSettingsPreferenceController.class, mPreferenceGroup);
-        mController = mPreferenceControllerHelper.getController();
-
-        when(mCarAudioManager.getVolumeGroupCount()).thenReturn(1);
-        when(mCarAudioManager.getUsagesForVolumeGroupId(GROUP_ID)).thenReturn(new int[]{1, 2});
-        when(mCarAudioManager.getGroupMinVolume(GROUP_ID)).thenReturn(TEST_MIN_VOLUME);
-        when(mCarAudioManager.getGroupVolume(GROUP_ID)).thenReturn(TEST_VOLUME);
-        when(mCarAudioManager.getGroupMaxVolume(GROUP_ID)).thenReturn(TEST_MAX_VOLUME);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCar.reset();
-        ShadowRingtoneManager.reset();
-    }
-
-    @Test
-    public void testRefreshUi_serviceNotStarted() {
-        mController.refreshUi();
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void testRefreshUi_serviceStarted() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void onServiceConnected_registersVolumeCallback() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-
-        verify(mCarAudioManager).registerCarVolumeCallback(mController.mVolumeChangeCallback);
-    }
-
-    @Test
-    public void testRefreshUi_serviceStarted_multipleCalls() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-
-        // Calling this multiple times shouldn't increase the number of elements.
-        mController.refreshUi();
-        mController.refreshUi();
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-    }
-
-    @Test
-    public void testRefreshUi_createdPreferenceHasMinMax() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
-        assertThat(preference.getMin()).isEqualTo(TEST_MIN_VOLUME);
-        assertThat(preference.getValue()).isEqualTo(TEST_VOLUME);
-        assertThat(preference.getMax()).isEqualTo(TEST_MAX_VOLUME);
-    }
-
-    @Test
-    public void testOnPreferenceChange_ringtonePlays() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
-        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
-        verify(mRingtone).play();
-    }
-
-    @Test
-    public void testOnPreferenceChange_audioManagerSet() throws CarNotConnectedException {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
-        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
-        verify(mCarAudioManager).setGroupVolume(GROUP_ID, TEST_NEW_VOLUME, 0);
-    }
-
-    @Test
-    public void onGroupVolumeChanged_sameValue_doesNotUpdateVolumeSeekbar() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        SeekBarPreference preference = spy((SeekBarPreference) mPreferenceGroup.getPreference(0));
-        mController.mVolumeChangeCallback.onGroupVolumeChanged(ZONE_ID, GROUP_ID, /* flags= */ 0);
-
-        verify(preference, never()).setValue(any(Integer.class));
-    }
-
-    @Test
-    public void onGroupVolumeChanged_differentValue_updatesVolumeSeekbar() {
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-        mController.refreshUi();
-        when(mCarAudioManager.getGroupVolume(GROUP_ID)).thenReturn(TEST_NEW_VOLUME);
-        mController.mVolumeChangeCallback.onGroupVolumeChanged(ZONE_ID, GROUP_ID, /* flags= */ 0);
-
-        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
-        assertThat(preference.getValue()).isEqualTo(TEST_NEW_VOLUME);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java
index 7e61779..c4351b7 100644
--- a/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java
@@ -34,9 +34,9 @@
 import android.os.UserHandle;
 import android.util.SparseArray;
 
+import com.android.car.settings.profiles.ProfileHelper;
 import com.android.car.settings.testutils.ShadowApplicationPackageManager;
 import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
 import com.android.settingslib.applications.StorageStatsSource;
 
 import org.junit.After;
@@ -67,7 +67,7 @@
     @Mock
     private StorageStatsSource mSource;
     @Mock
-    private UserHelper mUserHelper;
+    private ProfileHelper mProfileHelper;
 
     private Context mContext;
     private List<ApplicationInfo> mInfo = new ArrayList<>();
@@ -84,8 +84,8 @@
         UserInfo info = new UserInfo();
         mUsers = new ArrayList<>();
         mUsers.add(info);
-        ShadowUserHelper.setInstance(mUserHelper);
-        when(mUserHelper.getAllUsers()).thenReturn(mUsers);
+        ShadowUserHelper.setInstance(mProfileHelper);
+        when(mProfileHelper.getAllProfiles()).thenReturn(mUsers);
         when(mSource.getCacheQuotaBytes(any(), anyInt())).thenReturn(DEFAULT_QUOTA);
         // there is always a "com.android.car.settings" package added by default with category
         // otherAppsSize lets remove it first for testing.
diff --git a/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
deleted file mode 100644
index 21161ce..0000000
--- a/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowBluetoothPan;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/** Unit test for {@link BluetoothMacAddressPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
-public class BluetoothMacAddressPreferenceControllerTest {
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<BluetoothMacAddressPreferenceController>
-            mControllerHelper;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        // Construct controller.
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                BluetoothMacAddressPreferenceController.class, mPreference);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowBluetoothAdapter.reset();
-    }
-
-    @Test
-    public void refreshUi_setsAddress() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ true);
-
-        // Make sure controller is available.
-        BluetoothAdapter.getDefaultAdapter().enable();
-        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
-
-        String address = "address";
-        getShadowBluetoothAdapter().setAddress(address);
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreference.getSummary()).isEqualTo(address);
-    }
-
-    @Test
-    public void getAvailabilityStatus_featureBluetooth_unsupportedOnDevice() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ false);
-
-        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_enableDefaultAdapter_availableForViewing() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                FEATURE_BLUETOOTH, /* supported= */ true);
-
-        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                AVAILABLE_FOR_VIEWING);
-    }
-
-    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
-        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
-    }
-}
-
diff --git a/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
deleted file mode 100644
index af90b85..0000000
--- a/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
+++ /dev/null
@@ -1,183 +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.
- */
-
-package com.android.car.settings.system;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.development.DevelopmentSettingsUtil;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowToast;
-import org.robolectric.shadows.ShadowUserManager;
-
-@RunWith(RobolectricTestRunner.class)
-public class BuildNumberPreferenceControllerTest {
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<BuildNumberPreferenceController>
-            mPreferenceControllerHelper;
-    private BuildNumberPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                BuildNumberPreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-
-        // By default, user is an admin user.
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        // By default, no restrictions on debugging features.
-        getShadowUserManager()
-                .setUserRestriction(
-                        UserHandle.of(UserHandle.myUserId()),
-                        UserManager.DISALLOW_DEBUGGING_FEATURES,
-                        false);
-
-        // By default device is provisioned.
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 1);
-
-        // By default development settings is disabled.
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_notProvisioned_returnFalse() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0);
-        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_nonAdmin_returnFalse() {
-        setCurrentUserWithFlags(/* flags= */ 0);
-
-        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_demoUser_returnsFalse() {
-        setCurrentUserWithFlags(UserInfo.FLAG_DEMO);
-
-        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_adminUser_returnsTrue() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsDisabled_firstClick_noToast() {
-        mPreference.performClick();
-        assertThat(ShadowToast.shownToastCount()).isEqualTo(0);
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsDisabled_someClicks_showToast() {
-        for (int i = 0; i < getTapsToShowToast(); i++) {
-            mPreference.performClick();
-        }
-
-        int remainingClicks = getTapsToBecomeDeveloper() - getTapsToShowToast();
-        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
-                mContext.getResources().getQuantityString(R.plurals.show_dev_countdown,
-                        remainingClicks, remainingClicks));
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_showDevEnabledToast() {
-        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
-            mPreference.performClick();
-        }
-        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
-                mContext.getString(R.string.show_dev_on));
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_devSettingsEnabled() {
-        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
-            mPreference.performClick();
-        }
-        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
-                UserManager.get(mContext))).isTrue();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsDisabled_extraClicks_noAlreadyDevToast() {
-        int extraClicks = 100;
-        for (int i = 0; i < getTapsToBecomeDeveloper() + extraClicks; i++) {
-            mPreference.performClick();
-        }
-        assertThat(
-                ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isFalse();
-    }
-
-    @Test
-    public void testHandlePreferenceClicked_devSettingsEnabled_click_showAlreadyDevToast() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_PAUSE);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
-        mPreference.performClick();
-        assertThat(ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isTrue();
-    }
-
-    private int getTapsToBecomeDeveloper() {
-        return mContext.getResources().getInteger(R.integer.enable_developer_settings_click_count);
-    }
-
-    private int getTapsToShowToast() {
-        return mContext.getResources().getInteger(
-                R.integer.enable_developer_settings_clicks_to_show_toast_count);
-    }
-
-    private void setCurrentUserWithFlags(int flags) {
-        UserInfo userInfo = new UserInfo(UserHandle.myUserId(), null, flags);
-        getShadowUserManager().addUser(userInfo.id, userInfo.name, userInfo.flags);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
deleted file mode 100644
index daaa95c..0000000
--- a/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,112 +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.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.development.DevelopmentSettingsUtil;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowUserManager;
-
-@RunWith(RobolectricTestRunner.class)
-public class DeveloperOptionsEntryPreferenceControllerTest {
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<DeveloperOptionsEntryPreferenceController>
-            mControllerHelper;
-    private DeveloperOptionsEntryPreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        mPreference.setIntent(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                DeveloperOptionsEntryPreferenceController.class,
-                mPreference);
-        mController = mControllerHelper.getController();
-
-        // Setup admin user who is able to enable developer settings.
-        getShadowUserManager().addUser(UserHandle.myUserId(), "test name", UserInfo.FLAG_ADMIN);
-    }
-
-    @Test
-    public void testGetAvailabilityStatus_devOptionsEnabled_isAvailable() {
-        setDeveloperOptionsEnabled(true);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void testGetAvailabilityStatus_devOptionsDisabled_isUnavailable() {
-        setDeveloperOptionsEnabled(false);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void testGetAvailabilityStatus_devOptionsEnabled_hasUserRestriction_isUnavailable() {
-        setDeveloperOptionsEnabled(true);
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()),
-                UserManager.DISALLOW_DEBUGGING_FEATURES,
-                true);
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void performClick_startsActivity() {
-        setDeveloperOptionsEnabled(true);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreference.performClick();
-
-        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(actual.getAction()).isEqualTo(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-
-    private void setDeveloperOptionsEnabled(boolean enabled) {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, enabled ? 1 : 0);
-        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, enabled);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java
deleted file mode 100644
index ef8ea4f..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowAccountManager;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowUserManager;
-
-/** Unit test for {@link MasterClearAccountsPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class})
-public class MasterClearAccountsPreferenceControllerTest {
-
-    private final int mUserId = UserHandle.myUserId();
-
-    private Context mContext;
-    private PreferenceGroup mPreferenceGroup;
-    private PreferenceControllerTestHelper<MasterClearAccountsPreferenceController>
-            mControllerHelper;
-    private MasterClearAccountsPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        getShadowUserManager().addProfile(mUserId, mUserId,
-                String.valueOf(mUserId), /* profileFlags= */ 0);
-
-        mPreferenceGroup = new PreferenceCategory(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                MasterClearAccountsPreferenceController.class, mPreferenceGroup);
-        mController = mControllerHelper.getController();
-    }
-
-    @Test
-    public void onCreate_addsTitlePreference() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(
-                mContext.getString(R.string.master_clear_accounts));
-    }
-
-    @Test
-    public void refreshUi_accountsPresent_showsGroup() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        addAccountAndDescription(mUserId, "accountName");
-
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.isVisible()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_noAccountsPresent_hidesGroup() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.isVisible()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_multipleProfiles_showsAllAccounts() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        int profileId1 = 112;
-        getShadowUserManager().addProfile(mUserId, profileId1,
-                String.valueOf(profileId1), /* profileFlags= */ 0);
-        String accountName1 = "accountName1";
-        addAccountAndDescription(profileId1, accountName1);
-
-        int profileId2 = 113;
-        getShadowUserManager().addProfile(mUserId, profileId2,
-                String.valueOf(profileId2), /* profileFlags= */ 0);
-        String accountName2 = "accountName2";
-        addAccountAndDescription(profileId2, accountName2);
-
-        mController.refreshUi();
-
-        // Title + two profiles with one account each.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
-        assertThat(mPreferenceGroup.getPreference(1).getTitle()).isEqualTo(accountName1);
-        assertThat(mPreferenceGroup.getPreference(2).getTitle()).isEqualTo(accountName2);
-    }
-
-    @Test
-    public void refreshUi_missingAccountDescription_skipsAccount() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        addAccountAndDescription(mUserId, "account name with desc");
-        String accountNameNoDesc = "account name no desc";
-        getShadowAccountManager().addAccountAsUser(mUserId,
-                new Account(accountNameNoDesc, accountNameNoDesc + "_type"));
-
-        mController.refreshUi();
-
-        // Title + one account with valid description.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-        assertThat(mPreferenceGroup.getPreference(1).getTitle()).isNotEqualTo(accountNameNoDesc);
-    }
-
-    @Test
-    public void refreshUi_accountAdded_addsPreferenceToGroup() {
-        addAccountAndDescription(mUserId, "accountName");
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-
-        String addedAccountName = "added account name";
-        addAccountAndDescription(mUserId, addedAccountName);
-        mController.refreshUi();
-
-        // Title + one already present account + one newly added account.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
-        assertThat(mPreferenceGroup.getPreference(2).getTitle()).isEqualTo(addedAccountName);
-    }
-
-    @Test
-    public void refreshUi_accountRemoved_removesPreferenceFromGroup() {
-        String accountNameToRemove = "account name to remove";
-        addAccountAndDescription(mUserId, accountNameToRemove);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-
-        getShadowAccountManager().removeAllAccounts();
-        mController.refreshUi();
-
-        // Title only, all accounts removed.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
-        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isNotEqualTo(accountNameToRemove);
-    }
-
-    private void addAccountAndDescription(int profileId, String accountName) {
-        String type = accountName + "_type";
-        getShadowAccountManager().addAccountAsUser(profileId, new Account(accountName, type));
-        getShadowAccountManager().addAuthenticatorAsUser(profileId,
-                new AuthenticatorDescription(type, "packageName", /* labelId= */ 0, /* iconId= */
-                        0, /* smallIconId= */ 0, /* prefId= */ 0));
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-
-    private ShadowAccountManager getShadowAccountManager() {
-        return Shadow.extract(AccountManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
deleted file mode 100644
index 118dc2e..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.service.oemlock.OemLockManager;
-import android.service.persistentdata.PersistentDataBlockManager;
-
-import androidx.preference.PreferenceManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-/** Unit test for {@link MasterClearConfirmFragment}. */
-@RunWith(RobolectricTestRunner.class)
-public class MasterClearConfirmFragmentTest {
-
-    @Mock
-    private PersistentDataBlockManager mPersistentDataBlockManager;
-    @Mock
-    private OemLockManager mOemLockManager;
-
-    private Context mContext;
-    private MasterClearConfirmFragment mFragment;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        // Note: this is not a general pattern to follow for other use cases! Most system
-        // services can be mocked using Shadows!
-        // Because these services are conditionally included in Android's SystemServiceRegistry
-        // and are not created in ShadowServiceManager, there is no way to conventionally shadow
-        // them in Robolectric.
-        ShadowApplication.getInstance().setSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE,
-                mPersistentDataBlockManager);
-        ShadowApplication.getInstance().setSystemService(Context.OEM_LOCK_SERVICE, mOemLockManager);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mFragment = FragmentController.of(new MasterClearConfirmFragment()).setup();
-
-        // Default to not provisioned.
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                0);
-    }
-
-    @After
-    public void tearDown() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                0);
-    }
-
-    @Test
-    public void confirmClicked_sendsResetIntent() {
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
-        assertThat(resetIntent.getPackage()).isEqualTo("android");
-        assertThat(resetIntent.getFlags() & Intent.FLAG_RECEIVER_FOREGROUND).isEqualTo(
-                Intent.FLAG_RECEIVER_FOREGROUND);
-        assertThat(resetIntent.getExtras().getString(Intent.EXTRA_REASON)).isEqualTo(
-                "MasterClearConfirm");
-    }
-
-    @Test
-    public void confirmClicked_resetEsimFalse_resetIntentReflectsChoice() {
-        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
-                mContext.getString(R.string.pk_master_clear_reset_esim), false).commit();
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getExtras().getBoolean(Intent.EXTRA_WIPE_ESIMS)).isEqualTo(false);
-    }
-
-    @Test
-    public void confirmClicked_pdbManagerNull_sendsResetIntent() {
-        ShadowApplication.getInstance().removeSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
-    }
-
-    @Test
-    public void confirmClicked_oemUnlockAllowed_doesNotWipePdb() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        verify(mPersistentDataBlockManager, never()).wipe();
-    }
-
-    @Test
-    public void confirmClicked_oemUnlockAllowed_sendsResetIntent() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
-    }
-
-    @Test
-    public void confirmClicked_noOemUnlockAllowed_notProvisioned_doesNotWipePdb() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        verify(mPersistentDataBlockManager, never()).wipe();
-    }
-
-    @Test
-    public void confirmClicked_noOemUnlockAllowed_notProvisioned_sendsResetIntent() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
-    }
-
-    @Test
-    public void confirmClicked_noOemUnlockAllowed_provisioned_wipesPdb() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                1);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        verify(mPersistentDataBlockManager).wipe();
-    }
-
-    @Test
-    public void confirmClicked_noOemUnlockAllowed_provisioned_sendsResetIntent() {
-        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
-                1);
-
-        triggerMasterClearConfirmButton(mFragment.requireActivity());
-
-        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
-        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
-    }
-
-    private void triggerMasterClearConfirmButton(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        toolbar.getMenuItems().get(0).performClick();
-        Robolectric.flushForegroundThreadScheduler();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
deleted file mode 100644
index d4b4e1a..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,121 +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.
- */
-
-package com.android.car.settings.system;
-
-import static android.os.UserManager.DISALLOW_FACTORY_RESET;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowUserManager;
-
-/** Unit test for {@link MasterClearEntryPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class MasterClearEntryPreferenceControllerTest {
-    private static final int SECONDARY_USER_ID = 10;
-
-    private Context mContext;
-    private MasterClearEntryPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        mController = new PreferenceControllerTestHelper<>(mContext,
-                MasterClearEntryPreferenceController.class,
-                new Preference(mContext)).getController();
-    }
-
-    @After
-    public void tearDown() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVICE_DEMO_MODE, 0);
-    }
-
-    @Test
-    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
-        createAndSwitchToSecondaryUserWithFlags(/* flags= */ 0);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_adminUser_available() {
-        createAndSwitchToSecondaryUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_adminUser_restricted_disabledForUser() {
-        createAndSwitchToSecondaryUserWithFlags(UserInfo.FLAG_ADMIN);
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(SECONDARY_USER_ID), DISALLOW_FACTORY_RESET, true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_demoMode_demoUser_available() {
-        createAndSwitchToSecondaryUserWithFlags(UserInfo.FLAG_DEMO);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVICE_DEMO_MODE, 1);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_demoMode_demoUser_restricted_disabledForUser() {
-        createAndSwitchToSecondaryUserWithFlags(UserInfo.FLAG_DEMO);
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(SECONDARY_USER_ID), DISALLOW_FACTORY_RESET, true);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVICE_DEMO_MODE, 1);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    private void createAndSwitchToSecondaryUserWithFlags(int flags) {
-        getShadowUserManager().addUser(SECONDARY_USER_ID, "test name", flags);
-        getShadowUserManager().switchUser(SECONDARY_USER_ID);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
deleted file mode 100644
index b97cb69..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static android.app.Activity.RESULT_CANCELED;
-import static android.app.Activity.RESULT_OK;
-
-import static com.android.car.settings.system.MasterClearFragment.CHECK_LOCK_REQUEST_CODE;
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.R;
-import com.android.car.settings.security.CheckLockActivity;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowAccountManager;
-import com.android.car.settings.testutils.ShadowUserManager;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
-/** Unit test for {@link MasterClearFragment}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAccountManager.class, ShadowUserManager.class})
-public class MasterClearFragmentTest {
-
-    private MasterClearFragment mFragment;
-
-    @Before
-    public void setUp() {
-        // Setup needed by instantiated PreferenceControllers.
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        int userId = UserHandle.myUserId();
-        Shadows.shadowOf(UserManager.get(context)).addUser(userId, "User Name", /* flags= */ 0);
-        Shadows.shadowOf(UserManager.get(context)).addProfile(userId, userId,
-                "Profile Name", /* profileFlags= */ 0);
-        Shadows.shadowOf(context.getPackageManager())
-                .setSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true);
-
-        mFragment = FragmentController.of(new MasterClearFragment()).setup();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void masterClearButtonClicked_launchesCheckLockActivity() {
-        MenuItem masterClearButton = findMasterClearButton(mFragment.requireActivity());
-        masterClearButton.setEnabled(true);
-        masterClearButton.performClick();
-
-        Intent startedIntent = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(startedIntent.getComponent().getClassName()).isEqualTo(
-                CheckLockActivity.class.getName());
-    }
-
-    @Test
-    public void processActivityResult_resultOk_launchesMasterClearConfirmFragment() {
-        mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_OK, /* data= */ null);
-
-        Fragment launchedFragment = mFragment.getFragmentManager().findFragmentById(
-                R.id.fragment_container);
-
-        assertThat(launchedFragment).isInstanceOf(MasterClearConfirmFragment.class);
-    }
-
-    @Test
-    public void processActivityResult_otherResultCode_doesNothing() {
-        mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_CANCELED, /* data= */ null);
-
-        Fragment launchedFragment = mFragment.getFragmentManager().findFragmentById(
-                R.id.fragment_container);
-
-        assertThat(launchedFragment).isInstanceOf(MasterClearFragment.class);
-    }
-
-    private MenuItem findMasterClearButton(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        return toolbar.getMenuItems().get(0);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java
deleted file mode 100644
index d293a5c..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.users.UserHelper;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.Collections;
-
-/** Unit test for {@link MasterClearOtherUsersPresentPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserHelper.class})
-public class MasterClearOtherUsersPresentPreferenceControllerTest {
-
-    @Mock
-    private UserHelper mUserHelper;
-    private Preference mPreference;
-    private MasterClearOtherUsersPresentPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-
-        Context context = RuntimeEnvironment.application;
-        mPreference = new Preference(context);
-        PreferenceControllerTestHelper<MasterClearOtherUsersPresentPreferenceController>
-                controllerHelper = new PreferenceControllerTestHelper<>(context,
-                MasterClearOtherUsersPresentPreferenceController.class, mPreference);
-        controllerHelper.markState(Lifecycle.State.STARTED);
-        mController = controllerHelper.getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void refreshUi_noSwitchableUsers_hidesPreference() {
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(Collections.emptyList());
-
-        mController.refreshUi();
-
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_switchableUsers_showsPreference() {
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(
-                Collections.singletonList(new UserInfo()));
-
-        mController.refreshUi();
-
-        assertThat(mPreference.isVisible()).isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
deleted file mode 100644
index a434969..0000000
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.SystemProperties;
-import android.provider.Settings;
-
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowEuiccManager;
-
-/** Unit test for {@link MasterClearResetEsimPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-public class MasterClearResetEsimPreferenceControllerTest {
-
-    private Context mContext;
-    private MasterClearResetEsimPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        ((ShadowEuiccManager) Shadow.extract(
-                mContext.getSystemService(Context.EUICC_SERVICE))).setIsEnabled(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
-
-        mController = new PreferenceControllerTestHelper<>(mContext,
-                MasterClearResetEsimPreferenceController.class,
-                new SwitchPreference(mContext)).getController();
-    }
-
-    @After
-    public void tearDown() {
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
-    }
-
-    @Test
-    public void getAvailabilityStatus_showEsimPropertyTrue_available() {
-        SystemProperties.set(MasterClearResetEsimPreferenceController.KEY_SHOW_ESIM_RESET_CHECKBOX,
-                Boolean.TRUE.toString());
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_showEsimPropertyFalse_unsupportedOnDevice() {
-        SystemProperties.set(MasterClearResetEsimPreferenceController.KEY_SHOW_ESIM_RESET_CHECKBOX,
-                Boolean.FALSE.toString());
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java b/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
deleted file mode 100644
index 0e799ec..0000000
--- a/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.os.SystemProperties;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.android.controller.ActivityController;
-import org.robolectric.shadows.ShadowAlertDialog;
-
-/** Unit test for {@link RegulatoryInfoDisplayActivity}. */
-@RunWith(RobolectricTestRunner.class)
-public class RegulatoryInfoDisplayActivityTest {
-
-    private ActivityController<RegulatoryInfoDisplayActivity> mActivityController;
-    private RegulatoryInfoDisplayActivity mActivity;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mActivityController = ActivityController.of(new RegulatoryInfoDisplayActivity());
-        mActivity = mActivityController.get();
-        mActivityController.create();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowAlertDialog.reset();
-    }
-
-    @Test
-    public void getRegulatoryInfoImageFileName_skuIsNotEmpty() {
-        SystemProperties.set("ro.boot.hardware.sku", "test");
-
-        assertThat(mActivity.getRegulatoryInfoImageFileName())
-                .isEqualTo("/data/misc/elabel/regulatory_info_test.png");
-    }
-
-    @Test
-    public void getRegulatoryInfoImageFileName_skuIsEmpty() {
-        SystemProperties.set("ro.boot.hardware.sku", "");
-
-        assertThat(mActivity.getRegulatoryInfoImageFileName())
-                .isEqualTo("/data/misc/elabel/regulatory_info.png");
-    }
-
-    @Test
-    public void getSku_shouldReturnSystemProperty() {
-        String testSku = "test";
-        SystemProperties.set("ro.boot.hardware.sku", testSku);
-
-        assertThat(mActivity.getSku()).isEqualTo(testSku);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
deleted file mode 100644
index f999e48..0000000
--- a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
+++ /dev/null
@@ -1,98 +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.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowEuiccManager;
-
-/** Unit test for {@link ResetEsimPreferenceController}. */
-@Ignore
-@RunWith(RobolectricTestRunner.class)
-public class ResetEsimPreferenceControllerTest {
-
-    private Context mContext;
-    private ResetEsimPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mController = new PreferenceControllerTestHelper<>(mContext,
-                ResetEsimPreferenceController.class,
-                new SwitchPreference(mContext)).getController();
-    }
-
-    @After
-    public void tearDown() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
-    }
-
-    @Test
-    public void getAvailabilityStatus_disabledEuiccManager_unsupportedOnDevice() {
-        getShadowEuiccManager().setIsEnabled(false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccNotProvisioned_unsupportedOnDevice() {
-        getShadowEuiccManager().setIsEnabled(true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccNotProvisioned_developer_available() {
-        getShadowEuiccManager().setIsEnabled(true);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_euiccProvisioned_available() {
-        getShadowEuiccManager().setIsEnabled(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    private ShadowEuiccManager getShadowEuiccManager() {
-        return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
deleted file mode 100644
index bf0b603..0000000
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
+++ /dev/null
@@ -1,240 +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.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.testng.Assert.assertThrows;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.INetworkPolicyManager.Default;
-import android.net.NetworkPolicyManager;
-import android.net.Uri;
-import android.provider.Telephony;
-import android.telephony.SubscriptionManager;
-
-import androidx.preference.PreferenceManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowBluetoothAdapter;
-import com.android.car.settings.testutils.ShadowConnectivityManager;
-import com.android.car.settings.testutils.ShadowNetworkPolicyManager;
-import com.android.car.settings.testutils.ShadowRecoverySystem;
-import com.android.car.settings.testutils.ShadowTelephonyManager;
-import com.android.car.settings.testutils.ShadowWifiManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContentResolver;
-import org.robolectric.shadows.ShadowContextImpl;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {
-        ShadowConnectivityManager.class,
-        ShadowWifiManager.class,
-        ShadowBluetoothAdapter.class,
-        ShadowTelephonyManager.class,
-        ShadowNetworkPolicyManager.class,
-        ShadowRecoverySystem.class
-})
-public class ResetNetworkConfirmFragmentTest {
-
-    private Context mContext;
-    private MenuItem mResetButton;
-    private ContentResolver mContentResolver;
-
-    private FragmentController<ResetNetworkConfirmFragment> mFragmentController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        final NetworkPolicyManager npm = new NetworkPolicyManager(mContext, new Default());
-        ShadowContextImpl shadowContext =
-                Shadow.extract(RuntimeEnvironment.application.getBaseContext());
-        shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, npm);
-
-        mContentResolver = mContext.getContentResolver();
-
-        setEuiccResetCheckbox(false);
-        setNetworkSubscriptionId("");
-
-        Robolectric.getForegroundThreadScheduler().pause();
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        ResetNetworkConfirmFragment fragment = new ResetNetworkConfirmFragment();
-
-        mFragmentController = FragmentController.of(fragment);
-        mFragmentController.setup();
-
-        ToolbarController toolbar = requireToolbar(fragment.getActivity());
-        mResetButton = toolbar.getMenuItems().get(0);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowConnectivityManager.reset();
-        ShadowWifiManager.reset();
-        ShadowBluetoothAdapter.reset();
-        ShadowRecoverySystem.reset();
-        ShadowTelephonyManager.reset();
-        ShadowNetworkPolicyManager.reset();
-        ShadowContentResolver.reset();
-    }
-
-    @Test
-    public void testResetButtonClick_connectivityManagerReset() {
-        mResetButton.performClick();
-        assertThat(ShadowConnectivityManager.verifyFactoryResetCalled(/* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_wifiManagerReset() {
-        mResetButton.performClick();
-        assertThat(ShadowWifiManager.verifyFactoryResetCalled(/* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_bluetoothAdapterReset() {
-        mResetButton.performClick();
-        assertThat(ShadowBluetoothAdapter.verifyFactoryResetCalled(/* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_cleanSmsRawTable() {
-        mResetButton.performClick();
-        assertThat(getUriWithGivenPrefix(Shadows.shadowOf(mContentResolver).getDeletedUris(),
-                Telephony.Sms.CONTENT_URI)).isNotNull();
-    }
-
-    @Test
-    public void testResetButtonClick_euiccResetEnabled_euiccReset() {
-        setEuiccResetCheckbox(true);
-        mResetButton.performClick();
-        assertThat(ShadowRecoverySystem.verifyWipeEuiccDataCalled(/* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_euiccResetDisabled_euiccNotReset() {
-        setEuiccResetCheckbox(false);
-        mResetButton.performClick();
-        assertThat(ShadowRecoverySystem.verifyWipeEuiccDataCalled(/* numTimes= */ 1)).isFalse();
-    }
-
-    @Test
-    public void testResetButtonClick_nonIntegerNetworkSubscriptionId_numberExceptionError() {
-        setNetworkSubscriptionId("abc");
-        assertThrows(NumberFormatException.class, () -> mResetButton.performClick());
-    }
-
-    @Test
-    public void testResetButtonClick_emptyNetworkSubscriptionId_telephonyNotReset() {
-        setNetworkSubscriptionId("");
-        mResetButton.performClick();
-        assertThat(ShadowTelephonyManager.verifyFactoryResetCalled(
-                SubscriptionManager.INVALID_SUBSCRIPTION_ID, /* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_validNetworkSubscriptionId_telephonyReset() {
-        setNetworkSubscriptionId("123");
-        mResetButton.performClick();
-        assertThat(
-                ShadowTelephonyManager.verifyFactoryResetCalled(123, /* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_emptyNetworkSubscriptionId_networkManagerNotReset() {
-        setNetworkSubscriptionId("");
-        mResetButton.performClick();
-        assertThat(ShadowNetworkPolicyManager.verifyFactoryResetCalled(null,
-                /* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_validNetworkSubscriptionId_networkManagerReset() {
-        setNetworkSubscriptionId("123");
-        mResetButton.performClick();
-        assertThat(ShadowNetworkPolicyManager.verifyFactoryResetCalled(
-                ShadowTelephonyManager.SUBSCRIBER_ID, /* numTimes= */ 1)).isTrue();
-    }
-
-    @Test
-    public void testResetButtonClick_emptyNetworkSubscriptionId_noRestoreDefaultApn() {
-        setNetworkSubscriptionId("");
-        mResetButton.performClick();
-        Uri uri = getUriWithGivenPrefix(Shadows.shadowOf(mContentResolver).getDeletedUris(),
-                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
-        assertThat(uri).isNotNull();
-        assertThat(uri.toString().contains("subId/")).isFalse();
-    }
-
-    @Test
-    public void testResetButtonClick_validNetworkSubscriptionId_restoreDefaultApn() {
-        setNetworkSubscriptionId("123");
-        mResetButton.performClick();
-        Uri uri = getUriWithGivenPrefix(Shadows.shadowOf(mContentResolver).getDeletedUris(),
-                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
-        assertThat(uri).isNotNull();
-        assertThat(uri.toString().contains("subId/123")).isTrue();
-    }
-
-    private Uri getUriWithGivenPrefix(List<Uri> uris, String prefix) {
-        for (Uri uri : uris) {
-            if (uri.toString().startsWith(prefix)) return uri;
-        }
-        return null;
-    }
-
-    private Uri getUriWithGivenPrefix(List<Uri> uris, Uri prefix) {
-        for (Uri uri : uris) {
-            if (uri.isPathPrefixMatch(prefix)) return uri;
-        }
-        return null;
-    }
-
-    private void setEuiccResetCheckbox(boolean isChecked) {
-        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
-                mContext.getString(R.string.pk_reset_esim), isChecked).commit();
-    }
-
-    private void setNetworkSubscriptionId(String id) {
-        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(
-                mContext.getString(R.string.pk_reset_network_subscription), id).commit();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
deleted file mode 100644
index e52b3d5..0000000
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,87 +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.
- */
-
-package com.android.car.settings.system;
-
-import static android.os.UserManager.DISALLOW_NETWORK_RESET;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowUserManager;
-
-/** Unit test for {@link ResetNetworkEntryPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class ResetNetworkEntryPreferenceControllerTest {
-
-    private ResetNetworkEntryPreferenceController mController;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-
-        mController = new PreferenceControllerTestHelper<>(
-                mContext,
-                ResetNetworkEntryPreferenceController.class,
-                new Preference(mContext)).getController();
-    }
-
-    @Test
-    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
-        getShadowUserManager().setIsAdminUser(false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void getAvailabilityStatus_adminUser_available() {
-        getShadowUserManager().setIsAdminUser(true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_adminUser_restricted_disabledForUser() {
-        getShadowUserManager().setIsAdminUser(true);
-        getShadowUserManager().setUserRestriction(
-                UserHandle.of(UserHandle.myUserId()), DISALLOW_NETWORK_RESET, true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
deleted file mode 100644
index b95b541..0000000
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
+++ /dev/null
@@ -1,353 +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.
- */
-
-package com.android.car.settings.system;
-
-import static android.telephony.SubscriptionManager.MIN_SUBSCRIPTION_ID_VALUE;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.ListPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowPackageManager;
-import org.robolectric.shadows.ShadowSubscriptionManager;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-/** Unit test for {@link ResetNetworkSubscriptionPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class ResetNetworkSubscriptionPreferenceControllerTest {
-
-    private static final int SUBID_1 = MIN_SUBSCRIPTION_ID_VALUE;
-    private static final int SUBID_2 = SUBID_1 + 1;
-    private static final int SUBID_3 = SUBID_2 + 1;
-    private static final int SUBID_4 = SUBID_3 + 1;
-
-    private Context mContext;
-    private ShadowSubscriptionManager mShadowSubscriptionManager;
-    private ListPreference mListPreference;
-    private PreferenceControllerTestHelper<ResetNetworkSubscriptionPreferenceController>
-            mPreferenceControllerHelper;
-    private ResetNetworkSubscriptionPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mShadowSubscriptionManager = Shadow.extract(
-                mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE));
-
-        mListPreference = new ListPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                ResetNetworkSubscriptionPreferenceController.class, mListPreference);
-        mController = mPreferenceControllerHelper.getController();
-
-        // Default to AVAILABLE status. Tests for this behavior will do their own setup.
-        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
-        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
-                true);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_telephonyAvailable_available() {
-        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
-        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
-                true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_telephonyNotAvailable_unsupportedOnDevice() {
-        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
-        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
-                false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void refreshUi_nullSubscriptions_hidesPreference() {
-        mController.refreshUi();
-
-        assertThat(mListPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_nullSubscriptions_setsValue() {
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(
-                String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
-    }
-
-    @Test
-    public void refreshUi_noSubscriptions_hidesPreference() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_noSubscriptions_setsValue() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(
-                String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
-    }
-
-    @Test
-    public void refreshUi_oneSubscription_hidesPreference() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_oneSubscription_setsValue() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
-    }
-
-    @Test
-    public void refreshUi_multipleSubscriptions_showsPreference() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.isVisible()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_multipleSubscriptions_populatesEntries() {
-        String displayName1 = "sub1";
-        String displayName2 = "sub2";
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, displayName1),
-                        createSubInfo(SUBID_2, displayName2)));
-
-        mController.refreshUi();
-
-        assertThat(Arrays.asList(mListPreference.getEntries())).containsExactly(displayName1,
-                displayName2);
-        assertThat(Arrays.asList(mListPreference.getEntryValues())).containsExactly(
-                String.valueOf(SUBID_1),
-                String.valueOf(SUBID_2));
-    }
-
-    @Test
-    public void refreshUi_defaultSelection_fourthPriority_system() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
-                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
-
-        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_4));
-    }
-
-    @Test
-    public void refreshUi_defaultSelection_thirdPriority_sms() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
-                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
-
-        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_3));
-    }
-
-    @Test
-    public void refreshUi_defaultSelection_secondPriority_voice() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
-                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
-
-        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_2));
-    }
-
-    @Test
-    public void refreshUi_defaultSelection_firstPriority_data() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
-                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
-
-        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
-        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
-        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-        mController.refreshUi();
-
-        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
-    }
-
-    @Test
-    public void refreshUi_title_fourthPriority_subscriptionNetworkIds() {
-        SubscriptionInfo subInfo = createSubInfo(
-                SUBID_1,
-                /* displayName= */ "",
-                /* carrierName= */ "",
-                /* number= */ "");
-        // Multiple subscriptions so that preference is shown / title is set.
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-
-        mController.refreshUi();
-
-        String title = mListPreference.getTitle().toString();
-        assertThat(title).contains(String.valueOf(subInfo.getMcc()));
-        assertThat(title).contains(String.valueOf(subInfo.getMnc()));
-        assertThat(title).contains(String.valueOf(subInfo.getSimSlotIndex()));
-        assertThat(title).contains(String.valueOf(subInfo.getSubscriptionId()));
-    }
-
-    @Test
-    public void refreshUi_title_thirdPriority_subscriptionCarrierName() {
-        SubscriptionInfo subInfo = createSubInfo(
-                SUBID_1,
-                /* displayName= */ "",
-                "carrierName",
-                /* number= */ "");
-        // Multiple subscriptions so that preference is shown / title is set.
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getCarrierName());
-    }
-
-    @Test
-    public void refreshUi_title_secondPriority_subscriptionNumber() {
-        SubscriptionInfo subInfo = createSubInfo(
-                SUBID_1,
-                /* displayName= */ "",
-                "carrierName",
-                "number");
-        // Multiple subscriptions so that preference is shown / title is set.
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getNumber());
-    }
-
-    @Test
-    public void refreshUi_title_firstPriority_subscriptionDisplayName() {
-        SubscriptionInfo subInfo = createSubInfo(
-                SUBID_1,
-                "displayName",
-                "carrierName",
-                "number");
-        // Multiple subscriptions so that preference is shown / title is set.
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-
-        mController.refreshUi();
-
-        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getDisplayName());
-    }
-
-    @Test
-    public void handlePreferenceChanged_updatesTitle() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-        mController.refreshUi();
-
-        mListPreference.callChangeListener(String.valueOf(SUBID_2));
-
-        assertThat(mListPreference.getTitle()).isEqualTo("sub2");
-    }
-
-    @Test
-    public void handlePreferenceChanged_returnsTrue() {
-        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
-                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
-        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
-        mController.refreshUi();
-
-        assertThat(mController.handlePreferenceChanged(mListPreference,
-                String.valueOf(SUBID_2))).isTrue();
-    }
-
-    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
-    private SubscriptionInfo createSubInfo(int subId, String displayName) {
-        return createSubInfo(subId, displayName, "carrierName", "number");
-    }
-
-    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
-    private SubscriptionInfo createSubInfo(int subId, String displayName, String carrierName,
-            String number) {
-        // Hidden constructor so resort to mocking.
-        SubscriptionInfo subscriptionInfo = mock(SubscriptionInfo.class);
-        when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
-        when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
-        when(subscriptionInfo.getCarrierName()).thenReturn(carrierName);
-        when(subscriptionInfo.getNumber()).thenReturn(number);
-        when(subscriptionInfo.getSimSlotIndex()).thenReturn(111);
-        when(subscriptionInfo.getMcc()).thenReturn(222);
-        when(subscriptionInfo.getMnc()).thenReturn(333);
-        return subscriptionInfo;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
deleted file mode 100644
index 8a9b2b0..0000000
--- a/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
+++ /dev/null
@@ -1,171 +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.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.ResolveInfo;
-import android.content.pm.UserInfo;
-import android.os.PersistableBundle;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarrierConfigManager;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowPackageManager;
-
-import java.util.List;
-
-/** Unit test for {@link SystemUpdatePreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarrierConfigManager.class})
-public class SystemUpdatePreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<SystemUpdatePreferenceController> mControllerHelper;
-    private SystemUpdatePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                SystemUpdatePreferenceController.class, mPreference);
-        mController = mControllerHelper.getController();
-    }
-
-    @Test
-    public void getAvailabilityStatus_adminUser_available() {
-        setCurrentUserWithFlags(UserInfo.FLAG_ADMIN);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
-        setCurrentUserWithFlags(/* flags= */ 0);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
-    }
-
-    @Test
-    public void onCreate_setsActivityLabelAsTitle() {
-        ApplicationInfo applicationInfo = new ApplicationInfo();
-        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
-
-        ActivityInfo activityInfo = new ActivityInfo();
-        activityInfo.applicationInfo = applicationInfo;
-        activityInfo.packageName = "some.test.package";
-        activityInfo.name = "SomeActivity";
-
-        String label = "Activity Label";
-        ResolveInfo resolveInfo = new ResolveInfo();
-        resolveInfo.nonLocalizedLabel = label;
-        resolveInfo.activityInfo = activityInfo;
-
-        Intent intent = new Intent();
-        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
-        packageManager.addResolveInfoForIntent(intent, resolveInfo);
-        mPreference.setIntent(intent);
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-
-        assertThat(mPreference.getTitle()).isEqualTo(label);
-    }
-
-    @Test
-    public void refreshUi_activityNotFount_hidesPreference() {
-        mPreference.setIntent(new Intent());
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        mController.refreshUi();
-
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void preferenceClicked_triggersClientInitiatedAction() {
-        // Arrange
-        String action = "action";
-        String key = "key";
-        String value = "value";
-
-        PersistableBundle config = new PersistableBundle();
-        config.putBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL, true);
-        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING, action);
-        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING, key);
-        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING, value);
-
-        getShadowCarrierConfigManager().setConfigForSubId(
-                SubscriptionManager.getDefaultSubscriptionId(), config);
-
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        // Act
-        mPreference.performClick();
-
-        // Assert
-        List<Intent> broadcasts = ShadowApplication.getInstance().getBroadcastIntents();
-        assertThat(broadcasts).hasSize(1);
-        Intent broadcast = broadcasts.get(0);
-        assertThat(broadcast.getAction()).isEqualTo(action);
-        assertThat(broadcast.getStringExtra(key)).isEqualTo(value);
-    }
-
-    @Test
-    public void preferenceClicked_handledReturnsFalse() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        assertThat(mPreference.getOnPreferenceClickListener().onPreferenceClick(
-                mPreference)).isFalse();
-    }
-
-    private ShadowCarrierConfigManager getShadowCarrierConfigManager() {
-        return Shadow.extract(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE));
-    }
-
-    private void setCurrentUserWithFlags(int flags) {
-        Shadows.shadowOf(UserManager.get(mContext))
-                .addUser(UserHandle.myUserId(), "test name", flags);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
deleted file mode 100644
index 6fbe41c..0000000
--- a/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system.legal;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowPackageManager;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-/** Unit test for {@link LegalPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class LegalPreferenceControllerTest {
-    private static class TestLegalPreferenceControllerTest extends
-            LegalPreferenceController {
-
-        private static final Intent INTENT = new Intent("test_intent");
-
-        TestLegalPreferenceControllerTest(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected Intent getIntent() {
-            return INTENT;
-        }
-    }
-
-    private static final String TEST_LABEL = "test_label";
-    private Context mContext;
-    private PreferenceControllerTestHelper<TestLegalPreferenceControllerTest> mControllerHelper;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new Preference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TestLegalPreferenceControllerTest.class, mPreference);
-    }
-
-    @Test
-    public void refreshUi_intentResolvesToActivity_isVisible() {
-        Intent intent = mControllerHelper.getController().getIntent();
-
-        ActivityInfo activityInfo = new ActivityInfo();
-        activityInfo.packageName = "some.test.package";
-        activityInfo.name = "SomeActivity";
-        activityInfo.applicationInfo = new ApplicationInfo();
-        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-
-        ResolveInfo resolveInfo = new ResolveInfo() {
-            @Override
-            public CharSequence loadLabel(PackageManager pm) {
-                return TEST_LABEL;
-            }
-        };
-        resolveInfo.activityInfo = activityInfo;
-        List<ResolveInfo> list = new LinkedList();
-        list.add(resolveInfo);
-
-        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
-        packageManager.addResolveInfoForIntent(intent, list);
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreference.isVisible()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_intentResolvesToActivity_updatesTitle() {
-        Intent intent = mControllerHelper.getController().getIntent();
-
-        ActivityInfo activityInfo = new ActivityInfo();
-        activityInfo.packageName = "some.test.package";
-        activityInfo.name = "SomeActivity";
-        activityInfo.applicationInfo = new ApplicationInfo();
-        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-        activityInfo.applicationInfo.nonLocalizedLabel = TEST_LABEL;
-
-        ResolveInfo resolveInfo = new ResolveInfo();
-        resolveInfo.activityInfo = activityInfo;
-
-        List<ResolveInfo> list = new LinkedList();
-        list.add(resolveInfo);
-
-        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
-        packageManager.addResolveInfoForIntent(intent, list);
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreference.getTitle()).isEqualTo(TEST_LABEL);
-    }
-
-    @Test
-    public void refreshUi_intentResolvesToActivity_updatesIntentToSpecificActivity() {
-        Intent intent = mControllerHelper.getController().getIntent();
-
-        String packageName = "com.android.car.settings.testutils";
-        String activityName = "BaseTestActivity";
-
-        ActivityInfo activityInfo = new ActivityInfo();
-        activityInfo.packageName = packageName;
-        activityInfo.name = activityName;
-        activityInfo.applicationInfo = new ApplicationInfo();
-        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-
-        ResolveInfo resolveInfo = new ResolveInfo() {
-            @Override
-            public CharSequence loadLabel(PackageManager pm) {
-                return TEST_LABEL;
-            }
-        };
-        resolveInfo.activityInfo = activityInfo;
-        List<ResolveInfo> list = new LinkedList();
-        list.add(resolveInfo);
-
-        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
-        packageManager.addResolveInfoForIntent(intent, list);
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreference.getIntent().getComponent().flattenToString()).isEqualTo(
-                packageName + "/" + activityName);
-    }
-
-    @Test
-    public void refreshUi_intentResolvesToNull_isNotVisible() {
-        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
-
-        packageManager.addResolveInfoForIntent(mControllerHelper.getController().getIntent(),
-                Collections.emptyList());
-
-        mControllerHelper.markState(Lifecycle.State.CREATED);
-        mControllerHelper.getController().refreshUi();
-
-        assertThat(mPreference.isVisible()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java b/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
index 14cd29f..198beb5 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.car.settings.testutils;
 
+import static com.android.car.ui.core.CarUi.requireToolbar;
+
 import android.car.drivingstate.CarUxRestrictions;
 import android.os.Bundle;
 
@@ -26,6 +28,7 @@
 import com.android.car.settings.R;
 import com.android.car.settings.common.FragmentHost;
 import com.android.car.settings.common.UxRestrictionsProvider;
+import com.android.car.ui.toolbar.ToolbarController;
 
 /**
  * Test activity used for testing {@code BaseFragment} instances.
@@ -68,6 +71,11 @@
     }
 
     @Override
+    public ToolbarController getToolbar() {
+        return requireToolbar(this);
+    }
+
+    @Override
     public CarUxRestrictions getCarUxRestrictions() {
         return mRestrictionInfo;
     }
diff --git a/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java b/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java
deleted file mode 100644
index 8fbaa57..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.testutils;
-
-import android.os.Bundle;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.ui.toolbar.Toolbar;
-import com.android.car.ui.toolbar.ToolbarController;
-
-/**
- * Empty Fragment.
- */
-public class DummyFragment extends SettingsFragment {
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.settings_fragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        ToolbarController toolbar = getToolbar();
-        if (toolbar != null) {
-            // If the fragment is root, change the back button to settings icon.
-            if (getContext().getResources().getBoolean(R.bool.config_is_dummy_fragment_root)) {
-                toolbar.setState(Toolbar.State.HOME);
-                toolbar.setLogo(getContext().getResources()
-                        .getBoolean(R.bool.config_show_settings_root_exit_icon)
-                        ? R.drawable.ic_launcher_settings
-                        : 0);
-            } else {
-                toolbar.setState(Toolbar.State.SUBPAGE);
-            }
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
deleted file mode 100644
index da32d39..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
+++ /dev/null
@@ -1,75 +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.
- */
-
-package com.android.car.settings.testutils;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.pm.UserInfo;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.Resetter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Shadow for {@link CarUserManagerHelper}
- */
-@Implements(CarUserManagerHelper.class)
-public class ShadowCarUserManagerHelper {
-    // First Map keys from user id to map of restrictions. Second Map keys from restriction id to
-    // bool.
-    private static Map<Integer, Map<String, Boolean>> sUserRestrictionMap = new HashMap<>();
-    private static CarUserManagerHelper sMockInstance;
-
-    public static void setMockInstance(CarUserManagerHelper userManagerHelper) {
-        sMockInstance = userManagerHelper;
-    }
-
-    @Resetter
-    public static void reset() {
-        sMockInstance = null;
-        sUserRestrictionMap.clear();
-    }
-
-    @Implementation
-    protected UserInfo createNewNonAdminUser(String userName) {
-        return sMockInstance.createNewNonAdminUser(userName);
-    }
-
-    @Implementation
-    protected void grantAdminPermissions(UserInfo user) {
-        sMockInstance.grantAdminPermissions(user);
-    }
-
-    @Implementation
-    protected void setUserRestriction(UserInfo userInfo, String restriction, boolean enable) {
-        Map<String, Boolean> permissionsMap = sUserRestrictionMap.getOrDefault(userInfo.id,
-                new HashMap<>());
-        permissionsMap.put(restriction, enable);
-        sUserRestrictionMap.put(userInfo.id, permissionsMap);
-    }
-
-    @Implementation
-    protected boolean hasUserRestriction(String restriction, UserInfo userInfo) {
-        // False by default, if nothing was added to our map,
-        if (!sUserRestrictionMap.containsKey(userInfo.id)) {
-            return false;
-        }
-        return sUserRestrictionMap.get(userInfo.id).getOrDefault(restriction, false);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java
index b875b83..f008c4f 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java
@@ -21,7 +21,7 @@
 import android.net.wifi.WifiManager;
 
 import com.android.car.settings.wifi.CarWifiManager;
-import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifitrackerlib.WifiEntry;
 
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
@@ -107,24 +107,13 @@
     }
 
     @Implementation
-    public List<AccessPoint> getAllAccessPoints() {
-        return sInstance.getAllAccessPoints();
+    public List<WifiEntry> getAllWifiEntries() {
+        return sInstance.getAllWifiEntries();
     }
 
     @Implementation
-    public List<AccessPoint> getSavedAccessPoints() {
-        return sInstance.getSavedAccessPoints();
-    }
-
-    @Implementation
-    public void connectToPublicWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
-        sInstance.connectToPublicWifi(accessPoint, listener);
-    }
-
-    @Implementation
-    protected void connectToSavedWifi(AccessPoint accessPoint,
-            WifiManager.ActionListener listener) {
-        sInstance.connectToSavedWifi(accessPoint, listener);
+    public List<WifiEntry> getSavedWifiEntries() {
+        return sInstance.getSavedWifiEntries();
     }
 
     @Implementation
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserHelper.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserHelper.java
index 749cba1..2e9799f 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserHelper.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserHelper.java
@@ -20,7 +20,7 @@
 import android.content.Context;
 import android.content.pm.UserInfo;
 
-import com.android.car.settings.users.UserHelper;
+import com.android.car.settings.profiles.ProfileHelper;
 
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
@@ -30,14 +30,14 @@
 import java.util.function.Predicate;
 
 /**
- * Shadow for {@link UserHelper}.
+ * Shadow for {@link ProfileHelper}.
  */
-@Implements(UserHelper.class)
+@Implements(ProfileHelper.class)
 public class ShadowUserHelper {
-    private static UserHelper sInstance;
+    private static ProfileHelper sInstance;
 
-    public static void setInstance(UserHelper userHelper) {
-        sInstance = userHelper;
+    public static void setInstance(ProfileHelper profileHelper) {
+        sInstance = profileHelper;
     }
 
     @Resetter
@@ -52,18 +52,18 @@
 
     @Implementation
     protected List<UserInfo> getAllUsers() {
-        return sInstance.getAllUsers();
+        return sInstance.getAllProfiles();
     }
 
     @Implementation
     protected List<UserInfo> getAllSwitchableUsers() {
-        return sInstance.getAllSwitchableUsers();
+        return sInstance.getAllSwitchableProfiles();
     }
 
 
     @Implementation
     protected List<UserInfo> getAllPersistentUsers() {
-        return sInstance.getAllPersistentUsers();
+        return sInstance.getAllPersistentProfiles();
     }
 
     @Implementation
@@ -77,8 +77,9 @@
     }
 
     @Implementation
-    public boolean removeUser(Context context, UserInfo userInfo) {
-        return sInstance.removeUser(context, userInfo);
+    @ProfileHelper.RemoveProfileResult
+    public int removeUser(Context context, UserInfo userInfo) {
+        return sInstance.removeProfile(context, userInfo);
     }
 
     @Implementation
@@ -88,6 +89,6 @@
 
     @Implementation
     public List<UserInfo> getAllLivingUsers(@Nullable Predicate<? super UserInfo> filter) {
-        return sInstance.getAllLivingUsers(filter);
+        return sInstance.getAllLivingProfiles(filter);
     }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
index eb99d90..1774bb2 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
@@ -23,12 +23,12 @@
 
 import androidx.core.graphics.drawable.RoundedBitmapDrawable;
 
-import com.android.car.settings.users.UserIconProvider;
+import com.android.car.settings.profiles.ProfileIconProvider;
 
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 
-@Implements(UserIconProvider.class)
+@Implements(ProfileIconProvider.class)
 public class ShadowUserIconProvider {
     @Implementation
     protected RoundedBitmapDrawable getRoundedUserIcon(UserInfo userInfo, Context context) {
diff --git a/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
deleted file mode 100644
index a436c8a..0000000
--- a/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.tts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.speech.tts.TextToSpeech;
-import android.speech.tts.TtsEngines;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowTextToSpeech;
-import com.android.car.settings.testutils.ShadowTtsEngines;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.Arrays;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowTtsEngines.class, ShadowTextToSpeech.class})
-public class PreferredEngineOptionsPreferenceControllerTest {
-    private static final TextToSpeech.EngineInfo OTHER_ENGINE_INFO = new TextToSpeech.EngineInfo();
-    private static final TextToSpeech.EngineInfo CURRENT_ENGINE_INFO =
-            new TextToSpeech.EngineInfo();
-
-    static {
-        OTHER_ENGINE_INFO.label = "Test Engine 1";
-        OTHER_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine1";
-        CURRENT_ENGINE_INFO.label = "Test Engine 2";
-        CURRENT_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine2";
-    }
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<PreferredEngineOptionsPreferenceController>
-            mControllerHelper;
-    private PreferredEngineOptionsPreferenceController mController;
-    private PreferenceGroup mPreferenceGroup;
-    @Mock
-    private TtsEngines mEnginesHelper;
-    @Mock
-    private TextToSpeech mTextToSpeech;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowTtsEngines.setInstance(mEnginesHelper);
-        ShadowTextToSpeech.setInstance(mTextToSpeech);
-
-        mContext = RuntimeEnvironment.application;
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                PreferredEngineOptionsPreferenceController.class, mPreferenceGroup);
-        mController = mControllerHelper.getController();
-
-        when(mEnginesHelper.getEngines()).thenReturn(
-                Arrays.asList(OTHER_ENGINE_INFO, CURRENT_ENGINE_INFO));
-        when(mEnginesHelper.getEngineInfo(OTHER_ENGINE_INFO.name)).thenReturn(OTHER_ENGINE_INFO);
-        when(mEnginesHelper.getEngineInfo(CURRENT_ENGINE_INFO.name)).thenReturn(
-                CURRENT_ENGINE_INFO);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowTtsEngines.reset();
-        ShadowTextToSpeech.reset();
-    }
-
-    @Test
-    public void onCreate_populatesGroup() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
-    }
-
-    @Test
-    public void refreshUi_currentEngineInfoSummarySet() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(
-                mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name).getSummary()).isEqualTo(
-                mContext.getString(R.string.text_to_speech_current_engine));
-    }
-
-    @Test
-    public void refreshUi_otherEngineInfoSummaryEmpty() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name).getSummary()).isEqualTo(
-                "");
-    }
-
-    @Test
-    public void performClick_currentEngine_returnFalse() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        Preference currentEngine = mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name);
-        assertThat(currentEngine.getOnPreferenceClickListener().onPreferenceClick(
-                currentEngine)).isFalse();
-    }
-
-    @Test
-    public void performClick_otherEngine_returnTrue() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
-        assertThat(otherEngine.getOnPreferenceClickListener().onPreferenceClick(
-                otherEngine)).isTrue();
-    }
-
-    @Test
-    public void performClick_otherEngine_initSuccess_changeCurrentEngine() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
-        otherEngine.performClick();
-
-        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
-        assertThat(ShadowTextToSpeech.getLastConstructedEngine()).isEqualTo(OTHER_ENGINE_INFO.name);
-    }
-
-    @Test
-    public void performClick_otherEngine_initFail_keepCurrentEngine() {
-        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
-        otherEngine.performClick();
-
-        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.ERROR);
-        assertThat(ShadowTextToSpeech.getLastConstructedEngine()).isEqualTo(
-                CURRENT_ENGINE_INFO.name);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
deleted file mode 100644
index 52cc56a..0000000
--- a/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.units;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.hardware.CarPropertyValue;
-import android.car.hardware.property.CarPropertyManager;
-import android.content.Context;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.ListPreference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCar;
-import com.android.car.settings.testutils.ShadowCarUnitsManager;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCar.class, ShadowCarUnitsManager.class})
-public class UnitsBasePreferenceControllerTest {
-
-    private static final int TEST_PROPERTY_ID = -1;
-    private static final Unit[] AVAILABLE_UNITS =
-            {UnitsMap.YEAR, UnitsMap.SECS, UnitsMap.NANO_SECS};
-    private static final Unit DEFAULT_UNIT = UnitsMap.YEAR;
-
-    private Context mContext;
-    private ListPreference mPreference;
-    private PreferenceControllerTestHelper<TestUnitsBasePreferenceController> mControllerHelper;
-    private TestUnitsBasePreferenceController mController;
-    private CarUnitsManager mCarUnitsManager;
-
-    @Mock
-    private CarPropertyManager mCarPropertyManager;
-    @Mock
-    private CarPropertyValue mCarPropertyValue;
-
-    private static class TestUnitsBasePreferenceController extends UnitsBasePreferenceController {
-
-        private TestUnitsBasePreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected int getPropertyId() {
-            return TEST_PROPERTY_ID;
-        }
-
-
-        @Override
-        protected Class<ListPreference> getPreferenceType() {
-            return ListPreference.class;
-        }
-    }
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        ShadowCarUnitsManager.setUnitsSupportedByProperty(TEST_PROPERTY_ID, AVAILABLE_UNITS);
-        mCarUnitsManager = new CarUnitsManager(mContext);
-        mCarUnitsManager.setUnitUsedByProperty(TEST_PROPERTY_ID, DEFAULT_UNIT.getId());
-        mPreference = new ListPreference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(
-                mContext, TestUnitsBasePreferenceController.class, mPreference);
-        mController = mControllerHelper.getController();
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarUnitsManager.reset();
-    }
-
-
-    @Test
-    public void onCreate_connectsCarUnitsManager() {
-        assertThat(ShadowCarUnitsManager.isConnected()).isTrue();
-    }
-
-    @Test
-    public void onCreate_registersCarServiceListener() {
-        assertThat(ShadowCarUnitsManager.getListener())
-                .isEqualTo(mController.mOnCarServiceListener);
-    }
-
-    @Test
-    public void onCreate_preferenceIsConditionallyUnavailable() {
-        assertThat(mController.getAvailabilityStatus())
-                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void onCarServiceConnected_availableUnitsExist_preferenceIsAvailable() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(PreferenceController.AVAILABLE);
-    }
-
-    @Test
-    public void onCarServiceConnected_noAvailableUnits_preferenceIsConditionallyUnavailable() {
-        ShadowCarUnitsManager.setUnitsSupportedByProperty(TEST_PROPERTY_ID, null);
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-
-        assertThat(mController.getAvailabilityStatus())
-                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
-    }
-
-    @Test
-    public void onCarServiceConnected_setsEntriesOfSupportedUnits() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        CharSequence[] expectedEntries = mController.getEntriesOfSupportedUnits();
-
-        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
-    }
-
-    @Test
-    public void onCarServiceConnected_setsSupportedUnitsIdsAsEntryValues() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        CharSequence[] expectedEntryValues = mController.getIdsOfSupportedUnits();
-
-        assertThat(mPreference.getEntryValues()).isEqualTo(expectedEntryValues);
-    }
-
-    @Test
-    public void onCarServiceConnected_setsUnitBeingUsedAsPreferenceValue() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        String expectedValue = Integer.toString(DEFAULT_UNIT.getId());
-
-        assertThat(mPreference.getValue()).isEqualTo(expectedValue);
-    }
-
-    @Test
-    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        mController.handlePreferenceChanged(mPreference, Integer.toString(UnitsMap.SECS.getId()));
-
-        assertThat(mCarUnitsManager.getUnitUsedByProperty(TEST_PROPERTY_ID))
-                .isEqualTo(UnitsMap.SECS);
-    }
-
-    @Test
-    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        Unit newUnit = UnitsMap.SECS;
-        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
-        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
-        mController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
-
-        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
-    }
-
-    @Test
-    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitAbbreviationAsSummary() {
-        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
-        Unit newUnit = UnitsMap.SECS;
-        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
-        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
-        mController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
-
-        assertThat(mPreference.getSummary())
-                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
-    }
-
-    @Test
-    public void onDestroy_disconnectsCarUnitsManager() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(ShadowCarUnitsManager.isConnected()).isFalse();
-    }
-
-    @Test
-    public void onDestroy_unregistersCarServiceListener() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(ShadowCarUnitsManager.getListener()).isNull();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java b/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java
deleted file mode 100644
index 47981a3..0000000
--- a/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java
+++ /dev/null
@@ -1,125 +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.
- */
-
-package com.android.car.settings.users;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.user.CarUserManager;
-import android.car.user.UserCreationResult;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.os.UserManager;
-
-import androidx.annotation.Nullable;
-import androidx.test.InstrumentationRegistry;
-
-import com.android.internal.infra.AndroidFuture;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class AddNewUserTaskTest {
-    @Mock
-    private UserManager mUserManager;
-    @Mock
-    private CarUserManager mCarUserManager;
-    @Mock
-    private AddNewUserTask.AddNewUserListener mAddNewUserListener;
-    @Mock
-    private Context mContext;
-
-    private AddNewUserTask mTask;
-
-    private final Resources mResources = InstrumentationRegistry.getTargetContext().getResources();
-
-    @Before
-    public void createAsyncTask() {
-        MockitoAnnotations.initMocks(this);
-        mTask = new AddNewUserTask(mContext, mCarUserManager, mAddNewUserListener);
-    }
-
-    @Test
-    public void testTaskCallsCreateNewUser() {
-        String newUserName = "Test name";
-        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
-
-        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
-
-        mTask.execute(newUserName);
-        Robolectric.flushBackgroundThreadScheduler();
-
-        verify(mCarUserManager).createUser(newUserName, /* flags= */ 0);
-    }
-
-    @Test
-    public void testSwitchToNewUserIfUserCreated() {
-        String newUserName = "Test name";
-        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
-
-        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
-
-        mTask.execute(newUserName);
-        Robolectric.flushBackgroundThreadScheduler();
-
-        verify(mCarUserManager).switchUser(newUser.id);
-    }
-
-    @Test
-    public void testOnUserAddedSuccessCalledIfUserCreated() {
-        String newUserName = "Test name";
-        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
-
-        mockCreateUser(newUser, UserCreationResult.STATUS_SUCCESSFUL);
-
-        mTask.execute(newUserName);
-        Robolectric.flushBackgroundThreadScheduler();
-
-        verify(mAddNewUserListener).onUserAddedSuccess();
-    }
-
-    @Test
-    public void testOnUserAddedFailureCalledIfNullReturned() {
-        String newUserName = "Test name";
-
-        mockCreateUser(/* user= */ null, UserCreationResult.STATUS_ANDROID_FAILURE);
-
-        mTask.execute(newUserName);
-        Robolectric.flushBackgroundThreadScheduler();
-
-        verify(mAddNewUserListener).onUserAddedFailure();
-    }
-
-    private void mockCreateUser(@Nullable UserInfo user, int status) {
-        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
-        when(mContext.getResources()).thenReturn(mResources);
-
-        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
-        future.complete(new UserCreationResult(status,
-                user, /* errorMessage= */ null));
-        when(mCarUserManager.createUser(anyString(), anyInt())).thenReturn(future);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/BroadcastReceiverHelpers.java b/tests/robotests/src/com/android/car/settings/users/BroadcastReceiverHelpers.java
deleted file mode 100644
index 8b09e0e..0000000
--- a/tests/robotests/src/com/android/car/settings/users/BroadcastReceiverHelpers.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.users;
-
-import static junit.framework.Assert.fail;
-
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.BroadcastReceiver;
-import android.content.IntentFilter;
-
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.List;
-
-public class BroadcastReceiverHelpers {
-
-    private BroadcastReceiverHelpers() { }
-
-    public static BroadcastReceiver getRegisteredReceiverWithActions(List<String> actions) {
-        ShadowApplication.Wrapper wrapper = getRegisteredReceiverWrapperWithActions(actions);
-        return wrapper == null ? null : wrapper.broadcastReceiver;
-    }
-
-    private static ShadowApplication.Wrapper getRegisteredReceiverWrapperWithActions(
-            List<String> actions) {
-        List<ShadowApplication.Wrapper> registeredReceivers =
-                shadowOf(RuntimeEnvironment.application).getRegisteredReceivers();
-        if (registeredReceivers.isEmpty()) {
-            return null;
-        }
-        ShadowApplication.Wrapper returnWrapper = null;
-        for (ShadowApplication.Wrapper wrapper : registeredReceivers) {
-            if (matchesActions(wrapper.getIntentFilter(), actions)) {
-                if (returnWrapper == null) {
-                    returnWrapper = wrapper;
-                } else {
-                    fail("There are multiple receivers registered with this IntentFilter. "
-                            + "This util method cannot handle multiple receivers.");
-                }
-            }
-        }
-        return returnWrapper;
-    }
-
-    private static boolean matchesActions(IntentFilter filter, List<String> actions) {
-        if (filter.countActions() != actions.size()) {
-            return false;
-        }
-
-        for (String action : actions) {
-            if (!filter.matchAction(action)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java
deleted file mode 100644
index 4a4d8f5..0000000
--- a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java
+++ /dev/null
@@ -1,80 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.pm.UserInfo;
-
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.settings.testutils.ShadowUserManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
-/**
- * Tests for ChooseNewAdminFragment.
- */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserManager.class})
-public class ChooseNewAdminFragmentTest {
-
-    private static final UserInfo TEST_ADMIN_USER = new UserInfo(/* id= */ 10,
-            "TEST_USER_NAME", /* flags= */ 0);
-
-    private FragmentController<ChooseNewAdminFragment> mFragmentController;
-    private ChooseNewAdminFragment mFragment;
-
-    @Before
-    public void setUpTestActivity() {
-        MockitoAnnotations.initMocks(this);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mFragment = ChooseNewAdminFragment.newInstance(TEST_ADMIN_USER);
-        mFragmentController = FragmentController.of(mFragment);
-        mFragmentController.setup();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void testBackButtonPressed_whenRemoveCancelled() {
-        MenuItem actionButton = ((ToolbarController) requireToolbar(mFragment.requireActivity()))
-                .getMenuItems().get(0);
-
-        actionButton.performClick();
-        assertThat(((BaseTestActivity) mFragment.requireActivity()).getOnBackPressedFlag())
-                .isTrue();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java
deleted file mode 100644
index bb65a4a..0000000
--- a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java
+++ /dev/null
@@ -1,151 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertThrows;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.ErrorDialog;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.settings.testutils.ShadowUserManager;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class,
-        ShadowUserManager.class, ShadowUserHelper.class})
-public class ChooseNewAdminPreferenceControllerTest {
-
-    private static final UserInfo TEST_ADMIN_USER = new UserInfo(/* id= */ 10,
-            "TEST_USER_NAME", /* flags= */ 0);
-    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
-            "TEST_OTHER_NAME", /* flags= */ 0);
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<ChooseNewAdminPreferenceController> mControllerHelper;
-    private ChooseNewAdminPreferenceController mController;
-    private ConfirmationDialogFragment mDialog;
-    @Mock
-    private CarUserManagerHelper mCarUserManagerHelper;
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        MockitoAnnotations.initMocks(this);
-        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                ChooseNewAdminPreferenceController.class);
-        mController = mControllerHelper.getController();
-        mController.setAdminInfo(TEST_ADMIN_USER);
-        mControllerHelper.setPreference(new LogicalPreferenceGroup(mContext));
-        mDialog = new ConfirmationDialogFragment.Builder(mContext).build();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarUserManagerHelper.reset();
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
-        when(mControllerHelper.getMockFragmentController().findDialogByTag(
-                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mDialog.getConfirmListener()).isNotNull();
-    }
-
-    @Test
-    public void testCheckInitialized_noAdminInfoSet_throwsError() {
-        assertThrows(IllegalStateException.class,
-                () -> new PreferenceControllerTestHelper<>(mContext,
-                        ChooseNewAdminPreferenceController.class,
-                        new LogicalPreferenceGroup(mContext)));
-    }
-
-    @Test
-    public void testUserClicked_opensDialog() {
-        mController.userClicked(/* userToMakeAdmin= */ TEST_OTHER_USER);
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                eq(ConfirmationDialogFragment.TAG));
-    }
-
-    @Test
-    public void testAssignNewAdminAndRemoveOldAdmin_grantAdminCalled() {
-        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
-
-        verify(mCarUserManagerHelper).grantAdminPermissions(TEST_OTHER_USER);
-    }
-
-    @Test
-    public void testAssignNewAdminAndRemoveOldAdmin_removeUserCalled() {
-        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
-
-        verify(mUserHelper).removeUser(any(Context.class), eq(TEST_ADMIN_USER));
-    }
-
-    @Test
-    public void testAssignNewAdminAndRemoveOldAdmin_success_noErrorDialog() {
-        when(mUserHelper.removeUser(any(Context.class), eq(TEST_ADMIN_USER))).thenReturn(true);
-
-        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
-
-        verify(mControllerHelper.getMockFragmentController(), never()).showDialog(
-                any(ErrorDialog.class), any());
-    }
-
-    @Test
-    public void testAssignNewAdminAndRemoveOldAdmin_failure_errorDialog() {
-        when(mUserHelper.removeUser(any(Context.class), eq(TEST_ADMIN_USER))).thenReturn(false);
-
-        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(any(ErrorDialog.class),
-                any());
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java
deleted file mode 100644
index b9dd231..0000000
--- a/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,157 +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.
- */
-
-package com.android.car.settings.users;
-
-import static android.content.pm.UserInfo.FLAG_ADMIN;
-import static android.content.pm.UserInfo.FLAG_INITIALIZED;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.ui.preference.CarUiTwoActionIconPreference;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
-public class EditUserNameEntryPreferenceControllerTest {
-
-    private static final String TEST_USERNAME = "Test Username";
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<EditUserNameEntryPreferenceController>
-            mPreferenceControllerHelper;
-    private EditUserNameEntryPreferenceController mController;
-    private CarUiTwoActionIconPreference mButtonPreference;
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mContext = RuntimeEnvironment.application;
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                EditUserNameEntryPreferenceController.class);
-        mController = mPreferenceControllerHelper.getController();
-        mController.setUserInfo(new UserInfo());
-        mButtonPreference = new CarUiTwoActionIconPreference(mContext);
-        mButtonPreference.setSelectable(false);
-        mPreferenceControllerHelper.setPreference(mButtonPreference);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void testOnButtonClick_isCurrentUser_launchesEditUsernameFragment() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
-        when(mUserHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mButtonPreference.performSecondaryActionClick();
-        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
-                any(EditUsernameFragment.class));
-    }
-
-    @Test
-    public void testOnButtonClick_isNotCurrentUser_doesNothing() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
-        when(mUserHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mButtonPreference.performSecondaryActionClick();
-        verify(mPreferenceControllerHelper.getMockFragmentController(), never()).launchFragment(
-                any(EditUsernameFragment.class));
-    }
-
-    @Test
-    public void testRefreshUi_elementHasTitle() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
-        when(mUserHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-        assertThat(mButtonPreference.getTitle()).isEqualTo(TEST_USERNAME);
-    }
-
-    @Test
-    public void testRefreshUi_userNotSetup_setsSummary() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-        assertThat(mButtonPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.user_summary_not_set_up));
-    }
-
-    @Test
-    public void testRefreshUi_userSetup_noSummary() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-        assertThat(mButtonPreference.getSummary()).isNull();
-    }
-
-    @Test
-    public void testRefreshUi_isAdmin_notCurrentUser() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME,
-                FLAG_INITIALIZED | FLAG_ADMIN);
-        when(mUserHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-        assertThat(mButtonPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.user_admin));
-    }
-
-    @Test
-    public void testRefreshUi_isAdmin_currentUser() {
-        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME,
-                FLAG_INITIALIZED | FLAG_ADMIN);
-        when(mUserHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
-        mController.setUserInfo(userInfo);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mController.refreshUi();
-        assertThat(mButtonPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.signed_in_admin_user));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java
deleted file mode 100644
index 6417d0b..0000000
--- a/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java
+++ /dev/null
@@ -1,146 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import android.content.pm.UserInfo;
-import android.os.UserManager;
-import android.widget.EditText;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.BaseTestActivity;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-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.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-
-/**
- * Tests for EditUsernameFragment.
- */
-@RunWith(RobolectricTestRunner.class)
-public class EditUsernameFragmentTest {
-    @Rule
-    public MockitoRule mockitoRule = MockitoJUnit.rule();
-
-    @Mock
-    private UserManager mUserManager;
-
-    private BaseTestActivity mTestActivity;
-
-    @Before
-    public void setUpTestActivity() {
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
-    }
-
-    /**
-     * Tests that user name of the profile in question is displayed in the TextInputEditTest field.
-     */
-    @Test
-    public void testUserNameDisplayedInDetails() {
-        String testUserName = "test_user";
-        UserInfo testUser = new UserInfo(/* id= */ 10, testUserName, /* flags= */ 0);
-        createEditUsernameFragment(testUser);
-
-        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
-        assertThat(userNameEditText.getText().toString()).isEqualTo(testUserName);
-    }
-
-    /**
-     * Tests that clicking OK saves the new name for the user.
-     */
-    @Test
-    public void testClickingOkSavesNewUserName() {
-        int userId = 10;
-        UserInfo testUser = new UserInfo(userId, "user_name", /* flags= */ 0);
-        createEditUsernameFragment(testUser);
-        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
-        MenuItem okButton = ((ToolbarController) requireToolbar(mTestActivity))
-                .getMenuItems().get(1);
-
-        String newUserName = "new_user_name";
-        userNameEditText.requestFocus();
-        userNameEditText.setText(newUserName);
-        assertThat(okButton.isEnabled()).isTrue();
-        okButton.performClick();
-
-        verify(mUserManager).setUserName(userId, newUserName);
-    }
-
-    /**
-     * Tests that clicking Cancel brings us back to the previous fragment in activity.
-     */
-    @Test
-    public void testClickingCancelInvokesGoingBack() {
-        int userId = 10;
-        UserInfo testUser = new UserInfo(userId, /* name= */ "test_user", /* flags= */ 0);
-        createEditUsernameFragment(testUser);
-        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
-        MenuItem cancelButton = ((ToolbarController) requireToolbar(mTestActivity))
-                .getMenuItems().get(0);
-
-        String newUserName = "new_user_name";
-        userNameEditText.requestFocus();
-        userNameEditText.setText(newUserName);
-
-        mTestActivity.clearOnBackPressedFlag();
-        cancelButton.performClick();
-
-        // Back called.
-        assertThat(mTestActivity.getOnBackPressedFlag()).isTrue();
-
-        // New user name is not saved.
-        verify(mUserManager, never()).setUserName(userId, newUserName);
-    }
-
-    @Test
-    public void testEmptyUsernameCannotBeSaved() {
-        UserInfo testUser = new UserInfo(/* id= */ 10, "user_name", /* flags= */ 0);
-        createEditUsernameFragment(testUser);
-        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
-        MenuItem okButton = ((ToolbarController) requireToolbar(mTestActivity))
-                .getMenuItems().get(1);
-
-        userNameEditText.requestFocus();
-        userNameEditText.setText("");
-
-        assertThat(okButton.isEnabled()).isFalse();
-    }
-
-    private void createEditUsernameFragment(UserInfo userInfo) {
-        EditUsernameFragment fragment = EditUsernameFragment.newInstance(userInfo);
-        fragment.mUserManager = mUserManager;
-        mTestActivity.launchFragment(fragment);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java
deleted file mode 100644
index 85eaf1d..0000000
--- a/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java
+++ /dev/null
@@ -1,118 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.matches;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.ui.preference.CarUiTwoActionTextPreference;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
-public class MakeAdminPreferenceControllerTest {
-
-    private static final UserInfo TEST_USER = new UserInfo(/* id= */ 10,
-            "Test Username", /* flags= */ 0);
-
-    private PreferenceControllerTestHelper<MakeAdminPreferenceController>
-            mPreferenceControllerHelper;
-    private MakeAdminPreferenceController mController;
-    private CarUiTwoActionTextPreference mButtonPreference;
-    private ConfirmationDialogFragment mDialog;
-
-    @Mock
-    private CarUserManagerHelper mCarUserManagerHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
-        Context context = RuntimeEnvironment.application;
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
-                MakeAdminPreferenceController.class);
-        mController = mPreferenceControllerHelper.getController();
-        mController.setUserInfo(TEST_USER);
-        mButtonPreference = new CarUiTwoActionTextPreference(context);
-        mButtonPreference.setSelectable(false);
-        mPreferenceControllerHelper.setPreference(mButtonPreference);
-        mDialog = new ConfirmationDialogFragment.Builder(context).build();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarUserManagerHelper.reset();
-    }
-
-    @Test
-    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
-        when(mPreferenceControllerHelper.getMockFragmentController().findDialogByTag(
-                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(mDialog.getConfirmListener()).isNotNull();
-    }
-
-    @Test
-    public void testOnButtonClick_showsDialog() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mButtonPreference.performSecondaryActionClick();
-        verify(mPreferenceControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                matches(ConfirmationDialogFragment.TAG));
-    }
-
-    @Test
-    public void testListener_makeUserAdmin() {
-        Bundle arguments = new Bundle();
-        arguments.putParcelable(UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN, TEST_USER);
-        mController.mConfirmListener.onConfirm(arguments);
-        verify(mCarUserManagerHelper).grantAdminPermissions(TEST_USER);
-    }
-
-    @Test
-    public void testListener_goBack() {
-        Bundle arguments = new Bundle();
-        arguments.putParcelable(UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN, TEST_USER);
-        mController.mConfirmListener.onConfirm(arguments);
-        verify(mPreferenceControllerHelper.getMockFragmentController()).goBack();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java
deleted file mode 100644
index 53c22b8..0000000
--- a/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java
+++ /dev/null
@@ -1,150 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-/**
- * Test for the preference controller which populates the various permissions preferences.
- * Note that the switch preference represents the opposite of the restriction it is controlling.
- * i.e. DISALLOW_ADD_USER may be the restriction, but the switch represents "create new users".
- */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserManager.class})
-public class PermissionsPreferenceControllerTest {
-
-    private static final String TEST_RESTRICTION = UserManager.DISALLOW_ADD_USER;
-    private static final UserInfo TEST_USER = new UserInfo(/* id= */ 10,
-            "TEST_USER_NAME", /* flags= */ 0);
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<PermissionsPreferenceController>
-            mPreferenceControllerHelper;
-    private PermissionsPreferenceController mController;
-    private PreferenceGroup mPreferenceGroup;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                PermissionsPreferenceController.class);
-        mController = mPreferenceControllerHelper.getController();
-        mController.setUserInfo(TEST_USER);
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mPreferenceControllerHelper.setPreference(mPreferenceGroup);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void testRefreshUi_populatesGroup() {
-        mController.refreshUi();
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
-    }
-
-    @Test
-    public void testRefreshUi_callingTwice_noDuplicates() {
-        mController.refreshUi();
-        mController.refreshUi();
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
-    }
-
-    @Test
-    public void testRefreshUi_setToFalse() {
-        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
-                TEST_RESTRICTION);
-        preference.setChecked(true);
-        getShadowUserManager().setUserRestriction(
-                TEST_USER.getUserHandle(), TEST_RESTRICTION, true);
-        mController.refreshUi();
-        assertThat(preference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void testRefreshUi_setToTrue() {
-        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
-                TEST_RESTRICTION);
-        preference.setChecked(false);
-        getShadowUserManager().setUserRestriction(
-                TEST_USER.getUserHandle(), TEST_RESTRICTION, false);
-        mController.refreshUi();
-        assertThat(preference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testOnPreferenceChange_changeToFalse() {
-        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
-                TEST_RESTRICTION);
-        getShadowUserManager().setUserRestriction(
-                TEST_USER.getUserHandle(), TEST_RESTRICTION, true);
-        preference.callChangeListener(true);
-        assertThat(UserManager.get(mContext)
-                .hasUserRestriction(TEST_RESTRICTION, TEST_USER.getUserHandle())).isFalse();
-    }
-
-    @Test
-    public void testOnPreferenceChange_changeToTrue() {
-        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
-                TEST_RESTRICTION);
-        getShadowUserManager().setUserRestriction(
-                TEST_USER.getUserHandle(), TEST_RESTRICTION, false);
-        preference.callChangeListener(false);
-        assertThat(UserManager.get(mContext)
-                .hasUserRestriction(TEST_RESTRICTION, TEST_USER.getUserHandle())).isTrue();
-    }
-
-    private SwitchPreference getPreferenceForRestriction(
-            PreferenceGroup preferenceGroup, String restriction) {
-        for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
-            SwitchPreference preference = (SwitchPreference) preferenceGroup.getPreference(i);
-            if (restriction.equals(preference.getExtras().getString(
-                    PermissionsPreferenceController.PERMISSION_TYPE_KEY))) {
-                return preference;
-            }
-        }
-        return null;
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(mContext.getSystemService(UserManager.class));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java
deleted file mode 100644
index 2b31d56..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java
+++ /dev/null
@@ -1,178 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.Process;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowUserManager;
-
-import java.util.Collections;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
-public class UserDetailsBaseFragmentTest {
-
-    /*
-     * This class needs to be public and static in order for it to be recreated from instance
-     * state if necessary.
-     */
-    public static class TestUserDetailsBaseFragment extends UserDetailsBaseFragment {
-
-        @Override
-        protected String getTitleText() {
-            return "test_title";
-        }
-
-        @Override
-        protected int getPreferenceScreenResId() {
-            return R.xml.test_user_details_base_fragment;
-        }
-    }
-
-    private Context mContext;
-
-    private UserDetailsBaseFragment mUserDetailsBaseFragment;
-    @Mock
-    private UserHelper mUserHelper;
-
-    private MenuItem mRemoveUserButton;
-
-    private FragmentController<UserDetailsBaseFragment> mFragmentController;
-
-    @Before
-    public void setUpTestActivity() {
-        mContext = RuntimeEnvironment.application;
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        setCurrentUserWithFlags(/* flags= */ 0);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void testRemoveUserButtonVisible_whenAllowedToRemoveUsers() {
-        getShadowUserManager().setUserRestriction(
-                Process.myUserHandle(), UserManager.DISALLOW_REMOVE_USER, false);
-        createUserDetailsBaseFragment(/* userId= */ 1);
-
-        assertThat(mRemoveUserButton.isVisible()).isTrue();
-    }
-
-    @Test
-    public void testRemoveUserButtonHidden_whenNotAllowedToRemoveUsers() {
-        getShadowUserManager().setUserRestriction(
-                Process.myUserHandle(), UserManager.DISALLOW_REMOVE_USER, true);
-        createUserDetailsBaseFragment(/* userId= */ 1);
-
-        assertThat(mRemoveUserButton.isVisible()).isFalse();
-    }
-
-    @Test
-    public void testRemoveUserButtonHidden_whenUserIsSystemUser() {
-        getShadowUserManager().setUserRestriction(
-                Process.myUserHandle(), UserManager.DISALLOW_REMOVE_USER, false);
-
-        createUserDetailsBaseFragment(UserHandle.USER_SYSTEM);
-
-        assertThat(mRemoveUserButton.isVisible()).isFalse();
-    }
-
-    @Test
-    public void testRemoveUserButtonHidden_demoUser() {
-        getShadowUserManager().setUserRestriction(
-                Process.myUserHandle(), UserManager.DISALLOW_REMOVE_USER, false);
-        setCurrentUserWithFlags(UserInfo.FLAG_DEMO);
-        createUserDetailsBaseFragment(/* userId= */ 1);
-
-        assertThat(mRemoveUserButton.isVisible()).isFalse();
-    }
-
-    @Test
-    public void testRemoveUserButtonClick_createsRemovalDialog() {
-        getShadowUserManager().setUserRestriction(
-                Process.myUserHandle(), UserManager.DISALLOW_REMOVE_USER, false);
-        when(mUserHelper.getAllPersistentUsers()).thenReturn(
-                Collections.singletonList(new UserInfo()));
-        createUserDetailsBaseFragment(/* userId= */ 1);
-        mRemoveUserButton.performClick();
-
-        assertThat(mUserDetailsBaseFragment.findDialogByTag(
-                ConfirmationDialogFragment.TAG)).isNotNull();
-    }
-
-    private void createUserDetailsBaseFragment(int userId) {
-        UserInfo testUser = new UserInfo();
-        testUser.id = userId;
-        // Use UserDetailsFragment, since we cannot test an abstract class.
-        mUserDetailsBaseFragment = UserDetailsBaseFragment.addUserIdToFragmentArguments(
-                new TestUserDetailsBaseFragment(), testUser.id);
-
-        getShadowUserManager().addUser(testUser.id, "testUser", /* flags= */ 0);
-        mFragmentController = FragmentController.of(mUserDetailsBaseFragment).create().start();
-        if (mUserDetailsBaseFragment.getToolbarMenuItems() != null) {
-            mRemoveUserButton =
-                    ((ToolbarController) requireToolbar(mUserDetailsBaseFragment.requireActivity()))
-                            .getMenuItems().get(0);
-        } else {
-            mRemoveUserButton = null;
-        }
-    }
-
-    private void setCurrentUserWithFlags(int flags) {
-        UserInfo userInfo = new UserInfo(UserHandle.myUserId(), "test name", flags);
-        getShadowUserManager().addUser(userInfo.id, userInfo.name, userInfo.flags);
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java
deleted file mode 100644
index fb3ee4d..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,107 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.testng.Assert.assertThrows;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class})
-public class UserDetailsBasePreferenceControllerTest {
-
-    private static class TestUserDetailsBasePreferenceController extends
-            UserDetailsBasePreferenceController<Preference> {
-
-        TestUserDetailsBasePreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected Class<Preference> getPreferenceType() {
-            return Preference.class;
-        }
-    }
-
-    private static final List<String> LISTENER_ACTIONS =
-            Collections.singletonList(Intent.ACTION_USER_INFO_CHANGED);
-
-    private PreferenceControllerTestHelper<TestUserDetailsBasePreferenceController>
-            mPreferenceControllerHelper;
-    private TestUserDetailsBasePreferenceController mController;
-    private Preference mPreference;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
-                TestUserDetailsBasePreferenceController.class);
-        mController = mPreferenceControllerHelper.getController();
-        mPreference = new Preference(context);
-    }
-
-    @Test
-    public void testCheckInitialized_missingUserInfo() {
-        assertThrows(() -> mPreferenceControllerHelper.setPreference(mPreference));
-    }
-
-    @Test
-    public void testOnCreate_registerListener() {
-        mController.setUserInfo(new UserInfo());
-        mPreferenceControllerHelper.setPreference(mPreference);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
-                .isNotNull();
-    }
-
-    @Test
-    public void testOnDestroy_unregisterListener() {
-        mController.setUserInfo(new UserInfo());
-        mPreferenceControllerHelper.setPreference(mPreference);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
-                .isNull();
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java
deleted file mode 100644
index 7867b9b..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java
+++ /dev/null
@@ -1,98 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.os.UserManager;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class})
-public class UserDetailsFragmentTest {
-
-    private static final String TEST_NAME = "test_name";
-    private static final String TEST_UPDATED_NAME = "test_updated_name";
-    private static final int TEST_USER_ID = 10;
-
-    private Context mContext;
-    private UserManager mUserManager;
-    private UserDetailsFragment mUserDetailsFragment;
-
-    private ToolbarController mToolbar;
-
-    private FragmentController<UserDetailsFragment> mFragmentController;
-
-    @Before
-    public void setUpTestActivity() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        mUserManager = UserManager.get(mContext);
-        Shadows.shadowOf(mUserManager).addUser(TEST_USER_ID, TEST_NAME, /* flags= */ 0);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @Test
-    public void testCarUserManagerHelperUpdateListener_showsCorrectText() {
-        createUserDetailsFragment();
-        mUserDetailsFragment.mUserUpdateReceiver.onReceive(/* context= */ null, /* intent= */ null);
-        assertThat(mToolbar.getTitle()).isEqualTo(
-                UserUtils.getUserDisplayName(mContext, mUserManager.getUserInfo(TEST_USER_ID)));
-    }
-
-    @Test
-    public void testCarUserManagerHelperUpdateListener_textChangesWithUserUpdate() {
-        createUserDetailsFragment();
-        mUserDetailsFragment.mUserUpdateReceiver.onReceive(/* context= */ null, /* intent= */ null);
-        assertThat(mToolbar.getTitle()).isEqualTo(
-                UserUtils.getUserDisplayName(mContext, mUserManager.getUserInfo(TEST_USER_ID)));
-
-        mUserManager.removeUser(TEST_USER_ID);
-        Shadows.shadowOf(mUserManager).addUser(TEST_USER_ID, TEST_UPDATED_NAME, /* flags= */ 0);
-
-        mUserDetailsFragment.mUserUpdateReceiver.onReceive(/* context= */ null, /* intent= */ null);
-        assertThat(mToolbar.getTitle()).isEqualTo(
-                UserUtils.getUserDisplayName(mContext, mUserManager.getUserInfo(TEST_USER_ID)));
-    }
-
-    private void createUserDetailsFragment() {
-        mUserDetailsFragment = UserDetailsFragment.newInstance(TEST_USER_ID);
-        mFragmentController = FragmentController.of(mUserDetailsFragment);
-        mFragmentController.setup();
-
-        mToolbar = ((ToolbarController) requireToolbar(mUserDetailsFragment.requireActivity()));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserHelperTest.java b/tests/robotests/src/com/android/car/settings/users/UserHelperTest.java
deleted file mode 100644
index b0ce920..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UserHelperTest.java
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.users;
-
-import static android.os.UserManager.USER_TYPE_SYSTEM_HEADLESS;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.ActivityManager;
-import android.car.user.CarUserManager;
-import android.car.user.UserCreationResult;
-import android.car.user.UserRemovalResult;
-import android.car.user.UserSwitchResult;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.testutils.ShadowActivityManager;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.settings.testutils.ShadowUserManager;
-import com.android.internal.infra.AndroidFuture;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowProcess;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowActivityManager.class, ShadowUserManager.class,
-        ShadowUserIconProvider.class})
-public class UserHelperTest {
-
-    private static final String DEFAULT_ADMIN_NAME = "default_admin";
-    private static final String DEFAULT_GUEST_NAME = "default_guest";
-
-    private Context mContext;
-    private UserHelper mUserHelper;
-
-    @Mock
-    private UserManager mMockUserManager;
-    @Mock
-    private Resources mMockResources;
-    @Mock
-    private CarUserManager mMockCarUserManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mUserHelper = new UserHelper(mMockUserManager, mMockResources,
-                DEFAULT_ADMIN_NAME, DEFAULT_GUEST_NAME, mMockCarUserManager);
-
-        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS))
-                .thenReturn(false);
-        when(mMockUserManager.isDemoUser()).thenReturn(false);
-        when(mMockUserManager.isGuestUser()).thenReturn(false);
-
-        ShadowUserManager.setIsHeadlessSystemUserMode(true);
-        ShadowActivityManager.setCurrentUser(10);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowActivityManager.reset();
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void canCurrentProcessModifyAccounts_baseline_returnsTrue() {
-        assertThat(mUserHelper.canCurrentProcessModifyAccounts()).isTrue();
-    }
-
-    @Test
-    public void canCurrentProcessModifyAccounts_hasDisallowModifyAccounts_returnsFalse() {
-        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS))
-                .thenReturn(true);
-        assertThat(mUserHelper.canCurrentProcessModifyAccounts()).isFalse();
-    }
-
-    @Test
-    public void canCurrentProcessModifyAccounts_isDemoUser_returnsFalse() {
-        when(mMockUserManager.isDemoUser()).thenReturn(true);
-        assertThat(mUserHelper.canCurrentProcessModifyAccounts()).isFalse();
-    }
-
-    @Test
-    public void canCurrentProcessModifyAccounts_isGuestUser_returnsFalse() {
-        when(mMockUserManager.isGuestUser()).thenReturn(true);
-        assertThat(mUserHelper.canCurrentProcessModifyAccounts()).isFalse();
-    }
-
-    @Test
-    public void testGetAllsers() {
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two admin, and two non-admin users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createNonAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        UserInfo user3 = createNonAdminUser(fgUserId + 2);
-        UserInfo user4 = createAdminUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return all non-system users
-        assertThat(mUserHelper.getAllUsers()).containsExactly(fgUser, user2, user3, user4);
-    }
-
-    @Test
-    public void testGetAllUsers_notHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(false);
-
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two admin, and two non-admin users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createNonAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        UserInfo user3 = createNonAdminUser(fgUserId + 2);
-        UserInfo user4 = createAdminUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return all users
-        assertThat(mUserHelper.getAllUsers())
-                .containsExactly(systemUser, fgUser, user2, user3, user4);
-    }
-
-    @Test
-    public void testGetAllSwitchableUsers() {
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two non-foreground users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createAdminUser(fgUserId);
-        UserInfo user1 = createAdminUser(fgUserId + 1);
-        UserInfo user2 = createAdminUser(fgUserId + 2);
-
-        mockGetUsers(systemUser, fgUser, user1, user2);
-
-        // Should return all non-foreground users.
-        assertThat(mUserHelper.getAllSwitchableUsers()).containsExactly(user1, user2);
-    }
-
-    @Test
-    public void testGetAllSwitchableUsers_notHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(false);
-
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two non-foreground users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createAdminUser(fgUserId);
-        UserInfo user1 = createAdminUser(fgUserId + 1);
-        UserInfo user2 = createAdminUser(fgUserId + 2);
-
-        mockGetUsers(systemUser, fgUser, user1, user2);
-
-        // Should return all non-foreground users.
-        assertThat(mUserHelper.getAllSwitchableUsers()).containsExactly(systemUser, user1, user2);
-    }
-
-    @Test
-    public void testGetAllPersistentUsers() {
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two non-ephemeral users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        // Create two ephemeral users.
-        UserInfo user3 = createEphemeralUser(fgUserId + 2);
-        UserInfo user4 = createEphemeralUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return all non-ephemeral users.
-        assertThat(mUserHelper.getAllPersistentUsers()).containsExactly(fgUser, user2);
-    }
-
-    @Test
-    public void testGetAllPersistentUsers_notHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(false);
-
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two non-ephemeral users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        // Create two ephemeral users.
-        UserInfo user3 = createEphemeralUser(fgUserId + 2);
-        UserInfo user4 = createEphemeralUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return all non-ephemeral users.
-        assertThat(mUserHelper.getAllPersistentUsers()).containsExactly(systemUser, fgUser, user2);
-    }
-
-    @Test
-    public void testGetAllAdminUsers() {
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two admin, and two non-admin users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createNonAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        UserInfo user3 = createNonAdminUser(fgUserId + 2);
-        UserInfo user4 = createAdminUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return only admin users.
-        assertThat(mUserHelper.getAllAdminUsers()).containsExactly(user2, user4);
-    }
-
-    @Test
-    public void testGetAllAdminUsers_notHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(false);
-
-        // Add system user
-        UserInfo systemUser = createAdminUser(UserHandle.USER_SYSTEM);
-
-        // Create two admin, and two non-admin users.
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createNonAdminUser(fgUserId);
-        UserInfo user2 = createAdminUser(fgUserId + 1);
-        UserInfo user3 = createNonAdminUser(fgUserId + 2);
-        UserInfo user4 = createAdminUser(fgUserId + 3);
-
-        mockGetUsers(systemUser, fgUser, user2, user3, user4);
-
-        // Should return only admin users.
-        assertThat(mUserHelper.getAllAdminUsers()).containsExactly(systemUser, user2, user4);
-    }
-
-    @Test
-    public void testRemoveUser_isAdminUser_cannotRemoveSystemUser() {
-        UserInfo systemUser = new UserInfo(
-                UserHandle.USER_SYSTEM,
-                "Driver",
-                /* iconPath= */ null,
-                /* flags= */ UserInfo.FLAG_ADMIN | UserInfo.FLAG_SYSTEM,
-                /* userType= */ USER_TYPE_SYSTEM_HEADLESS);
-
-        assertThat(mUserHelper.removeUser(mContext, systemUser)).isFalse();
-    }
-
-    @Test
-    public void testRemoveUser_isAdmin_canRemoveOtherUsers() {
-        // Create admin user and non-admin user
-        int fgUserId = ActivityManager.getCurrentUser();
-        int nonAdminUserId = fgUserId + 1;
-        UserInfo fgUser = createAdminUser(fgUserId);
-        UserInfo nonAdminUser = createNonAdminUser(nonAdminUserId);
-
-        mockGetUsers(fgUser, nonAdminUser);
-        mockRemoveUser(nonAdminUserId, UserRemovalResult.STATUS_SUCCESSFUL);
-        // If Admin is removing non-current, non-system user, simply calls removeUser.
-        when(mMockUserManager.isAdminUser()).thenReturn(true);
-
-        assertThat(mUserHelper.removeUser(mContext, nonAdminUser)).isTrue();
-        verify(mMockCarUserManager).removeUser(nonAdminUserId);
-    }
-
-    @Test
-    public void testRemoveUser_isNonAdmin_cannotRemoveOtherUsers() {
-        // Create two non-admin users
-        int fgUserId = ActivityManager.getCurrentUser();
-        UserInfo fgUser = createNonAdminUser(fgUserId);
-        UserInfo user2 = createNonAdminUser(fgUserId + 1);
-        mockGetUsers(fgUser, user2);
-
-        // Make current user non-admin.
-        when(mMockUserManager.isAdminUser()).thenReturn(false);
-        // Mock so that removeUser always pretends it's successful.
-        mockRemoveUserSuccess();
-
-        // If Non-Admin is trying to remove someone other than themselves, they should fail.
-        assertThat(mUserHelper.removeUser(mContext, user2)).isFalse();
-        verify(mMockCarUserManager, never()).removeUser(user2.id);
-    }
-
-
-    @Test
-    public void testRemoveUser_removesLastAdminUser_createsAndSwitchesToNewAdminUser() {
-        // Ensure admin status
-        when(mMockUserManager.isAdminUser()).thenReturn(true);
-
-        // Create one admin and one non-admin
-        int baseId = 10;
-        UserInfo adminUser = createAdminUser(baseId);
-        UserInfo nonAdminInfo = createNonAdminUser(baseId + 1);
-        mockGetUsers(adminUser, nonAdminInfo);
-        UserInfo newAdminInfo = createAdminUser(baseId + 2);
-        mockCreateUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN,
-                UserCreationResult.STATUS_SUCCESSFUL, newAdminInfo);
-        mockSwitchUserSuccess();
-
-        mUserHelper.removeUser(mContext, adminUser);
-
-        verify(mMockCarUserManager).createUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN);
-        verify(mMockCarUserManager).switchUser(newAdminInfo.id);
-        verify(mMockCarUserManager).removeUser(adminUser.id);
-    }
-
-    @Test
-    public void testRemoveUser_removesLastAdminUserFailsCreateNewUser_doesNotRemoveOrSwitchUser() {
-        // Ensure admin status
-        when(mMockUserManager.isAdminUser()).thenReturn(true);
-
-        // Create one admin and one non-admin
-        int baseId = 10;
-        UserInfo adminUser = createAdminUser(baseId);
-        UserInfo nonAdminInfo = createNonAdminUser(baseId + 1);
-        mockGetUsers(adminUser, nonAdminInfo);
-
-        // Fail to create a new user to force a failure case
-        mockCreateUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN,
-                UserCreationResult.STATUS_ANDROID_FAILURE, null);
-
-        mUserHelper.removeUser(mContext, adminUser);
-        verify(mMockCarUserManager).createUser(DEFAULT_ADMIN_NAME, UserInfo.FLAG_ADMIN);
-        verify(mMockCarUserManager, never()).switchUser(anyInt());
-        verify(mMockCarUserManager, never()).removeUser(adminUser.id);
-    }
-
-    @Test
-    public void testRemoveUser_removeForegroundUser_callsSwitchToGuest() {
-        // Create foreground user
-        int baseId = 10;
-        ShadowProcess.setUid(baseId * UserHandle.PER_USER_RANGE); // User 10
-        UserInfo currentUser = createNonAdminUser(baseId);
-        when(mMockUserManager.isAdminUser()).thenReturn(false);
-        mockGetUsers(currentUser);
-
-        UserInfo guestUser = createGuestUser(baseId + 1);
-        mockCreateGuest(DEFAULT_GUEST_NAME, UserCreationResult.STATUS_SUCCESSFUL, guestUser);
-        mockSwitchUserSuccess();
-
-        mUserHelper.removeUser(mContext, currentUser);
-        verify(mMockCarUserManager).createGuest(DEFAULT_GUEST_NAME);
-        verify(mMockCarUserManager).switchUser(guestUser.id);
-        verify(mMockCarUserManager).removeUser(currentUser.id);
-    }
-
-    @Test
-    public void testGetMaxSupportedRealUsers_isHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(true);
-        ShadowUserManager.setMaxSupportedUsers(7);
-
-        // Create System user, two managed profiles, and two normal users.
-        UserInfo user0 = createAdminUser(0);
-        UserInfo user1 = createNonAdminUser(10);
-        UserInfo user2 = createManagedProfile(11);
-        UserInfo user3 = createNonAdminUser(13);
-        UserInfo user4 = createManagedProfile(14);
-
-        mockGetUsers(user0, user1, user2, user3, user4);
-
-        // Max users - # managed profiles - headless system user.
-        assertThat(mUserHelper.getMaxSupportedRealUsers()).isEqualTo(4);
-    }
-
-    @Test
-    public void testGetMaxSupportedRealUsers_isNotHeadless() {
-        ShadowUserManager.setIsHeadlessSystemUserMode(false);
-        ShadowUserManager.setMaxSupportedUsers(7);
-
-        // Create System user, two managed profiles, and two normal users.
-        UserInfo user0 = createAdminUser(0);
-        UserInfo user1 = createNonAdminUser(10);
-        UserInfo user2 = createManagedProfile(11);
-        UserInfo user3 = createNonAdminUser(13);
-        UserInfo user4 = createManagedProfile(14);
-
-        mockGetUsers(user0, user1, user2, user3, user4);
-
-        // Max users - # managed profiles
-        assertThat(mUserHelper.getMaxSupportedRealUsers()).isEqualTo(5);
-    }
-
-    @Test
-    public void testCreateNewOrFindExistingGuest_ifGuestExists_returnsExistingGuest() {
-        // Create two users and a guest user.
-        UserInfo user1 = createAdminUser(10);
-        UserInfo user2 = createNonAdminUser(12);
-        UserInfo guestUser = createGuestUser(13);
-
-        mockGetUsers(user1, user2, guestUser);
-        mockCreateUserFail();
-
-        when(mMockUserManager.findCurrentGuestUser()).thenReturn(guestUser);
-
-        UserInfo guest = mUserHelper.createNewOrFindExistingGuest(mContext);
-        assertThat(guest).isEqualTo(guestUser);
-    }
-
-    @Test
-    public void testCreateNewOrFindExistingGuest_ifNoGuest_createsNewGuest() {
-        // Create two users.
-        UserInfo user1 = createAdminUser(10);
-        UserInfo user2 = createNonAdminUser(12);
-
-        mockGetUsers(user1, user2);
-
-        // Create a user for the "new guest" user.
-        UserInfo guestInfo = createGuestUser(21);
-
-        mockCreateGuest(DEFAULT_GUEST_NAME, UserCreationResult.STATUS_SUCCESSFUL, guestInfo);
-
-        UserInfo guest = mUserHelper.createNewOrFindExistingGuest(mContext);
-        verify(mMockCarUserManager).createGuest(DEFAULT_GUEST_NAME);
-        assertThat(guest).isEqualTo(guestInfo);
-    }
-
-    private UserInfo createAdminUser(int id) {
-        return new UserInfo(id, null, UserInfo.FLAG_ADMIN);
-    }
-
-    private UserInfo createNonAdminUser(int id) {
-        return new UserInfo(id, null, 0);
-    }
-
-    private UserInfo createEphemeralUser(int id) {
-        return new UserInfo(id, null, UserInfo.FLAG_EPHEMERAL);
-    }
-
-    private UserInfo createManagedProfile(int id) {
-        return new UserInfo(id, null, UserInfo.FLAG_MANAGED_PROFILE);
-    }
-
-    private UserInfo createGuestUser(int id) {
-        return new UserInfo(id, null, UserInfo.FLAG_GUEST);
-    }
-
-    private void mockGetUsers(UserInfo... users) {
-        List<UserInfo> testUsers = new ArrayList<>(Arrays.asList(users));
-        when(mMockUserManager.getUsers()).thenReturn(testUsers);
-        when(mMockUserManager.getUsers(true)).thenReturn(testUsers);
-        when(mMockUserManager.getUsers(false)).thenReturn(testUsers);
-    }
-
-    private void mockRemoveUser(int userId, int status) {
-        when(mMockCarUserManager.removeUser(userId)).thenReturn(new UserRemovalResult(status));
-    }
-
-    private void mockRemoveUserSuccess() {
-        when(mMockCarUserManager.removeUser(anyInt()))
-                .thenReturn(new UserRemovalResult(UserRemovalResult.STATUS_SUCCESSFUL));
-    }
-
-    private void mockCreateUserFail() {
-        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
-        future.complete(new UserCreationResult(UserCreationResult.STATUS_ANDROID_FAILURE,
-                null, null));
-        when(mMockCarUserManager.createUser(any(), anyInt())).thenReturn(future);
-        when(mMockCarUserManager.createGuest(any())).thenReturn(future);
-    }
-
-    private void mockCreateUser(String name, int flag, int status, UserInfo userInfo) {
-        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
-        future.complete(new UserCreationResult(status, userInfo, null));
-        when(mMockCarUserManager.createUser(name, flag)).thenReturn(future);
-    }
-
-    private void mockCreateGuest(String name, int status, UserInfo userInfo) {
-        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
-        future.complete(new UserCreationResult(status, userInfo, null));
-        when(mMockCarUserManager.createGuest(name)).thenReturn(future);
-    }
-
-    private void mockSwitchUserSuccess() {
-        AndroidFuture<UserSwitchResult> future = new AndroidFuture<>();
-        future.complete(new UserSwitchResult(UserSwitchResult.STATUS_SUCCESSFUL, null));
-        when(mMockCarUserManager.switchUser(anyInt())).thenReturn(future);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserIconProviderTest.java b/tests/robotests/src/com/android/car/settings/users/UserIconProviderTest.java
deleted file mode 100644
index 9491329..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UserIconProviderTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.users;
-
-import static android.content.pm.UserInfo.FLAG_GUEST;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.graphics.Bitmap;
-import android.os.UserManager;
-
-import androidx.core.graphics.drawable.RoundedBitmapDrawable;
-
-import com.android.car.settings.testutils.ShadowUserManager;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserManager.class})
-public class UserIconProviderTest {
-
-    private Context mContext;
-    private UserIconProvider mUserIconProvider;
-    private UserInfo mUserInfo;
-    private UserManager mUserManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
-
-        mUserIconProvider = new UserIconProvider();
-        mUserInfo = new UserInfo(/* id= */ 10, "USER_NAME", /* flags= */ 0);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void getRoundedUserIcon_AssignsIconIfNotPresent() {
-        ShadowUserManager.setUserIcon(mUserInfo.id, null);
-
-        RoundedBitmapDrawable returnedIcon =
-                mUserIconProvider.getRoundedUserIcon(mUserInfo, mContext);
-
-        assertThat(returnedIcon).isNotNull();
-        assertThat(getShadowUserManager().getUserIcon(mUserInfo.id)).isNotNull();
-    }
-
-    @Test
-    public void assignDefaultIcon_AssignsIconForNonGuest() {
-        ShadowUserManager.setUserIcon(mUserInfo.id, null);
-
-        Bitmap returnedIcon = mUserIconProvider.assignDefaultIcon(
-                mUserManager, mContext.getResources(), mUserInfo);
-
-        assertThat(returnedIcon).isNotNull();
-        assertThat(getShadowUserManager().getUserIcon(mUserInfo.id)).isNotNull();
-    }
-
-    @Test
-    public void assignDefaultIcon_AssignsIconForGuest() {
-        UserInfo guestUserInfo =
-                new UserInfo(/* id= */ 11, "USER_NAME", FLAG_GUEST);
-        ShadowUserManager.setUserIcon(guestUserInfo.id, null);
-
-        Bitmap returnedIcon = mUserIconProvider.assignDefaultIcon(
-                mUserManager, mContext.getResources(), guestUserInfo);
-
-        assertThat(returnedIcon).isNotNull();
-        assertThat(getShadowUserManager().getUserIcon(guestUserInfo.id)).isNotNull();
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadow.extract(mUserManager);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java
deleted file mode 100644
index f84bcae..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java
+++ /dev/null
@@ -1,207 +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.
- */
-
-package com.android.car.settings.users;
-
-import static android.content.pm.UserInfo.FLAG_ADMIN;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
-public class UsersBasePreferenceControllerTest {
-
-    private static class TestUsersBasePreferenceController extends UsersBasePreferenceController {
-
-        TestUsersBasePreferenceController(Context context, String preferenceKey,
-                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
-            super(context, preferenceKey, fragmentController, uxRestrictions);
-        }
-
-        @Override
-        protected void userClicked(UserInfo userInfo) {
-        }
-    }
-
-    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
-            "TEST_USER_NAME", /* flags= */ 0);
-    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
-            "TEST_OTHER_NAME", /* flags= */ 0);
-
-    private static final List<String> LISTENER_ACTIONS =
-            Collections.singletonList(Intent.ACTION_USER_INFO_CHANGED);
-
-    private PreferenceControllerTestHelper<TestUsersBasePreferenceController> mControllerHelper;
-    private TestUsersBasePreferenceController mController;
-    private PreferenceGroup mPreferenceGroup;
-    private Context mContext;
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                TestUsersBasePreferenceController.class, mPreferenceGroup);
-        mController = mControllerHelper.getController();
-        when(mUserHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
-        when(mUserHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(
-                Collections.singletonList(TEST_OTHER_USER));
-        when(mUserHelper.getAllLivingUsers(any())).thenReturn(
-                Collections.singletonList(TEST_OTHER_USER));
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void onCreate_registersOnUsersUpdateListener() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
-                .isNotNull();
-    }
-
-    @Test
-    public void onCreate_populatesUsers() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        // Three users. Current user, other user, guest user.
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
-    }
-
-    @Test
-    public void onDestroy_unregistersOnUsersUpdateListener() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-        assertThat(BroadcastReceiverHelpers.getRegisteredReceiverWithActions(LISTENER_ACTIONS))
-                .isNull();
-    }
-
-    @Test
-    public void refreshUi_userChange_updatesGroup() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        // Store the list of previous Preferences.
-        List<Preference> currentPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            currentPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        // Mock a change so that other user becomes an admin.
-        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(
-                Collections.singletonList(adminOtherUser));
-        when(mUserHelper.getAllLivingUsers(any())).thenReturn(
-                Arrays.asList(TEST_OTHER_USER, adminOtherUser));
-
-        mController.refreshUi();
-
-        List<Preference> newPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            newPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        assertThat(newPreferences).containsNoneIn(currentPreferences);
-    }
-
-    @Test
-    public void refreshUi_noChange_doesNotUpdateGroup() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        // Store the list of previous Preferences.
-        List<Preference> currentPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            currentPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        mController.refreshUi();
-
-        List<Preference> newPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            newPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        assertThat(newPreferences).containsExactlyElementsIn(currentPreferences);
-    }
-
-    @Test
-    public void onUsersUpdated_updatesGroup() {
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-
-        // Store the list of previous Preferences.
-        List<Preference> currentPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            currentPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        // Mock a change so that other user becomes an admin.
-        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(
-                Collections.singletonList(adminOtherUser));
-        when(mUserHelper.getAllLivingUsers(any())).thenReturn(
-                Arrays.asList(TEST_OTHER_USER, adminOtherUser));
-
-        mContext.sendBroadcast(new Intent(LISTENER_ACTIONS.get(0)));
-
-        List<Preference> newPreferences = new ArrayList<>();
-        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
-            newPreferences.add(mPreferenceGroup.getPreference(i));
-        }
-
-        assertThat(newPreferences).containsNoneIn(currentPreferences);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java
deleted file mode 100644
index 365c57a..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java
+++ /dev/null
@@ -1,183 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.car.user.CarUserManager;
-import android.car.user.UserCreationResult;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-import com.android.car.settings.testutils.ShadowUserManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.car.ui.utils.CarUxRestrictionsUtil;
-import com.android.internal.infra.AndroidFuture;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-
-import java.util.ArrayList;
-
-/**
- * Tests for UserDetailsFragment.
- */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class, ShadowUserManager.class})
-public class UsersListFragmentTest {
-
-    private Context mContext;
-    private UsersListFragment mFragment;
-    private MenuItem mActionButton;
-    private FragmentController<UsersListFragment> mFragmentController;
-
-    @Mock
-    private CarUserManager mCarUserManager;
-
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mContext = RuntimeEnvironment.application;
-
-        mFragment = new UsersListFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-        ShadowUserManager.reset();
-    }
-
-    @Test
-    public void onCreate_userInDemoMode_showsExitRetailModeButton() {
-        createUsersListFragment(UserInfo.FLAG_DEMO, /* disallowAddUser= */ false);
-
-        assertThat(mActionButton.isVisible()).isTrue();
-        assertThat(mActionButton.getTitle().toString())
-                .isEqualTo(mContext.getString(R.string.exit_retail_button_text));
-    }
-
-    @Test
-    public void onCreate_userCanAddNewUser_showsAddUserButton() {
-        createUsersListFragment(/* flags= */ 0, /* disallowAddUser= */ false);
-
-        assertThat(mActionButton.isVisible()).isTrue();
-        assertThat(mActionButton.getTitle().toString())
-                .isEqualTo(mContext.getString(R.string.user_add_user_menu));
-    }
-
-    @Test
-    public void onCreate_userRestrictedFromAddingNewUserAndNotInDemo_doesNotShowActionButton() {
-        createUsersListFragment(/* flags= */ 0, /*disallowAddUser= */ true);
-
-        assertThat(mActionButton.isVisible()).isFalse();
-    }
-
-    /* Test that onCreateNewUserConfirmed invokes a creation of a new non-admin. */
-    @Test
-    public void testOnCreateNewUserConfirmedInvokesCreateNewUser() {
-        createUsersListFragment(/* flags= */ 0, /* disallowAddUser= */ false);
-        mFragment.setCarUserManager(mCarUserManager);
-
-        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
-        future.complete(new UserCreationResult(UserCreationResult.STATUS_SUCCESSFUL,
-                /* user= */ null, /* errorMessage= */ null));
-        when(mCarUserManager.createUser(anyString(), anyInt())).thenReturn(future);
-
-        mFragment.mConfirmCreateNewUserListener.onConfirm(/* arguments= */ null);
-        verify(mCarUserManager).createUser(mContext.getString(R.string.user_new_user_name),
-                /* flags= */ 0);
-    }
-
-    /* Test that if we're in demo user, click on the button starts exit out of the retail mode. */
-    @Test
-    public void testCallOnClick_demoUser_exitRetailMode() {
-        createUsersListFragment(UserInfo.FLAG_DEMO, /* disallowAddUser= */ false);
-        mActionButton.performClick();
-        assertThat(isDialogShown(UsersListFragment.CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG)).isTrue();
-    }
-
-    /* Test that if the max num of users is reached, click on the button informs user of that. */
-    @Test
-    public void testCallOnClick_userLimitReached_showErrorDialog() {
-        ShadowUserManager.setCanAddMoreUsers(false);
-        createUsersListFragment(/* flags= */ 0, /* disallowAddUser= */ false);
-        mActionButton.performClick();
-        assertThat(isDialogShown(UsersListFragment.MAX_USERS_LIMIT_REACHED_DIALOG_TAG)).isTrue();
-    }
-
-    /* Test that if user can add other users, click on the button creates a dialog to confirm. */
-    @Test
-    public void testCallOnClick_showAddUserDialog() {
-        createUsersListFragment(/* flags= */ 0, /* disallowAddUser= */ false);
-        mActionButton.performClick();
-        assertThat(isDialogShown(UsersListFragment.CONFIRM_CREATE_NEW_USER_DIALOG_TAG)).isTrue();
-    }
-
-    private void createUsersListFragment(int flags, boolean disallowAddUser) {
-        Shadows.shadowOf(UserManager.get(mContext)).addUser(UserHandle.myUserId(),
-                "User Name", flags);
-        UserInfo testUser = UserManager.get(mContext).getUserInfo(UserHandle.myUserId());
-        Shadows.shadowOf(UserManager.get(mContext)).setUserRestriction(
-                testUser.getUserHandle(), UserManager.DISALLOW_ADD_USER, disallowAddUser);
-        when(mUserHelper.getCurrentProcessUserInfo()).thenReturn(testUser);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(new ArrayList<>());
-        mFragmentController.setup();
-
-        ToolbarController toolbar = (ToolbarController) requireToolbar(mFragment.requireActivity());
-        CarUxRestrictionsUtil.getInstance(mContext).setUxRestrictions(new CarUxRestrictions.Builder(
-                true, CarUxRestrictions.UX_RESTRICTIONS_BASELINE, 0)
-                .build());
-        mActionButton = toolbar.getMenuItems().get(0);
-    }
-
-    private boolean isDialogShown(String tag) {
-        return mFragment.findDialogByTag(tag) != null;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java
deleted file mode 100644
index a1e3f74..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java
+++ /dev/null
@@ -1,120 +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.
- */
-
-package com.android.car.settings.users;
-
-import static android.content.pm.UserInfo.FLAG_ADMIN;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowUserManager;
-
-import java.util.Collections;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
-public class UsersListPreferenceControllerTest {
-
-    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
-            "TEST_USER_NAME", FLAG_ADMIN);
-    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
-            "TEST_OTHER_NAME", /* flags= */ 0);
-
-    private PreferenceControllerTestHelper<UsersListPreferenceController> mControllerHelper;
-    private PreferenceGroup mPreferenceGroup;
-    private Context mContext;
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                UsersListPreferenceController.class, mPreferenceGroup);
-
-        getShadowUserManager().addUser(TEST_CURRENT_USER.id, TEST_CURRENT_USER.name,
-                TEST_CURRENT_USER.flags);
-        getShadowUserManager().switchUser(TEST_CURRENT_USER.id);
-        when(mUserHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
-        when(mUserHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(
-                Collections.singletonList(TEST_OTHER_USER));
-        when(mUserHelper.getAllLivingUsers(any())).thenReturn(
-                Collections.singletonList(TEST_OTHER_USER));
-
-        mControllerHelper.markState(Lifecycle.State.STARTED);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void testPreferencePerformClick_currentAdminUser_openNewFragment() {
-        mPreferenceGroup.getPreference(0).performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(
-                any(UserDetailsFragment.class));
-    }
-
-    @Test
-    public void testPreferencePerformClick_otherNonAdminUser_openNewFragment() {
-        mPreferenceGroup.getPreference(1).performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).launchFragment(
-                any(UserDetailsPermissionsFragment.class));
-    }
-
-    @Test
-    public void testPreferencePerformClick_guestUser_noAction() {
-        mPreferenceGroup.getPreference(2).performClick();
-
-        verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(any());
-    }
-
-    private ShadowUserManager getShadowUserManager() {
-        return Shadows.shadowOf(UserManager.get(mContext));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java b/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java
deleted file mode 100644
index ac851e5..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java
+++ /dev/null
@@ -1,184 +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.
- */
-
-package com.android.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.UserInfo;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.ShadowUserHelper;
-import com.android.car.settings.testutils.ShadowUserIconProvider;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowUserIconProvider.class, ShadowUserHelper.class})
-public class UsersPreferenceProviderTest {
-
-    private static final String TEST_CURRENT_USER_NAME = "Current User";
-    private static final String TEST_OTHER_USER_1_NAME = "User 1";
-    private static final String TEST_OTHER_USER_2_NAME = "User 2";
-    private static final String TEST_GUEST_USER_1_NAME = "Guest 1";
-    private static final String TEST_GUEST_USER_2_NAME = "Guest 2";
-
-    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 14,
-            TEST_CURRENT_USER_NAME, /* flags= */ 0);
-    private static final UserInfo TEST_OTHER_USER_1 = new UserInfo(/* id= */ 10,
-            TEST_OTHER_USER_1_NAME, /* flags= */ 0);
-    private static final UserInfo TEST_OTHER_USER_2 = new UserInfo(/* id= */ 11,
-            TEST_OTHER_USER_2_NAME, /* flags= */ 0);
-    private static final UserInfo TEST_GUEST_USER_1 = new UserInfo(/* id= */ 12,
-            TEST_GUEST_USER_1_NAME, /* flags= */ UserInfo.FLAG_GUEST);
-    private static final UserInfo TEST_GUEST_USER_2 = new UserInfo(/* id= */ 13,
-            TEST_GUEST_USER_2_NAME, /* flags= */ UserInfo.FLAG_GUEST);
-
-
-    private Context mContext;
-    @Mock
-    private UsersPreferenceProvider.UserClickListener mUserClickListener;
-    @Mock
-    private UserHelper mUserHelper;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowUserHelper.setInstance(mUserHelper);
-        mContext = RuntimeEnvironment.application;
-
-        List<UserInfo> users = Arrays.asList(TEST_OTHER_USER_1, TEST_GUEST_USER_1,
-                TEST_GUEST_USER_2,
-                TEST_OTHER_USER_2);
-
-        when(mUserHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
-        when(mUserHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
-        when(mUserHelper.getAllSwitchableUsers()).thenReturn(users);
-        when(mUserHelper.getAllLivingUsers(any())).thenReturn(
-                Arrays.asList(TEST_OTHER_USER_1, TEST_OTHER_USER_2));
-    }
-
-    @After
-    public void tearDown() {
-        ShadowUserHelper.reset();
-    }
-
-    @Test
-    public void testCreateUserList_firstUserIsCurrentUser() {
-        UsersPreferenceProvider provider = createProvider();
-
-        Preference first = provider.createUserList().get(0);
-        assertThat(first.getTitle()).isEqualTo(
-                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
-    }
-
-    @Test
-    public void testCreateUserList_repeatedGuestUserNotShown() {
-        UsersPreferenceProvider provider = createProvider();
-
-        List<Preference> userList = provider.createUserList();
-        assertThat(userList.size()).isEqualTo(4); // 3 real users + guest item.
-        assertThat(userList.get(0).getTitle()).isEqualTo(
-                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
-        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
-        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
-    }
-
-    @Test
-    public void testCreateUserList_guestShownAsSeparateLastElement() {
-        UsersPreferenceProvider provider = createProvider();
-
-        List<Preference> userList = provider.createUserList();
-        assertThat(userList.get(userList.size() - 1).getTitle()).isEqualTo(
-                mContext.getString(R.string.user_guest));
-    }
-
-    @Test
-    public void testCreateUserList_currentUserNotShown() {
-        UsersPreferenceProvider provider = createProvider();
-        provider.setIncludeCurrentUser(false);
-
-        List<Preference> userList = provider.createUserList();
-        assertThat(userList.size()).isEqualTo(3); // 3 real users + guest item.
-        assertThat(userList.get(0).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
-        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
-        assertThat(userList.get(2).getTitle()).isEqualTo(
-                mContext.getString(R.string.user_guest));
-    }
-
-    @Test
-    public void testCreateUserList_guestNotShown() {
-        UsersPreferenceProvider provider = createProvider();
-        provider.setIncludeGuest(false);
-
-        List<Preference> userList = provider.createUserList();
-        assertThat(userList.size()).isEqualTo(3); // 3 real users.
-        assertThat(userList.get(0).getTitle()).isEqualTo(
-                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
-        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
-        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
-    }
-
-    @Test
-    public void testPerformClick_currentUser_invokesUserClickListener() {
-        UsersPreferenceProvider provider = createProvider();
-
-        List<Preference> userList = provider.createUserList();
-        userList.get(0).performClick();
-        verify(mUserClickListener).onUserClicked(TEST_CURRENT_USER);
-    }
-
-    @Test
-    public void testPerformClick_otherUser_invokesUserClickListener() {
-        UsersPreferenceProvider provider = createProvider();
-
-        List<Preference> userList = provider.createUserList();
-        userList.get(1).performClick();
-        verify(mUserClickListener).onUserClicked(TEST_OTHER_USER_1);
-    }
-
-    @Test
-    public void testPerformClick_guestUser_doesntInvokeUserClickListener() {
-        UsersPreferenceProvider provider = createProvider();
-
-        List<Preference> userList = provider.createUserList();
-        userList.get(userList.size() - 1).performClick();
-        verify(mUserClickListener, never()).onUserClicked(any(UserInfo.class));
-    }
-
-    private UsersPreferenceProvider createProvider() {
-        return new UsersPreferenceProvider(mContext, mUserClickListener);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java
deleted file mode 100644
index 702b045..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java
+++ /dev/null
@@ -1,298 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.util.Pair;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarWifiManager;
-import com.android.car.settings.testutils.ShadowWifiManager;
-import com.android.car.settings.wifi.details.WifiDetailsFragment;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarWifiManager.class, ShadowWifiManager.class})
-public class AccessPointListPreferenceControllerTest {
-    private static final int SIGNAL_LEVEL = 1;
-    @Mock
-    private AccessPoint mMockAccessPoint1;
-    @Mock
-    private AccessPoint mMockAccessPoint2;
-    @Mock
-    private CarWifiManager mMockCarWifiManager;
-
-    private Context mContext;
-    private PreferenceGroup mPreferenceGroup;
-    private AccessPointListPreferenceController mController;
-    private FragmentController mFragmentController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowCarWifiManager.setInstance(mMockCarWifiManager);
-        mContext = RuntimeEnvironment.application;
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI,
-                true);
-        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
-        PreferenceControllerTestHelper<AccessPointListPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        AccessPointListPreferenceController.class, mPreferenceGroup);
-        mController = controllerHelper.getController();
-        mFragmentController = controllerHelper.getMockFragmentController();
-
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
-        when(mMockAccessPoint1.getLevel()).thenReturn(SIGNAL_LEVEL);
-        when(mMockAccessPoint2.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
-        when(mMockAccessPoint2.getLevel()).thenReturn(SIGNAL_LEVEL);
-
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarWifiManager.reset();
-    }
-
-    @Test
-    public void refreshUi_emptyList_notVisible() {
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(new ArrayList<>());
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.isVisible()).isEqualTo(false);
-    }
-
-    @Test
-    public void refreshUi_notEmpty_visible() {
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.isVisible()).isEqualTo(true);
-    }
-
-    @Test
-    public void refreshUi_notEmpty_listCount() {
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(accessPointList.size());
-    }
-
-    @Test
-    public void refreshUi_notSavedAccessPoint_noForgetButton() {
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        ButtonPasswordEditTextPreference preference =
-                (ButtonPasswordEditTextPreference) mPreferenceGroup.getPreference(0);
-        assertThat(preference.isButtonShown()).isFalse();
-    }
-
-    @Test
-    public void onUxRestrictionsChanged_switchToSavedApOnly() {
-        List<AccessPoint> allAccessPointList = Arrays.asList(mMockAccessPoint1, mMockAccessPoint2);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(allAccessPointList);
-        List<AccessPoint> savedAccessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getSavedAccessPoints()).thenReturn(savedAccessPointList);
-        mController.refreshUi();
-
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(allAccessPointList.size());
-
-        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(
-                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
-        mController.onUxRestrictionsChanged(noSetupRestrictions);
-        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(savedAccessPointList.size());
-    }
-
-    @Test
-    public void performClick_noSecurityNotConnectedAccessPoint_connect() {
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-        verify(mMockCarWifiManager).connectToPublicWifi(eq(mMockAccessPoint1), any());
-    }
-
-    @Test
-    public void performClick_oweSecurityNotConnectedAccessPoint_connect() {
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_OWE);
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-        verify(mMockCarWifiManager).connectToPublicWifi(eq(mMockAccessPoint1), any());
-    }
-
-    @Test
-    public void performClick_activeAccessPoint_showDetailsFragment() {
-        when(mMockAccessPoint1.isActive()).thenReturn(true);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-        verify(mFragmentController).launchFragment(any(WifiDetailsFragment.class));
-    }
-
-    @Test
-    public void performClick_savedAccessPoint_connect() {
-        when(mMockAccessPoint1.isSaved()).thenReturn(true);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).performClick();
-        verify(mMockCarWifiManager).connectToSavedWifi(eq(mMockAccessPoint1), any());
-    }
-
-    @Test
-    public void performButtonClick_savedAccessPoint_forgetsNetwork() {
-        int netId = 1;
-
-        WifiConfiguration config = mock(WifiConfiguration.class);
-        WifiConfiguration.NetworkSelectionStatus status = mock(
-                WifiConfiguration.NetworkSelectionStatus.class);
-        config.networkId = netId;
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mMockAccessPoint1.isSaved()).thenReturn(true);
-        when(mMockAccessPoint1.getConfig()).thenReturn(config);
-        when(config.getNetworkSelectionStatus()).thenReturn(status);
-        when(status.getNetworkSelectionStatus()).thenReturn(NETWORK_SELECTION_ENABLED);
-
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        ButtonPasswordEditTextPreference preference =
-                (ButtonPasswordEditTextPreference) mPreferenceGroup.getPreference(0);
-        preference.performButtonClick();
-
-        assertThat(getShadowWifiManager().getLastForgottenNetwork()).isEqualTo(netId);
-    }
-
-    @Test
-    public void callChangeListener_newSecureAccessPoint_wifiAdded() {
-        String ssid = "test_ssid";
-        String password = "test_password";
-        when(mMockAccessPoint1.getSsid()).thenReturn(ssid);
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).callChangeListener(password);
-        WifiConfiguration lastAdded = getShadowWifiManager().getLastAddedNetworkConfiguration();
-
-        assertThat(lastAdded.SSID).contains(ssid);
-        assertThat(lastAdded.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA_PSK);
-        assertThat(lastAdded.preSharedKey).contains(password);
-    }
-
-    @Test
-    public void callChangeListener_newSecureAccessPoint_wifiEnabled() {
-        String ssid = "test_ssid";
-        String password = "test_password";
-        when(mMockAccessPoint1.getSsid()).thenReturn(ssid);
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).callChangeListener(password);
-        Pair<Integer, Boolean> lastEnabled = getShadowWifiManager().getLastEnabledNetwork();
-
-        // Enable should be called on the most recently added network id.
-        int lastNetworkId = getShadowWifiManager().getLastAddedNetworkConfiguration().networkId;
-        assertThat(lastEnabled.first).isEqualTo(lastNetworkId);
-        // WifiUtil will try to enable the network right away.
-        assertThat(lastEnabled.second).isTrue();
-    }
-
-    @Test
-    public void callChangeListener_newSecureAccessPoint_wifiConnected() {
-        String ssid = "test_ssid";
-        String password = "test_password";
-        when(mMockAccessPoint1.getSsid()).thenReturn(ssid);
-        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mMockAccessPoint1.isSaved()).thenReturn(false);
-        when(mMockAccessPoint1.isActive()).thenReturn(false);
-        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
-        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
-        mController.refreshUi();
-
-        mPreferenceGroup.getPreference(0).callChangeListener(password);
-        WifiInfo lastConnected = getShadowWifiManager().getActiveWifiInfo();
-
-        assertThat(lastConnected.getSSID()).contains(ssid);
-    }
-
-    private ShadowWifiManager getShadowWifiManager() {
-        return Shadow.extract(mContext.getSystemService(WifiManager.class));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java
deleted file mode 100644
index cfd9142..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi;
-
-import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
-import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.net.wifi.WifiConfiguration;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.settingslib.wifi.AccessPoint;
-
-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.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowAlertDialog;
-
-@RunWith(RobolectricTestRunner.class)
-public class AccessPointPreferenceTest {
-
-    private static final String TEST_KEY = "test_key";
-    private AccessPointPreference mPreference;
-
-    @Mock
-    private AccessPoint mAccessPoint;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        Context context = RuntimeEnvironment.application;
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        FragmentController<TestSettingsFragment> fragmentController = FragmentController.of(
-                new TestSettingsFragment());
-        TestSettingsFragment fragment = fragmentController.get();
-        fragmentController.setup();
-
-        mPreference = new AccessPointPreference(context, mAccessPoint);
-        mPreference.setKey(TEST_KEY);
-        fragment.getPreferenceScreen().addPreference(mPreference);
-    }
-
-    @Test
-    public void onClick_securityTypeNone_doesntOpenDialog() {
-        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
-        mPreference.onClick();
-
-        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-    }
-
-    @Test
-    public void onClick_hasSecurity_isSaved_correctPassword_doesntOpenDialog() {
-        WifiConfiguration config = mock(WifiConfiguration.class);
-        WifiConfiguration.NetworkSelectionStatus status = mock(
-                WifiConfiguration.NetworkSelectionStatus.class);
-        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mAccessPoint.isSaved()).thenReturn(true);
-        when(mAccessPoint.getConfig()).thenReturn(config);
-        when(config.getNetworkSelectionStatus()).thenReturn(status);
-        when(status.getNetworkSelectionStatus()).thenReturn(NETWORK_SELECTION_ENABLED);
-        mPreference.onClick();
-
-        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
-        assertThat(dialog).isNull();
-
-    }
-
-    @Test
-    public void onClick_hasSecurity_isSaved_incorrectPassword_opensDialog() {
-        WifiConfiguration config = mock(WifiConfiguration.class);
-        WifiConfiguration.NetworkSelectionStatus status = mock(
-                WifiConfiguration.NetworkSelectionStatus.class);
-        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mAccessPoint.isSaved()).thenReturn(true);
-        when(mAccessPoint.getConfig()).thenReturn(config);
-        when(config.getNetworkSelectionStatus()).thenReturn(status);
-        when(status.getNetworkSelectionStatus()).thenReturn(NETWORK_SELECTION_PERMANENTLY_DISABLED);
-        when(status.getNetworkSelectionDisableReason()).thenReturn(
-                WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD);
-        mPreference.onClick();
-
-        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-    }
-
-    @Test
-    public void onClick_hasSecurity_isNotSaved_opensDialog() {
-        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
-        when(mAccessPoint.isSaved()).thenReturn(false);
-        mPreference.onClick();
-
-        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
-        assertThat(dialog).isNotNull();
-    }
-
-    /** Concrete {@link SettingsFragment} for testing. */
-    public static class TestSettingsFragment extends SettingsFragment {
-        @Override
-        protected int getPreferenceScreenResId() {
-            return R.xml.settings_fragment;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
deleted file mode 100644
index 8a0027c..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-
-import androidx.localbroadcastmanager.content.LocalBroadcastManager;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
-import com.android.car.settings.testutils.ShadowWifiManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowLocalBroadcastManager.class, ShadowWifiManager.class})
-public class AddWifiFragmentTest {
-
-    private Context mContext;
-    private LocalBroadcastManager mLocalBroadcastManager;
-    private AddWifiFragment mFragment;
-    private FragmentController<AddWifiFragment> mFragmentController;
-
-    @Before
-    public void setUp() {
-        mContext = ApplicationProvider.getApplicationContext();
-        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
-        mFragment = new AddWifiFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowLocalBroadcastManager.reset();
-        ShadowWifiManager.reset();
-    }
-
-    @Test
-    public void onCreate_registersNameChangeListener() {
-        mFragmentController.create();
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
-    }
-
-    @Test
-    public void onCreate_registersSecurityChangeListener() {
-        mFragmentController.create();
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
-    }
-
-    @Test
-    public void onDestroy_unregistersNameChangeListener() {
-        mFragmentController.create();
-        mFragmentController.destroy();
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isFalse();
-    }
-
-    @Test
-    public void onDestroy_unregistersSecurityChangeListener() {
-        mFragmentController.create();
-        mFragmentController.destroy();
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isFalse();
-    }
-
-    @Test
-    public void initialState_buttonDisabled() {
-        mFragmentController.setup();
-        assertThat(getAddWifiButton().isEnabled()).isFalse();
-    }
-
-    @Test
-    public void receiveNameChangeIntent_emptyName_buttonDisabled() {
-        mFragmentController.setup();
-
-        sendNameChangeBroadcastIntent("");
-
-        assertThat(getAddWifiButton().isEnabled()).isFalse();
-    }
-
-    @Test
-    public void receiveNameChangeIntent_name_buttonEnabled() {
-        mFragmentController.setup();
-
-        sendNameChangeBroadcastIntent("test_network_name");
-
-        assertThat(getAddWifiButton().isEnabled()).isTrue();
-    }
-
-    @Test
-    public void receiveSecurityChangeIntent_nameSet_buttonDisabled() {
-        mFragmentController.setup();
-        sendNameChangeBroadcastIntent("test_network_name");
-
-        sendSecurityChangeBroadcastIntent(AccessPoint.SECURITY_PSK);
-
-        assertThat(getAddWifiButton().isEnabled()).isFalse();
-    }
-
-    private void sendNameChangeBroadcastIntent(String networkName) {
-        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-        Robolectric.flushForegroundThreadScheduler();
-    }
-
-    private void sendSecurityChangeBroadcastIntent(int securityType) {
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE, securityType);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-        Robolectric.flushForegroundThreadScheduler();
-    }
-
-    private MenuItem getAddWifiButton() {
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        return toolbar.getMenuItems().get(0);
-    }
-
-    private boolean isReceiverRegisteredForAction(String action) {
-        List<ShadowLocalBroadcastManager.Wrapper> receivers =
-                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers();
-
-        boolean found = false;
-        for (ShadowLocalBroadcastManager.Wrapper receiver : receivers) {
-            if (receiver.getIntentFilter().hasAction(action)) {
-                found = true;
-            }
-        }
-
-        return found;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
deleted file mode 100644
index 5c633c4..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowDialog;
-import org.robolectric.shadows.ShadowToast;
-
-@RunWith(RobolectricTestRunner.class)
-public class NetworkNameRestrictedPasswordEditTextPreferenceTest {
-
-    private static final String KEY = "test_key";
-
-    private Context mContext;
-    private NetworkNameRestrictedPasswordEditTextPreference mPreference;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-
-        FragmentController<TestSettingsFragment> fragmentController = FragmentController.of(
-                new TestSettingsFragment());
-        TestSettingsFragment fragment = fragmentController.get();
-        fragmentController.setup();
-
-        mPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
-        mPreference.setKey(KEY);
-        fragment.getPreferenceScreen().addPreference(mPreference);
-    }
-
-    @Test
-    public void performClick_noName_toastShown() {
-        mPreference.performClick();
-
-        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
-                mContext.getString(R.string.wifi_no_network_name));
-    }
-
-    @Test
-    public void performClick_hasName_showsDialog() {
-        mPreference.setNetworkName("test_name");
-        mPreference.performClick();
-
-        assertThat(ShadowDialog.getLatestDialog()).isNotNull();
-    }
-
-    /** Concrete {@link SettingsFragment} for testing. */
-    public static class TestSettingsFragment extends SettingsFragment {
-        @Override
-        protected int getPreferenceScreenResId() {
-            return R.xml.settings_fragment;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
deleted file mode 100644
index b5f8e77..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
+++ /dev/null
@@ -1,234 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.util.Pair;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.localbroadcastmanager.content.LocalBroadcastManager;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
-import com.android.car.settings.testutils.ShadowWifiManager;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowLocalBroadcastManager.class, ShadowWifiManager.class})
-public class NetworkPasswordPreferenceControllerTest {
-
-    private Context mContext;
-    private LocalBroadcastManager mLocalBroadcastManager;
-    private NetworkNameRestrictedPasswordEditTextPreference mPasswordEditTextPreference;
-    private PreferenceControllerTestHelper<NetworkPasswordPreferenceController>
-            mPreferenceControllerHelper;
-    private NetworkPasswordPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
-        mPasswordEditTextPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                NetworkPasswordPreferenceController.class, mPasswordEditTextPreference);
-        mController = mPreferenceControllerHelper.getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowLocalBroadcastManager.reset();
-        ShadowWifiManager.reset();
-    }
-
-    @Test
-    public void onCreate_registersNameChangeListener() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
-    }
-
-    @Test
-    public void onCreate_registersSecurityChangeListener() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
-    }
-
-    @Test
-    public void onDestroy_unregistersNameChangeListener() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isFalse();
-    }
-
-    @Test
-    public void onDestroy_unregistersSecurityChangeListener() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(isReceiverRegisteredForAction(
-                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isFalse();
-    }
-
-    @Test
-    public void receiveNameChangeIntent_emptyName_dialogNameRemoved() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "");
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        assertThat(mPasswordEditTextPreference.getDialogTitle()).isEqualTo(
-                mContext.getString(R.string.wifi_password));
-    }
-
-    @Test
-    public void receiveNameChangeIntent_name_dialogNameSet() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        String networkName = "test_network_name";
-        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        assertThat(mPasswordEditTextPreference.getDialogTitle()).isEqualTo(networkName);
-    }
-
-    @Test
-    public void receiveSecurityChangeIntent_setUnsecureType_preferenceHidden() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_NONE);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        assertThat(mPasswordEditTextPreference.isVisible()).isFalse();
-    }
-
-    @Test
-    public void receiveSecurityChangeIntent_setSecureType_preferenceVisible() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_PSK);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        assertThat(mPasswordEditTextPreference.isVisible()).isTrue();
-    }
-
-    @Test
-    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiAdded() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        String networkName = "network_name";
-        String password = "password";
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_PSK);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-        mPasswordEditTextPreference.callChangeListener(password);
-
-        WifiConfiguration lastAdded = getShadowWifiManager().getLastAddedNetworkConfiguration();
-        assertThat(lastAdded.SSID).contains(networkName);
-        assertThat(lastAdded.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA_PSK);
-        assertThat(lastAdded.preSharedKey).contains(password);
-    }
-
-    @Test
-    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiEnabled() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        String networkName = "network_name";
-        String password = "password";
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_PSK);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-        mPasswordEditTextPreference.callChangeListener(password);
-
-        Pair<Integer, Boolean> lastEnabled = getShadowWifiManager().getLastEnabledNetwork();
-        // Enable should be called on the most recently added network id.
-        int lastNetworkId = getShadowWifiManager().getLastAddedNetworkConfiguration().networkId;
-        assertThat(lastEnabled.first).isEqualTo(lastNetworkId);
-        // WifiUtil will try to enable the network right away.
-        assertThat(lastEnabled.second).isTrue();
-    }
-
-    @Test
-    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiConnected() {
-        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        String networkName = "network_name";
-        String password = "password";
-        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_PSK);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-
-        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
-        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
-        mLocalBroadcastManager.sendBroadcastSync(intent);
-        mPasswordEditTextPreference.callChangeListener(password);
-
-        WifiInfo lastConnected = getShadowWifiManager().getActiveWifiInfo();
-
-        assertThat(lastConnected.getSSID()).contains(networkName);
-    }
-
-    private ShadowWifiManager getShadowWifiManager() {
-        return Shadow.extract(mContext.getSystemService(WifiManager.class));
-    }
-
-    private boolean isReceiverRegisteredForAction(String action) {
-        List<ShadowLocalBroadcastManager.Wrapper> receivers =
-                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers();
-
-        boolean found = false;
-        for (ShadowLocalBroadcastManager.Wrapper receiver : receivers) {
-            if (receiver.getIntentFilter().hasAction(action)) {
-                found = true;
-            }
-        }
-
-        return found;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
deleted file mode 100644
index 6facada..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.Intent;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.ListPreference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowLocalBroadcastManager.class})
-public class NetworkSecurityPreferenceControllerTest {
-
-    private Context mContext;
-    private ListPreference mListPreference;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mListPreference = new ListPreference(mContext);
-        PreferenceControllerTestHelper<NetworkSecurityPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        NetworkSecurityPreferenceController.class, mListPreference);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @After
-    public void tearDown() {
-        ShadowLocalBroadcastManager.reset();
-    }
-
-    @Test
-    public void handlePreferenceChanged_unsecureNetwork_summaryUpdated() {
-        String value = Integer.toString(AccessPoint.SECURITY_NONE);
-        mListPreference.callChangeListener(value);
-
-        assertThat(mListPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.wifi_security_none));
-    }
-
-    @Test
-    public void handlePreferenceChanged_pskNetwork_summaryUpdated() {
-        String value = Integer.toString(AccessPoint.SECURITY_PSK);
-        mListPreference.callChangeListener(value);
-
-        assertThat(mListPreference.getSummary()).isEqualTo(
-                mContext.getString(R.string.wifi_security_psk_generic));
-    }
-
-    @Test
-    public void handlePreferenceChanged_broadcastIsSent() {
-        String value = Integer.toString(AccessPoint.SECURITY_PSK);
-        mListPreference.callChangeListener(value);
-
-        List<Intent> intents = ShadowLocalBroadcastManager.getSentBroadcastIntents();
-        assertThat(intents).hasSize(1);
-        assertThat(intents.get(0).getAction()).isEqualTo(
-                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
-        assertThat(intents.get(0).getIntExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
-                AccessPoint.SECURITY_NONE)).isEqualTo(Integer.parseInt(value));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java
deleted file mode 100644
index 6ef98c5..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java
+++ /dev/null
@@ -1,152 +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.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarWifiManager;
-import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
-
-import org.junit.After;
-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;
-import org.robolectric.annotation.Config;
-
-/** Unit test for {@link WifiEntryPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarWifiManager.class})
-public class WifiEntryPreferenceControllerTest {
-
-    private Context mContext;
-    private CarUiTwoActionSwitchPreference mSeparateSwitchPreference;
-    private PreferenceControllerTestHelper<WifiEntryPreferenceController> mControllerHelper;
-    private WifiEntryPreferenceController mController;
-    @Mock
-    private CarWifiManager mCarWifiManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mContext = ApplicationProvider.getApplicationContext();
-        mSeparateSwitchPreference = new CarUiTwoActionSwitchPreference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                WifiEntryPreferenceController.class, mSeparateSwitchPreference);
-        mController = mControllerHelper.getController();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarWifiManager.reset();
-    }
-
-    @Test
-    public void onStart_wifiDisabled_setsSwitchUnchecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mSeparateSwitchPreference.setSecondaryActionChecked(true);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        assertThat(mSeparateSwitchPreference.isSecondaryActionChecked()).isFalse();
-    }
-
-    @Test
-    public void onStart_wifiEnabled_setsSwitchChecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
-        mSeparateSwitchPreference.setSecondaryActionChecked(false);
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        assertThat(mSeparateSwitchPreference.isSecondaryActionChecked()).isTrue();
-    }
-
-    @Test
-    public void onWifiStateChanged_disabled_setsSwitchUnchecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mController.onWifiStateChanged(WifiManager.WIFI_STATE_DISABLED);
-
-        assertThat(mSeparateSwitchPreference.isSecondaryActionChecked()).isFalse();
-    }
-
-    @Test
-    public void onWifiStateChanged_enabled_setsSwitchChecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
-        mController.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
-
-        assertThat(mSeparateSwitchPreference.isSecondaryActionChecked()).isTrue();
-    }
-
-    @Test
-    public void onWifiStateChanged_enabling_setsSwitchChecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
-        mController.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLING);
-
-        assertThat(mSeparateSwitchPreference.isSecondaryActionChecked()).isTrue();
-    }
-
-    @Test
-    public void getAvailabilityStatus_wifiAvailable_available() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_wifiNotAvailable_unsupportedOnDevice() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ false);
-
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiRequestToggleActivityTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiRequestToggleActivityTest.java
index d4d9477..8e9f7ce 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiRequestToggleActivityTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiRequestToggleActivityTest.java
@@ -18,11 +18,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.wifi.WifiManager;
 
+import androidx.lifecycle.Lifecycle;
+
 import com.android.car.settings.common.ConfirmationDialogFragment;
 import com.android.car.settings.testutils.ShadowCarWifiManager;
 
@@ -51,7 +55,7 @@
         mContext = RuntimeEnvironment.application;
         Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI,
                 true);
-        ShadowCarWifiManager.setInstance(new CarWifiManager(mContext));
+        ShadowCarWifiManager.setInstance(new CarWifiManager(mContext, mock(Lifecycle.class)));
     }
 
     @After
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiSettingsFragmentTest.java
deleted file mode 100644
index 4b1a830..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiSettingsFragmentTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2020 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.car.settings.wifi;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiManager;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowCarWifiManager;
-import com.android.car.settings.testutils.ShadowWifiManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-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;
-import org.robolectric.annotation.Config;
-
-/** Unit test for {@link WifiSettingsFragment}. */
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarWifiManager.class})
-public class WifiSettingsFragmentTest {
-
-    private Context mContext;
-    private WifiSettingsFragment mFragment;
-    private FragmentController<WifiSettingsFragment> mFragmentController;
-    @Mock
-    private CarWifiManager mCarWifiManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mContext = ApplicationProvider.getApplicationContext();
-        mFragment = new WifiSettingsFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowWifiManager.reset();
-    }
-
-    @Test
-    public void onWifiStateChanged_disabled_setsSwitchUnchecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
-        mFragmentController.setup();
-
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mFragment.onWifiStateChanged(WifiManager.WIFI_STATE_DISABLED);
-
-        assertThat(getWifiSwitch().isChecked()).isFalse();
-    }
-
-    @Test
-    public void onWifiStateChanged_enabled_setsSwitchChecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mFragmentController.setup();
-
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
-        mFragment.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
-
-        assertThat(getWifiSwitch().isChecked()).isTrue();
-    }
-
-    @Test
-    public void onWifiStateChanged_enabling_setsSwitchChecked() {
-        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
-                PackageManager.FEATURE_WIFI, /* supported= */ true);
-        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
-        mFragmentController.setup();
-
-        mFragment.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLING);
-
-        assertThat(getWifiSwitch().isChecked()).isTrue();
-    }
-
-    private MenuItem getWifiSwitch() {
-        ToolbarController toolbar = requireToolbar(mFragment.requireActivity());
-        return toolbar.getMenuItems().get(0);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java
index 5144d8c..9b40174 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java
@@ -18,10 +18,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.net.wifi.WifiManager;
 
+import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.Lifecycle.Event;
 import androidx.preference.Preference;
 
@@ -66,7 +70,9 @@
                 new PreferenceControllerTestHelper<>(mContext,
                         WifiStatusPreferenceController.class, mPreference);
         mController = controllerHelper.getController();
-        ShadowCarWifiManager.setInstance(new CarWifiManager(mContext));
+        when(controllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
+        ShadowCarWifiManager.setInstance(new CarWifiManager(mContext, mock(Lifecycle.class)));
         controllerHelper.sendLifecycleEvent(Event.ON_CREATE);
     }
 
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java
index 00d7870..c5483f2 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java
@@ -18,6 +18,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.net.wifi.SoftApConfiguration;
 
@@ -50,12 +53,14 @@
     @Before
     public void setup() {
         mContext = RuntimeEnvironment.application;
-        mCarWifiManager = new CarWifiManager(mContext);
+        mCarWifiManager = new CarWifiManager(mContext, mock(Lifecycle.class));
         mPreference = new ListPreference(mContext);
         mControllerHelper =
                 new PreferenceControllerTestHelper<WifiTetherApBandPreferenceController>(mContext,
                         WifiTetherApBandPreferenceController.class, mPreference);
         mController = mControllerHelper.getController();
+        when(mControllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
     }
 
     @After
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java
index e0c2bdf..181cd9d 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java
@@ -18,6 +18,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.content.Intent;
@@ -96,6 +99,8 @@
                 new PreferenceControllerTestHelper<TestWifiTetherBasePreferenceController>(mContext,
                         TestWifiTetherBasePreferenceController.class, mPreference);
         mController = mControllerHelper.getController();
+        when(mControllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
     }
 
     @After
@@ -104,31 +109,6 @@
     }
 
     @Test
-    public void onStart_shouldStartCarWifiManager() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        assertThat(getShadowCarWifiManager().getCurrentState())
-                .isEqualTo(getShadowCarWifiManager().STATE_STARTED);
-    }
-
-    @Test
-    public void onStop_shouldStopCarWifiManager() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
-
-        assertThat(getShadowCarWifiManager().getCurrentState())
-                .isEqualTo(getShadowCarWifiManager().STATE_STOPPED);
-    }
-
-    @Test
-    public void onDestroy_shouldDestroyCarWifiManager() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
-        assertThat(getShadowCarWifiManager().getCurrentState())
-                .isEqualTo(getShadowCarWifiManager().STATE_DESTROYED);
-    }
-
-    @Test
     public void noSummaryToShow_defaultSummarySet_shouldShowDefaultSummary() {
         mController.setConfigSummaries(/* summary= */ null, DEFAULT_SUMMARY);
         mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
@@ -179,6 +159,6 @@
     }
 
     private ShadowCarWifiManager getShadowCarWifiManager() {
-        return Shadow.extract(new CarWifiManager(mContext));
+        return Shadow.extract(new CarWifiManager(mContext, mock(Lifecycle.class)));
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java
deleted file mode 100644
index 906b614..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi;
-
-import static com.android.car.ui.core.CarUi.requireToolbar;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.TetheringManager;
-import android.net.wifi.SoftApConfiguration;
-import android.net.wifi.WifiManager;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowCarWifiManager;
-import com.android.car.settings.testutils.ShadowConnectivityManager;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-import com.android.car.ui.toolbar.MenuItem;
-import com.android.car.ui.toolbar.ToolbarController;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.concurrent.Executor;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowCarWifiManager.class, ShadowConnectivityManager.class})
-public class WifiTetherFragmentTest {
-
-    private Context mContext;
-    private WifiTetherFragment mFragment;
-    private FragmentController<WifiTetherFragment> mFragmentController;
-    @Mock
-    private CarWifiManager mCarWifiManager;
-    @Mock
-    private TetheringManager mTetheringManager;
-    @Mock
-    private WifiManager mWifiManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = ApplicationProvider.getApplicationContext();
-        getShadowApplication(mContext).setSystemService(
-                Context.TETHERING_SERVICE, mTetheringManager);
-        when(mWifiManager.getSoftApConfiguration()).thenReturn(
-                new SoftApConfiguration.Builder().build());
-        getShadowApplication(mContext).setSystemService(
-                Context.WIFI_SERVICE, mWifiManager);
-        mFragment = new WifiTetherFragment();
-        mFragmentController = FragmentController.of(mFragment);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowCarWifiManager.reset();
-    }
-
-    @Test
-    public void onStart_tetherStateOn_shouldReturnSwitchStateOn() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(true);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-
-        mFragmentController.setup();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
-    }
-
-    @Test
-    public void onStart_tetherStateOff_shouldReturnSwitchStateOff() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-
-        mFragmentController.setup();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    @Test
-    public void onSwitchOn_shouldAttemptTetherOn() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-
-        mFragmentController.setup();
-        findSwitch(mFragment.requireActivity()).performClick();
-
-        verify(mTetheringManager).startTethering(
-                eq(ConnectivityManager.TETHERING_WIFI),
-                any(Executor.class), any(TetheringManager.StartTetheringCallback.class)
-        );
-    }
-
-    @Test
-    public void onSwitchOff_shouldAttemptTetherOff() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(true);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-
-        mFragmentController.setup();
-        findSwitch(mFragment.requireActivity()).performClick();
-
-        verify(mTetheringManager).stopTethering(ConnectivityManager.TETHERING_WIFI);
-    }
-
-    @Test
-    public void onTetherEnabling_shouldReturnSwitchStateDisabled() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mFragmentController.setup();
-
-        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLING);
-        mContext.sendBroadcast(intent);
-        Robolectric.flushForegroundThreadScheduler();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void onTetherEnabled_shouldReturnSwitchStateEnabledAndOn() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mFragmentController.setup();
-
-        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLED);
-        mContext.sendBroadcast(intent);
-        Robolectric.flushForegroundThreadScheduler();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
-    }
-
-    @Test
-    public void onTetherDisabled_shouldReturnSwitchStateEnabledAndOff() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mFragmentController.setup();
-
-        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_DISABLED);
-        mContext.sendBroadcast(intent);
-        Robolectric.flushForegroundThreadScheduler();
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    @Test
-    public void onEnableTetherFailed_shouldReturnSwitchStateEnabledAndOff() {
-        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
-        ShadowCarWifiManager.setInstance(mCarWifiManager);
-        mFragmentController.setup();
-
-        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLING);
-        mContext.sendBroadcast(intent);
-        Robolectric.flushForegroundThreadScheduler();
-
-        Intent intent2 = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED);
-        mContext.sendBroadcast(intent2);
-
-        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
-        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
-    }
-
-    private MenuItem findSwitch(Activity activity) {
-        ToolbarController toolbar = requireToolbar(activity);
-        return toolbar.getMenuItems().get(0);
-    }
-
-    private ShadowApplication getShadowApplication(Context context) {
-        return Shadow.extract(context);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java
index d661034..d946420 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java
@@ -18,6 +18,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.net.wifi.SoftApConfiguration;
 
@@ -52,7 +55,7 @@
     @Test
     public void onStart_wifiConfigHasSSID_setsSummary() {
         mContext = RuntimeEnvironment.application;
-        mCarWifiManager = new CarWifiManager(mContext);
+        mCarWifiManager = new CarWifiManager(mContext, mock(Lifecycle.class));
         String testSSID = "TEST_SSID";
         SoftApConfiguration config = new SoftApConfiguration.Builder()
                 .setSsid(testSSID)
@@ -62,6 +65,8 @@
         mControllerHelper =
                 new PreferenceControllerTestHelper<WifiTetherNamePreferenceController>(mContext,
                         WifiTetherNamePreferenceController.class, mPreference);
+        when(mControllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
         mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
         assertThat(mPreference.getSummary()).isEqualTo(testSSID);
     }
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java
index 7f68480..dac0a07 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java
@@ -18,6 +18,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.net.wifi.SoftApConfiguration;
@@ -54,12 +57,14 @@
     @Before
     public void setup() {
         mContext = RuntimeEnvironment.application;
-        mCarWifiManager = new CarWifiManager(mContext);
+        mCarWifiManager = new CarWifiManager(mContext, mock(Lifecycle.class));
         mPreference = new ValidatedEditTextPreference(mContext);
         mControllerHelper =
                 new PreferenceControllerTestHelper<WifiTetherPasswordPreferenceController>(mContext,
                         WifiTetherPasswordPreferenceController.class, mPreference);
         mController = mControllerHelper.getController();
+        when(mControllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
     }
 
     @After
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java
deleted file mode 100644
index 5b375fc..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2020 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.car.settings.wifi;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE;
-import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.net.TetheringManager;
-import android.net.wifi.SoftApConfiguration;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.concurrent.Executor;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiTetherPreferenceControllerTest {
-
-    private Context mContext;
-    private Preference mPreference;
-    private PreferenceControllerTestHelper<WifiTetherPreferenceController> mControllerHelper;
-    @Mock
-    private TetheringManager mTetheringManager;
-    private SoftApConfiguration mSoftApConfiguration;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = ApplicationProvider.getApplicationContext();
-        ShadowApplication.getInstance().setSystemService(
-                Context.TETHERING_SERVICE, mTetheringManager);
-
-        mPreference = new Preference(mContext);
-        mControllerHelper =
-                new PreferenceControllerTestHelper<WifiTetherPreferenceController>(mContext,
-                        WifiTetherPreferenceController.class, mPreference);
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-    }
-
-    @Test
-    public void onStart_isAvailableForViewing() {
-        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                AVAILABLE_FOR_VIEWING);
-    }
-
-    @Test
-    public void onStart_registersTetheringEventCallback() {
-        verify(mTetheringManager).registerTetheringEventCallback(
-                any(Executor.class), any(TetheringManager.TetheringEventCallback.class));
-    }
-
-    @Test
-    public void onStop_unregistersTetheringEventCallback() {
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
-
-        verify(mTetheringManager).unregisterTetheringEventCallback(
-                any(TetheringManager.TetheringEventCallback.class));
-    }
-
-    @Test
-    public void onTetheringSupported_false_isUnsupportedOnDevice() {
-        ArgumentCaptor<TetheringManager.TetheringEventCallback> captor =
-                ArgumentCaptor.forClass(TetheringManager.TetheringEventCallback.class);
-        verify(mTetheringManager).registerTetheringEventCallback(
-                any(Executor.class), captor.capture());
-
-        captor.getValue().onTetheringSupported(false);
-
-        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
-                UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void onTetheringSupported_true_isAvailable() {
-        ArgumentCaptor<TetheringManager.TetheringEventCallback> captor =
-                ArgumentCaptor.forClass(TetheringManager.TetheringEventCallback.class);
-        verify(mTetheringManager).registerTetheringEventCallback(
-                any(Executor.class), captor.capture());
-        captor.getValue().onTetheringSupported(false);
-
-        captor.getValue().onTetheringSupported(true);
-
-        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(AVAILABLE);
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java
index 7b87b3e..5cf6daf 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java
@@ -18,6 +18,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.net.wifi.SoftApConfiguration;
@@ -51,12 +54,14 @@
     @Before
     public void setup() {
         mContext = RuntimeEnvironment.application;
-        mCarWifiManager = new CarWifiManager(mContext);
+        mCarWifiManager = new CarWifiManager(mContext, mock(Lifecycle.class));
         mPreference = new ListPreference(mContext);
         mControllerHelper =
                 new PreferenceControllerTestHelper<WifiTetherSecurityPreferenceController>(mContext,
                         WifiTetherSecurityPreferenceController.class, mPreference);
         mController = mControllerHelper.getController();
+        when(mControllerHelper.getMockFragmentController().getSettingsLifecycle())
+                .thenReturn(mock(Lifecycle.class));
     }
 
     @After
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
deleted file mode 100644
index b160de8..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
+++ /dev/null
@@ -1,95 +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.
- */
-
-package com.android.car.settings.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.wifi.AccessPoint;
-
-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.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiFrequencyPreferenceControllerTest {
-
-    @Mock
-    private AccessPoint mMockAccessPoint;
-    @Mock
-    private WifiInfoProvider mMockWifiInfoProvider;
-    @Mock
-    private NetworkInfo mMockNetworkInfo;
-    @Mock
-    private WifiInfo mMockWifiInfo;
-
-    private WifiDetailsPreference mPreference;
-    private Context mContext;
-    private WifiFrequencyPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
-        mPreference = new WifiDetailsPreference(mContext);
-
-        PreferenceControllerTestHelper<WifiFrequencyPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        WifiFrequencyPreferenceController.class, mPreference);
-        mController = (WifiFrequencyPreferenceController) controllerHelper.getController().init(
-                mMockAccessPoint, mMockWifiInfoProvider);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        when(mMockWifiInfoProvider.getWifiInfo()).thenReturn(mMockWifiInfo);
-        when(mMockWifiInfo.getFrequency()).thenReturn(AccessPoint.LOWER_FREQ_24GHZ);
-    }
-
-    @Test
-    public void onWifiChanged_shouldHaveDetailTextSet() {
-        when(mMockAccessPoint.isActive()).thenReturn(true);
-        when(mMockWifiInfo.getFrequency()).thenReturn(AccessPoint.LOWER_FREQ_5GHZ);
-
-        String expected = mContext.getResources().getString(R.string.wifi_band_5ghz);
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mPreference.getDetailText()).isEqualTo(expected);
-    }
-
-    @Test
-    public void onWifiChanged_isNotActive_noUpdate() {
-        when(mMockAccessPoint.isActive()).thenReturn(false);
-
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mPreference.getDetailText()).isNull();
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
deleted file mode 100644
index bdeda8c..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
+++ /dev/null
@@ -1,105 +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.
- */
-
-package com.android.car.settings.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.RouteInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.wifi.AccessPoint;
-
-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.RuntimeEnvironment;
-
-import java.net.InetAddress;
-import java.util.Arrays;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiGatewayPreferenceControllerTest {
-
-    private static final String GATE_WAY = "gateway";
-
-    @Mock
-    private AccessPoint mMockAccessPoint;
-    @Mock
-    private WifiInfoProvider mMockWifiInfoProvider;
-    @Mock
-    private Network mMockNetwork;
-    @Mock
-    private LinkProperties mMockLinkProperties;
-    @Mock
-    private RouteInfo mMockRouteInfo;
-    @Mock
-    private InetAddress mMockInetAddress;
-
-    private Context mContext;
-    private WifiDetailsPreference mPreference;
-    private WifiGatewayPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
-        mPreference = new WifiDetailsPreference(mContext);
-        when(mMockWifiInfoProvider.getLinkProperties()).thenReturn(mMockLinkProperties);
-
-        PreferenceControllerTestHelper<WifiGatewayPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        WifiGatewayPreferenceController.class, mPreference);
-        mController = (WifiGatewayPreferenceController) controllerHelper.getController().init(
-                mMockAccessPoint, mMockWifiInfoProvider);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void onWifiChanged_shouldHaveDetailTextSet() {
-        when(mMockAccessPoint.isActive()).thenReturn(true);
-        when(mMockLinkProperties.getRoutes()).thenReturn(Arrays.asList(mMockRouteInfo));
-        when(mMockRouteInfo.isIPv4Default()).thenReturn(true);
-        when(mMockRouteInfo.hasGateway()).thenReturn(true);
-        when(mMockRouteInfo.getGateway()).thenReturn(mMockInetAddress);
-        when(mMockInetAddress.getHostAddress()).thenReturn(GATE_WAY);
-
-        mController.onLinkPropertiesChanged(mMockNetwork, mMockLinkProperties);
-        assertThat(mPreference.getDetailText()).isEqualTo(GATE_WAY);
-    }
-
-    @Test
-    public void onWifiChanged_isNotActive_noUpdate() {
-        when(mMockAccessPoint.isActive()).thenReturn(false);
-
-        mController.onLinkPropertiesChanged(mMockNetwork, mMockLinkProperties);
-        assertThat(mPreference.getDetailText()).isNull();
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java
deleted file mode 100644
index ddfc9a8..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java
+++ /dev/null
@@ -1,241 +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.
- */
-
-package com.android.car.settings.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.NetworkRequest;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.os.Handler;
-
-import androidx.lifecycle.LifecycleOwner;
-
-import com.android.car.settings.wifi.details.WifiInfoProvider.Listener;
-import com.android.settingslib.wifi.AccessPoint;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiInfoProviderTest {
-    private static final int LEVEL = 1;
-    private static final int RSSI = -55;
-    private static final int LINK_SPEED = 123;
-    private static final String MAC_ADDRESS = WifiInfo.DEFAULT_MAC_ADDRESS;
-    private static final String SECURITY = "None";
-
-    @Mock
-    private AccessPoint mMockAccessPoint;
-    @Mock
-    private ConnectivityManager mMockConnectivityManager;
-    @Mock
-    private Network mMockNetwork;
-    @Mock
-    private NetworkInfo mMockNetworkInfo;
-    @Mock
-    private NetworkInfo mMockNetworkInfo2;
-    @Mock
-    private WifiConfiguration mMockWifiConfig;
-    @Mock
-    private WifiInfo mMockWifiInfo;
-    @Mock
-    private WifiInfo mMockWifiInfo2;
-    @Mock
-    private LinkProperties mMockLinkProperties;
-    @Mock
-    private LinkProperties mMockChangedLinkProperties;
-    @Mock
-    private NetworkCapabilities mMockNetworkCapabilities;
-    @Mock
-    private NetworkCapabilities mMockChangedNetworkCapabilities;
-    @Mock
-    private WifiManager mMockWifiManager;
-    @Mock
-    private Listener mMockListener;
-
-    @Captor
-    private ArgumentCaptor<NetworkCallback> mCallbackCaptor;
-
-    private Context mContext;
-    private WifiInfoProvider mWifiInfoProvider;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(ConnectivityManager.class))
-                .thenReturn(mMockConnectivityManager);
-        when(mContext.getSystemService(WifiManager.class)).thenReturn(mMockWifiManager);
-        when(mMockAccessPoint.getConfig()).thenReturn(mMockWifiConfig);
-        when(mMockAccessPoint.getLevel()).thenReturn(LEVEL);
-        when(mMockAccessPoint.getSecurityString(false)).thenReturn(SECURITY);
-        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
-                .thenReturn(mMockNetworkInfo);
-        when(mMockConnectivityManager.getLinkProperties(any(Network.class)))
-                .thenReturn(mMockLinkProperties);
-        when(mMockConnectivityManager.getNetworkCapabilities(any(Network.class)))
-                .thenReturn(mMockNetworkCapabilities);
-        doNothing().when(mMockConnectivityManager).registerNetworkCallback(
-                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
-        when(mMockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED);
-        when(mMockWifiInfo.getRssi()).thenReturn(RSSI);
-        when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
-        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
-
-        when(mMockWifiManager.getCurrentNetwork()).thenReturn(mMockNetwork);
-
-        mWifiInfoProvider = new WifiInfoProvider(mContext, mMockAccessPoint);
-        mWifiInfoProvider.addListener(mMockListener);
-    }
-
-    @Test
-    public void onStart_allFieldsInitialized() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        assertThat(mWifiInfoProvider.getNetworkInfo()).isNotNull();
-        assertThat(mWifiInfoProvider.getWifiInfo()).isNotNull();
-        assertThat(mWifiInfoProvider.getNetwork()).isNotNull();
-        assertThat(mWifiInfoProvider.getNetworkCapabilities()).isNotNull();
-        assertThat(mWifiInfoProvider.getNetworkConfiguration()).isNotNull();
-        assertThat(mWifiInfoProvider.getLinkProperties()).isNotNull();
-    }
-
-    @Test
-    public void onStart_listenerCallback() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-        verify(mMockListener).onWifiChanged(eq(mMockNetworkInfo), eq(mMockWifiInfo));
-    }
-
-    @Test
-    public void onStart_getsNetwork() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
-    }
-
-    @Test
-    public void networkCallback_shouldBeRegisteredOnStart() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        verify(mMockConnectivityManager).registerNetworkCallback(
-                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
-    }
-
-    @Test
-    public void networkCallback_shouldBeUnregisteredOnStop() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-        mWifiInfoProvider.onStop(mock(LifecycleOwner.class));
-
-        verify(mMockConnectivityManager)
-                .unregisterNetworkCallback(mCallbackCaptor.getValue());
-    }
-
-    @Test
-    public void networkStateChangedIntent_shouldRefetchInfo() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
-        assertThat(mWifiInfoProvider.getWifiInfo()).isEqualTo(mMockWifiInfo);
-        assertThat(mWifiInfoProvider.getNetworkInfo()).isEqualTo(mMockNetworkInfo);
-
-        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo2);
-        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
-                .thenReturn(mMockNetworkInfo2);
-
-        mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
-
-        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
-        assertThat(mWifiInfoProvider.getWifiInfo()).isEqualTo(mMockWifiInfo2);
-        assertThat(mWifiInfoProvider.getNetworkInfo()).isEqualTo(mMockNetworkInfo2);
-    }
-
-    @Test
-    public void rssiChangedIntent_shouldRefetchInfo() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
-        assertThat(mWifiInfoProvider.getWifiInfo()).isEqualTo(mMockWifiInfo);
-        assertThat(mWifiInfoProvider.getNetworkInfo()).isEqualTo(mMockNetworkInfo);
-
-        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo2);
-        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
-                .thenReturn(mMockNetworkInfo2);
-
-        mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
-        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
-        assertThat(mWifiInfoProvider.getWifiInfo()).isEqualTo(mMockWifiInfo2);
-        assertThat(mWifiInfoProvider.getNetworkInfo()).isEqualTo(mMockNetworkInfo2);
-    }
-
-    @Test
-    public void onLost_lisntenerCallback() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        mCallbackCaptor.getValue().onLost(mMockNetwork);
-
-        verify(mMockListener).onLost(any(Network.class));
-    }
-
-    @Test
-    public void onLinkPropertiesChanged_lisntenerCallback() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        mCallbackCaptor.getValue().onLinkPropertiesChanged(
-                mMockNetwork, mMockChangedLinkProperties);
-
-        verify(mMockListener).onLinkPropertiesChanged(
-                any(Network.class), eq(mMockChangedLinkProperties));
-    }
-
-    @Test
-    public void onCapabilitiesChanged_lisntenerCallback() {
-        mWifiInfoProvider.onStart(mock(LifecycleOwner.class));
-
-        mCallbackCaptor.getValue().onCapabilitiesChanged(
-                mMockNetwork, mMockChangedNetworkCapabilities);
-
-        verify(mMockListener).onCapabilitiesChanged(
-                any(Network.class), eq(mMockChangedNetworkCapabilities));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
deleted file mode 100644
index c46e677..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
+++ /dev/null
@@ -1,93 +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.
- */
-
-package com.android.car.settings.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.wifi.AccessPoint;
-
-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.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiMacAddressPreferenceControllerTest {
-
-    private static final String MAC_ADDRESS = "mac address";
-
-    @Mock
-    private AccessPoint mMockAccessPoint;
-    @Mock
-    private WifiInfoProvider mMockWifiInfoProvider;
-    @Mock
-    private NetworkInfo mMockNetworkInfo;
-    @Mock
-    private WifiInfo mMockWifiInfo;
-
-    private Context mContext;
-    private WifiDetailsPreference mPreference;
-    private WifiMacAddressPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
-        mPreference = new WifiDetailsPreference(mContext);
-        when(mMockWifiInfoProvider.getWifiInfo()).thenReturn(mMockWifiInfo);
-
-        PreferenceControllerTestHelper<WifiMacAddressPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        WifiMacAddressPreferenceController.class, mPreference);
-        mController = (WifiMacAddressPreferenceController) controllerHelper.getController().init(
-                mMockAccessPoint, mMockWifiInfoProvider);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void onWifiChanged_shouldHaveDetailTextSet() {
-        when(mMockAccessPoint.isActive()).thenReturn(true);
-        when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
-
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mPreference.getDetailText()).isEqualTo(MAC_ADDRESS);
-    }
-
-    @Test
-    public void onWifiChanged_isNotActive_noUpdate() {
-        when(mMockAccessPoint.isActive()).thenReturn(false);
-
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mPreference.getDetailText()).isNull();
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
deleted file mode 100644
index 0ea0fc6..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
+++ /dev/null
@@ -1,97 +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.
- */
-
-package com.android.car.settings.wifi.details;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
-
-import androidx.lifecycle.Lifecycle;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.settingslib.wifi.AccessPoint;
-
-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.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiSignalStrengthPreferenceControllerTest {
-
-    private static final int LEVEL = 1;
-
-    @Mock
-    private AccessPoint mMockAccessPoint;
-    @Mock
-    private WifiInfoProvider mMockWifiInfoProvider;
-    @Mock
-    private NetworkInfo mMockNetworkInfo;
-    @Mock
-    private WifiInfo mMockWifiInfo;
-
-    private WifiDetailsPreference mWifiDetailPreference;
-    private Context mContext;
-    private WifiSignalStrengthPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = RuntimeEnvironment.application;
-        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
-
-        mWifiDetailPreference = new WifiDetailsPreference(mContext);
-        when(mMockAccessPoint.getLevel()).thenReturn(LEVEL);
-
-        PreferenceControllerTestHelper<WifiSignalStrengthPreferenceController> controllerHelper =
-                new PreferenceControllerTestHelper<>(mContext,
-                        WifiSignalStrengthPreferenceController.class, mWifiDetailPreference);
-        mController =
-                (WifiSignalStrengthPreferenceController) controllerHelper.getController().init(
-                        mMockAccessPoint, mMockWifiInfoProvider);
-        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-    }
-
-    @Test
-    public void onWifiChanged_shouldHaveDetailTextSet() {
-        when(mMockAccessPoint.isActive()).thenReturn(true);
-        String expectedStrength =
-                mContext.getResources().getStringArray(R.array.wifi_signals)[LEVEL];
-
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mWifiDetailPreference.getDetailText()).isEqualTo(expectedStrength);
-    }
-
-    @Test
-    public void onWifiChanged_isNotActive_noUpdate() {
-        when(mMockAccessPoint.isActive()).thenReturn(false);
-
-        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
-        assertThat(mWifiDetailPreference.getDetailText()).isNull();
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
deleted file mode 100644
index 5b3e26e..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi.preferences;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class CellularFallbackTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private SwitchPreference mPreference;
-    private PreferenceControllerTestHelper<CellularFallbackTogglePreferenceController>
-            mPreferenceControllerHelper;
-    private CellularFallbackTogglePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-
-        mPreference = new SwitchPreference(mContext);
-        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                CellularFallbackTogglePreferenceController.class, mPreference);
-        mController = mPreferenceControllerHelper.getController();
-        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
-    }
-
-    @Test
-    public void refreshUi_unchecked() {
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
-        mPreference.setChecked(true);
-
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_checked() {
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
-        mPreference.setChecked(false);
-
-        mController.refreshUi();
-        assertThat(mPreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void handlePreferenceChanged_toggleFalse_setsNull() {
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
-
-        mPreference.callChangeListener(false);
-        assertThat(Settings.Global.getString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isNull();
-    }
-
-    @Test
-    public void handlePreferenceChanged_toggleTrue_setsEnabled() {
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
-
-        mPreference.callChangeListener(true);
-        assertThat(Settings.Global.getString(mContext.getContentResolver(),
-                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isEqualTo("1");
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
deleted file mode 100644
index 2de0532..0000000
--- a/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.wifi.preferences;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.location.LocationManager;
-import android.net.wifi.WifiManager;
-import android.os.Process;
-import android.provider.Settings;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.SwitchPreference;
-import androidx.preference.TwoStatePreference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ConfirmationDialogFragment;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowLocationManager;
-import com.android.car.settings.testutils.ShadowSecureSettings;
-import com.android.car.ui.core.testsupport.CarUiInstallerRobolectric;
-
-import org.junit.After;
-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.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowToast;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
-public class WifiWakeupTogglePreferenceControllerTest {
-
-    private Context mContext;
-    private PreferenceControllerTestHelper<WifiWakeupTogglePreferenceController> mControllerHelper;
-    private WifiWakeupTogglePreferenceController mController;
-    private TwoStatePreference mTwoStatePreference;
-    private LocationManager mLocationManager;
-    @Mock
-    private WifiManager mWifiManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mLocationManager = (LocationManager) mContext.getSystemService(Service.LOCATION_SERVICE);
-        mTwoStatePreference = new SwitchPreference(mContext);
-        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
-                WifiWakeupTogglePreferenceController.class, mTwoStatePreference);
-        mController = mControllerHelper.getController();
-        mController.mWifiManager = mWifiManager;
-
-        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
-        // Needed to install Install CarUiLib BaseLayouts Toolbar for test activity
-        CarUiInstallerRobolectric.install();
-    }
-
-    @After
-    public void tearDown() {
-        ShadowSecureSettings.reset();
-    }
-
-    @Test
-    public void handlePreferenceClicked_locationDisabled_startNewActivity() {
-        setLocationEnabled(false);
-
-        mTwoStatePreference.performClick();
-
-        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
-        assertThat(actual.getAction()).isEqualTo(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
-    }
-
-    @Test
-    public void handlePreferenceClicked_wifiWakeupEnabled_disablesWifiWakeup() {
-        setLocationEnabled(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                1);
-
-        mTwoStatePreference.performClick();
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.WIFI_WAKEUP_ENABLED, 1))
-                .isEqualTo(0);
-    }
-
-    @Test
-    public void handlePreferenceClicked_wifiScanningDisabled_showsDialog() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-
-        mTwoStatePreference.performClick();
-
-        verify(mControllerHelper.getMockFragmentController()).showDialog(
-                any(ConfirmationDialogFragment.class),
-                eq(ConfirmationDialogFragment.TAG));
-    }
-
-    @Test
-    public void handlePreferenceClicked_wifiScanningEnabled_wifiWakeupDisabled_enablesWifiWakeup() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-
-        mTwoStatePreference.performClick();
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.WIFI_WAKEUP_ENABLED, 0))
-                .isEqualTo(1);
-    }
-
-    @Test
-    public void refreshUi_wifiWakeupEnabled_wifiScanningEnabled_locationEnabled_isChecked() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                1);
-        mTwoStatePreference.setChecked(false);
-
-        mController.refreshUi();
-
-        assertThat(mTwoStatePreference.isChecked()).isTrue();
-    }
-
-    @Test
-    public void refreshUi_wifiWakeupDisabled_wifiScanningEnabled_locationEnabled_isNotChecked() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-        mTwoStatePreference.setChecked(true);
-
-        mController.refreshUi();
-
-        assertThat(mTwoStatePreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_wifiWakeupEnabled_wifiScanningDisabled_locationEnabled_isNotChecked() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                1);
-        mTwoStatePreference.setChecked(true);
-
-        mController.refreshUi();
-
-        assertThat(mTwoStatePreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void refreshUi_wifiWakeupEnabled_wifiScanningEnabled_locationDisabled_isNotChecked() {
-        setLocationEnabled(false);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                1);
-        mTwoStatePreference.setChecked(true);
-
-        mController.refreshUi();
-
-        assertThat(mTwoStatePreference.isChecked()).isFalse();
-    }
-
-    @Test
-    public void onConfirmWifiScanning_setsWifiScanningOn() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-
-        mController.mConfirmListener.onConfirm(/* arguments= */ null);
-
-        verify(mWifiManager).setScanAlwaysAvailable(true);
-    }
-
-    @Test
-    public void onConfirmWifiScanning_showsToast() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-
-        mController.mConfirmListener.onConfirm(/* arguments= */ null);
-
-        assertThat(ShadowToast.showedToast(
-                mContext.getString(R.string.wifi_settings_scanning_required_enabled))).isTrue();
-    }
-
-    @Test
-    public void onConfirmWifiScanning_enablesWifiWakeup() {
-        setLocationEnabled(true);
-        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
-                0);
-
-        mController.mConfirmListener.onConfirm(/* arguments= */ null);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.WIFI_WAKEUP_ENABLED, 0)).isEqualTo(1);
-    }
-
-    private void setLocationEnabled(boolean enabled) {
-        mLocationManager.setLocationEnabledForUser(enabled, Process.myUserHandle());
-    }
-}
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index 0d7df78..d733ddc 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -19,6 +19,7 @@
     static_libs: [
         "CarSettingsForUnitTesting",
         "android.car",
+        "android.car.test.utils",
         "androidx.test.core",
         "androidx.test.rules",
         "androidx.test.ext.junit",
@@ -33,5 +34,5 @@
 
     aaptflags: ["--extra-packages com.android.car.settings"],
 
-    instrumentation_for: "CarSettingsForTesting",
+    test_suites: ["device-tests"]
 }
diff --git a/tests/unit/AndroidManifest.xml b/tests/unit/AndroidManifest.xml
index 9842df1..c5a9566 100644
--- a/tests/unit/AndroidManifest.xml
+++ b/tests/unit/AndroidManifest.xml
@@ -58,15 +58,99 @@
     <uses-permission android:name="android.permission.SUGGEST_MANUAL_TIME_AND_ZONE"/>
     <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
+    <uses-permission android:name="android.permission.MANAGE_SENSOR_PRIVACY"/>
+    <uses-permission android:name="android.permission.OBSERVE_SENSOR_PRIVACY"/>
 
     <application android:debuggable="true">
         <uses-library android:name="android.test.runner" />
 
+        <activity
+            android:name="com.android.car.settings.common.SubSettingsActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
         <provider
             android:name="com.android.car.settings.testutils.TestContentProvider"
             android:authorities="com.android.car.settings.testutils.TestContentProvider"
             android:exported="true">
         </provider>
+
+        <activity
+            android:name="com.android.car.settings.testutils.TestFinishActivity">
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.testutils.BaseCarSettingsTestActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.testutils.SinglePaneTestActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.testutils.DualPaneTestActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="false"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.common.DualPaneBaseCarSettingsActivityTest$TestDualPaneHomepageActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="false"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.common.DualPaneBaseCarSettingsActivityTest$TestDualPaneFragmentActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="false"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.testutils.TestSettingsScreenLockActivity"
+            android:theme="@style/CarSettingTheme"
+            android:windowSoftInputMode="adjustPan">
+            <meta-data android:name="com.android.car.settings.SINGLE_PANE" android:value="true"/>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name="com.android.car.settings.system.RegulatoryInfoDisplayActivity"
+            android:theme="@style/CarSettingTheme"
+            android:label="@string/regulatory_labels">
+        </activity>
+
+        <receiver
+            android:name="com.android.car.settings.enterprise.DefaultDeviceAdminReceiver">
+            <meta-data android:name="android.app.device_admin"
+                 android:resource="@xml/empty_device_admin"/>
+        </receiver>
+
+        <receiver
+            android:name="com.android.car.settings.enterprise.FancyDeviceAdminReceiver"
+            android:label="@string/fancy_device_admin_label"
+            android:icon="@drawable/test_icon"
+            android:description="@string/fancy_device_admin_description">
+            <meta-data android:name="android.app.device_admin"
+                 android:resource="@xml/fancy_device_admin"/>
+        </receiver>
+
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/tests/unit/res/drawable/test_icon_2.png b/tests/unit/res/drawable/test_icon_2.png
new file mode 100644
index 0000000..a1cf83e
--- /dev/null
+++ b/tests/unit/res/drawable/test_icon_2.png
Binary files differ
diff --git a/tests/unit/res/values/arrays.xml b/tests/unit/res/values/arrays.xml
new file mode 100644
index 0000000..ba74b45
--- /dev/null
+++ b/tests/unit/res/values/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2021 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<resources>
+    <string-array name="entries" translatable="false">
+        <item>Choose me!</item>
+        <item>No, me!</item>
+        <item>What about me?!</item>
+    </string-array>
+
+    <string-array name="entry_values" translatable="false">
+        <item>alpha</item>
+        <item>beta</item>
+        <item>charlie</item>
+    </string-array>
+</resources>
diff --git a/tests/unit/res/values/config.xml b/tests/unit/res/values/config.xml
new file mode 100644
index 0000000..834bc95
--- /dev/null
+++ b/tests/unit/res/values/config.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Copyright (C) 2021 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<resources>
+    <!-- Whether exit button in settings' root action bar should be shown or not -->
+    <bool name="config_show_settings_root_exit_icon">true</bool>
+    <!-- Whether the root fragment should actually be root -->
+    <bool name="config_is_root_fragment_root">true</bool>
+</resources>
\ No newline at end of file
diff --git a/tests/unit/res/values/internal_resources.xml b/tests/unit/res/values/internal_resources.xml
new file mode 100644
index 0000000..5ed65c2
--- /dev/null
+++ b/tests/unit/res/values/internal_resources.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 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.
+-->
+
+<resources>
+    <bool name="config_automatic_brightness_available">true</bool>
+    <integer name="config_networkAvoidBadWifi">0</integer>
+</resources>
diff --git a/tests/unit/res/values/preference_keys.xml b/tests/unit/res/values/preference_keys.xml
new file mode 100644
index 0000000..860b497
--- /dev/null
+++ b/tests/unit/res/values/preference_keys.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<!-- Namespaced with "tpk" (Test Preference Key) to avoid conflicts. -->
+<resources>
+    <!-- SettingsFragmentTest -->
+    <string name="tpk_fake_controller" translatable="false">fake_controller</string>
+    <string name="tpk_edit_text_preference" translatable="false">edit_text_preference</string>
+    <string name="tpk_list_preference" translatable="false">list_preference</string>
+
+</resources>
diff --git a/tests/unit/res/values/strings.xml b/tests/unit/res/values/strings.xml
new file mode 100644
index 0000000..554e09b
--- /dev/null
+++ b/tests/unit/res/values/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <string name="account_type1_label" translatable="false">Type 1</string>
+    <string name="account_type2_label" translatable="false">Type 2</string>
+    <string name="account_type3_label" translatable="false">Type 3</string>
+
+    <string name="test_positive_button_label" translatable="false">Positive Button</string>
+    <string name="test_negative_button_label" translatable="false">Negative Button</string>
+    <string name="test_neutral_button_label" translatable="false">Neutral Button</string>
+
+    <string name="fancy_device_admin_label" translatable="false">LordOfTheSevenReceiverKingdoms</string>
+    <string name="fancy_device_admin_description" translatable="false">One Receiver to Rule them All</string>
+
+    <string name="test_volume_call" translatable="false">Call Volume</string>
+    <string name="test_volume_music" translatable="false">Music Volume</string>
+</resources>
diff --git a/tests/unit/res/xml/empty_device_admin.xml b/tests/unit/res/xml/empty_device_admin.xml
new file mode 100644
index 0000000..e033f69
--- /dev/null
+++ b/tests/unit/res/xml/empty_device_admin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<device-admin xmlns:android="http://schemas.android.com/apk/res/android"/>
diff --git a/tests/unit/res/xml/empty_preference_screen.xml b/tests/unit/res/xml/empty_preference_screen.xml
new file mode 100644
index 0000000..ddc37bc
--- /dev/null
+++ b/tests/unit/res/xml/empty_preference_screen.xml
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright (C) 2021 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"
+    android:title="empty_preference_screen_title"/>
diff --git a/tests/unit/res/xml/fancy_device_admin.xml b/tests/unit/res/xml/fancy_device_admin.xml
new file mode 100644
index 0000000..7aca6d9
--- /dev/null
+++ b/tests/unit/res/xml/fancy_device_admin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
+    <uses-policies>
+        <!--  Arbitrary number of policies -->
+        <expire-password/>
+        <encrypted-storage/>
+        <force-lock/>
+        <limit-password/>
+        <reset-password/>
+        <watch-login/>
+        <wipe-data/>
+    </uses-policies>
+</device-admin>
diff --git a/tests/unit/res/xml/test_base_settings_fragment.xml b/tests/unit/res/xml/test_base_settings_fragment.xml
new file mode 100644
index 0000000..8bfc2e9
--- /dev/null
+++ b/tests/unit/res/xml/test_base_settings_fragment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2021 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="screen_title">
+    <Preference
+        android:key="@string/tpk_fake_controller"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+    <EditTextPreference
+        android:key="@string/tpk_edit_text_preference"/>
+    <ListPreference
+        android:title="@string/tpk_list_preference"
+        android:dialogTitle="@string/tpk_list_preference"
+        android:entries="@array/entries"
+        android:entryValues="@array/entry_values"
+        android:key="@string/tpk_list_preference"/>
+</PreferenceScreen>
diff --git a/tests/unit/res/xml/test_car_volume_items.xml b/tests/unit/res/xml/test_car_volume_items.xml
new file mode 100644
index 0000000..3ac7903
--- /dev/null
+++ b/tests/unit/res/xml/test_car_volume_items.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!--
+  We use a separate test file due to the difficulty accessing android internal resources in tests.
+-->
+<carVolumeItems xmlns:car="http://schemas.android.com/apk/res-auto">
+    <item car:usage="voice_communication"
+          car:titleText="@string/test_volume_call"
+          car:icon="@drawable/test_icon"/>
+    <item car:usage="voice_communication_signalling"
+          car:titleText="@string/test_volume_call"
+          car:icon="@drawable/test_icon"/>
+    <item car:usage="media"
+          car:titleText="@string/test_volume_music"
+          car:icon="@drawable/test_icon"/>
+</carVolumeItems>
diff --git a/tests/unit/res/xml/test_preference_screen.xml b/tests/unit/res/xml/test_preference_screen.xml
new file mode 100644
index 0000000..96dc874
--- /dev/null
+++ b/tests/unit/res/xml/test_preference_screen.xml
@@ -0,0 +1,29 @@
+<!--
+  ~ Copyright (C) 2021 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="test_screen_title">
+    <Preference
+        android:fragment="com.android.car.settings.testutils.TestSettingsFragment1"
+        android:key="pk_test_preference_1"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.testutils.TestSettingsFragment2"
+        android:key="pk_test_preference_2"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/tests/unit/res/xml/test_top_level_menu_fragment.xml b/tests/unit/res/xml/test_top_level_menu_fragment.xml
new file mode 100644
index 0000000..a8db29d
--- /dev/null
+++ b/tests/unit/res/xml/test_top_level_menu_fragment.xml
@@ -0,0 +1,29 @@
+<!--
+  ~ Copyright (C) 2021 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="test_top_level_menu_screen_title">
+    <Preference
+        android:fragment="com.android.car.settings.testutils.TestSettingsFragment1"
+        android:key="pk_test_fragment_1"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.testutils.TestSettingsFragment2"
+        android:key="pk_test_fragment_2"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceControllerTest.java
new file mode 100644
index 0000000..946ac2e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsBasePreferenceControllerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountDetailsBasePreferenceControllerTest {
+    private static final String ACCOUNT_NAME = "Name";
+    private static final String ACCOUNT_TYPE = "com.acct";
+    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(0);
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUiTwoActionIconPreference mPreference;
+    private AccountDetailsBasePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private AuthenticatorHelper mAuthenticatorHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiTwoActionIconPreference(mContext);
+        mPreferenceController = new TestAccountDetailsBasePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Test
+    public void checkInitialized_accountSetAndUserHandleSet_doesNothing() {
+        mPreferenceController.setAccount(mAccount);
+        mPreferenceController.setUserHandle(mUserHandle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void checkInitialized_nullAccount_throwsIllegalStateException() {
+        mPreferenceController.setUserHandle(mUserHandle);
+        assertThrows(IllegalStateException.class,
+                () -> PreferenceControllerTestUtil.assignPreference(mPreferenceController,
+                        mPreference));
+    }
+
+    @Test
+    public void checkInitialized_nullUserHandle_throwsIllegalStateException() {
+        mPreferenceController.setAccount(mAccount);
+        assertThrows(IllegalStateException.class,
+                () -> PreferenceControllerTestUtil.assignPreference(mPreferenceController,
+                        mPreference));
+    }
+
+    @Test
+    public void onCreate_shouldSetTitle() {
+        mPreferenceController.setAccount(mAccount);
+        mPreferenceController.setUserHandle(mUserHandle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getTitle().toString()).isEqualTo(ACCOUNT_NAME);
+    }
+
+    @Test
+    public void onCreate_shouldSetIcon() {
+        mPreferenceController.setAccount(mAccount);
+        mPreferenceController.setUserHandle(mUserHandle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mAuthenticatorHelper.getDrawableForType(mContext, mAccount.type)).thenReturn(
+                mContext.getDrawable(R.drawable.ic_add));
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    private class TestAccountDetailsBasePreferenceController
+            extends AccountDetailsBasePreferenceController {
+
+        TestAccountDetailsBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        AuthenticatorHelper getAuthenticatorHelper() {
+            return mAuthenticatorHelper;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
new file mode 100644
index 0000000..c648454
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2021 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.pm.UserInfo;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.ToolbarController;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountDetailsFragmentTest {
+    private final Account mAccount = new Account("Name", "com.acct");
+    private final UserInfo mUserInfo = new UserInfo(/* id= */ 0, /* name= */ "name",
+            /* flags= */ 0);
+    private final CharSequence mAccountLabel = "Type 1";
+
+    private AccountDetailsFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+
+    @Mock
+    private AccountManager mMockAccountManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+        mSession = ExtendedMockito.mockitoSession().mockStatic(AccountManager.class,
+                withSettings().lenient()).startMocking();
+        when(AccountManager.get(any())).thenReturn(mMockAccountManager);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onActivityCreated_titleShouldBeSet() {
+        addAccounts(/* hasAccount= */ true);
+        ToolbarController toolbar = mActivity.getToolbar();
+        assertThat(toolbar.getTitle().toString()).isEqualTo(mAccountLabel.toString());
+    }
+
+    @Test
+    public void accountExists_accountStillExists_shouldBeTrue() {
+        addAccounts(/* hasAccount= */ true);
+        assertThat(mFragment.accountExists()).isTrue();
+    }
+
+    @Test
+    public void accountExists_accountWasRemoved_shouldBeFalse() {
+        addAccounts(/* hasAccount= */ false);
+        assertThat(mFragment.accountExists()).isFalse();
+    }
+
+    @Test
+    public void onAccountsUpdate_accountDoesNotExist_shouldGoBack() throws Throwable {
+        addAccounts(/* hasAccount= */ false);
+        mActivityTestRule.runOnUiThread(() -> mFragment.onAccountsUpdate(null));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(mActivity.getOnBackPressedFlag()).isTrue();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String accountDetailsFragmentTag = "account_details_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container,
+                            AccountDetailsFragment.newInstance(mAccount, mAccountLabel, mUserInfo),
+                            accountDetailsFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (AccountDetailsFragment) mFragmentManager.findFragmentByTag(
+                accountDetailsFragmentTag);
+    }
+
+    private void addAccounts(boolean hasAccount) {
+        Account[] accounts;
+        if (hasAccount) {
+            accounts = new Account[]{mAccount};
+        } else {
+            accounts = new Account[0];
+        }
+        when(mMockAccountManager.getAccountsByTypeAsUser(anyString(), any())).thenReturn(accounts);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
new file mode 100644
index 0000000..ec6c234
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountDetailsPreferenceControllerTest {
+    private static final String ACCOUNT_NAME = "Name";
+    private static final String ACCOUNT_TYPE = "com.acct";
+    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(0);
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUiTwoActionIconPreference mPreference;
+    private AccountDetailsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiTwoActionIconPreference(mContext);
+        mPreferenceController = new TestAccountDetailsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setAccount(mAccount);
+        mPreferenceController.setUserHandle(mUserHandle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void cannotModifyUsers_removeAccountButtonShouldNotBeVisible() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isSecondaryActionVisible()).isFalse();
+    }
+
+    @Test
+    public void canModifyUsers_removeAccountButtonShouldBeVisible() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isSecondaryActionVisible()).isTrue();
+    }
+
+    @Test
+    public void onRemoveAccountButtonClicked_canModifyUsers_shouldShowConfirmRemoveAccountDialog() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performSecondaryActionClick();
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    private class TestAccountDetailsPreferenceController
+            extends AccountDetailsPreferenceController {
+
+        TestAccountDetailsPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        ProfileHelper getProfileHelper() {
+            return mMockProfileHelper;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
new file mode 100644
index 0000000..a2c75a2
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountDetailsWithSyncStatusPreferenceControllerTest {
+    private static final int USER_ID = 3;
+    private static final String ACCOUNT_NAME = "Name";
+    private static final String ACCOUNT_TYPE = "com.acct";
+    private static final String AUTHORITY = "authority";
+    private static final String AUTHORITY_2 = "authority2";
+    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(USER_ID);
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUiTwoActionIconPreference mPreference;
+    private AccountDetailsWithSyncStatusPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    private List<SyncInfo> mCurrentSyncs;
+    private Set<SyncAdapterType> mSyncableAdapters;
+    private Set<SyncAdapterType> mVisibleSyncAdapters;
+    private List<String> mSyncsRequested;
+    private List<String> mSyncsCanceled;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiTwoActionIconPreference(mContext);
+        mPreferenceController = new TestAccountDetailsWithSyncStatusPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setAccount(mAccount);
+        mPreferenceController.setUserHandle(mUserHandle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        mCurrentSyncs = new ArrayList<>();
+        mVisibleSyncAdapters = new HashSet<>();
+        mSyncableAdapters = new HashSet<>();
+        mSyncsRequested = new ArrayList<>();
+        mSyncsCanceled = new ArrayList<>();
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(AccountSyncHelper.class,
+                withSettings().lenient()).startMocking();
+        when(AccountSyncHelper.getVisibleSyncAdaptersForAccount(mContext, mAccount, mUserHandle))
+                .thenReturn(mVisibleSyncAdapters);
+        when(AccountSyncHelper.getSyncableSyncAdaptersForAccount(mAccount, mUserHandle))
+                .thenReturn(mSyncableAdapters);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_syncIsNotFailing_summaryShouldBeBlank() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo("");
+    }
+
+    @Test
+    public void onCreate_syncIsFailing_summaryShouldBeSet() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        when(AccountSyncHelper.getSyncState(any(), anyBoolean(), anyBoolean()))
+                .thenReturn(AccountSyncHelper.SyncState.FAILED);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "sync_is_failing"));
+    }
+
+    @Test
+    public void onSyncStatusChanged_summaryShouldUpdated() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo("");
+
+        when(AccountSyncHelper.getSyncState(any(), anyBoolean(), anyBoolean()))
+                .thenReturn(AccountSyncHelper.SyncState.FAILED);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "sync_is_failing"));
+    }
+
+    @Test
+    public void onButtonClicked_doesNotHaveActiveSyncs_shouldSyncSyncableAdapters() {
+        when(AccountSyncHelper.syncIsAllowed(eq(mAccount), anyString(), eq(USER_ID))).thenReturn(
+                true);
+        when(AccountSyncHelper.requestSyncIfAllowed(any(), anyString(),
+                anyInt())).thenCallRealMethod();
+
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performSecondaryActionClick();
+
+        assertThat(mSyncsRequested).contains(AUTHORITY);
+        assertThat(mSyncsRequested).contains(AUTHORITY_2);
+    }
+
+    @Test
+    public void onButtonClicked_doesNotHaveActiveSyncs_syncNotAllowed_shouldNotSyncAdapter() {
+        when(AccountSyncHelper.syncIsAllowed(mAccount, AUTHORITY, USER_ID)).thenReturn(true);
+        when(AccountSyncHelper.syncIsAllowed(mAccount, AUTHORITY_2, USER_ID)).thenReturn(false);
+        when(AccountSyncHelper.requestSyncIfAllowed(any(), anyString(),
+                anyInt())).thenCallRealMethod();
+
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performSecondaryActionClick();
+
+        assertThat(mSyncsRequested).contains(AUTHORITY);
+        assertThat(mSyncsRequested).doesNotContain(AUTHORITY_2);
+    }
+
+    @Test
+    public void onButtonClicked_doesHaveActiveSyncs_shouldCancelSyncForSyncableAdapters() {
+        // Add active syncs
+        SyncInfo syncInfo = mock(SyncInfo.class);
+        mCurrentSyncs.add(syncInfo);
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performSecondaryActionClick();
+
+        assertThat(mSyncsCanceled).contains(AUTHORITY);
+        assertThat(mSyncsCanceled).contains(AUTHORITY_2);
+    }
+
+    private void setUpSyncAdapters(String... authorities) {
+        for (String authority : authorities) {
+            // Adds a sync adapter type that has the right account type and is visible.
+            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
+                    ACCOUNT_TYPE, /* userVisible= */ true, /* supportsUploading= */ true);
+            mSyncableAdapters.add(syncAdapterType);
+        }
+    }
+
+    private void setUpVisibleSyncAdapters(String... authorities) {
+        for (String authority : authorities) {
+            // Adds a sync adapter type that has the right account type and is visible.
+            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
+                    ACCOUNT_TYPE, /* userVisible= */ true, /* supportsUploading= */ true);
+            mVisibleSyncAdapters.add(syncAdapterType);
+        }
+    }
+
+    private class TestAccountDetailsWithSyncStatusPreferenceController
+            extends AccountDetailsWithSyncStatusPreferenceController {
+
+        TestAccountDetailsWithSyncStatusPreferenceController(Context context,
+                String preferenceKey, FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        List<SyncInfo> getCurrentSyncs(int userId) {
+            return mCurrentSyncs;
+        }
+
+        @Override
+        void requestSync(String authority, int userId) {
+            if (AccountSyncHelper.requestSyncIfAllowed(getAccount(), authority, userId)) {
+                mSyncsRequested.add(authority);
+            }
+        }
+
+        @Override
+        void cancelSync(String authority, int userId) {
+            mSyncsCanceled.add(authority);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountGroupPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountGroupPreferenceControllerTest.java
new file mode 100644
index 0000000..8bdfd95
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountGroupPreferenceControllerTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2021 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.car.settings.accounts;
+
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountGroupPreferenceControllerTest {
+    private static final String TEST_USERNAME = "Test Username";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private AccountGroupPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new LogicalPreferenceGroup(mContext);
+        mController = new TestAccountGroupPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Test
+    public void getAvailabilityStatus_currentUser_cannotModifyAccounts_notAvailable() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
+        mController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_currentUser_canModifyAccounts_available() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+        mController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notCurrentUser_canModifyAccounts_notAvailable() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+        mController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notCurrentUser_cannotModifyAccounts_notAvailable() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
+        mController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    private class TestAccountGroupPreferenceController extends AccountGroupPreferenceController {
+
+        TestAccountGroupPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        ProfileHelper getProfileHelper() {
+            return mMockProfileHelper;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
new file mode 100644
index 0000000..16702d7
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2021 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.car.settings.accounts;
+
+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.mockito.Mockito.withSettings;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class AccountListPreferenceControllerTest {
+    private static final int USER_ID = 0;
+    private static final String USER_NAME = "name";
+    private static final int NOT_THIS_USER_ID = 1;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceCategory mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private AccountListPreferenceController mController;
+    private MockitoSession mSession;
+    private Set<String> mAuthenticatedAccountTypes;
+    private Map<String, String> mAccountTypeToLabelMap;
+    private Map<String, List<String>> mAccountTypeToNameMap;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private AuthenticatorHelper mMockAuthenticatorHelper;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private AccountManager mMockAccountManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new PreferenceCategory(mContext);
+        screen.addPreference(mPreference);
+        initMocks();
+        mController = new TestAccountListPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+    }
+
+    @After
+    @UiThreadTest
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_preferenceCategoryTitleShouldBeSet() {
+        mController.onCreate(mLifecycleOwner);
+        String expectedTitle = ResourceTestUtils.getString(mContext, "account_list_title",
+                USER_NAME);
+        assertThat(mPreference.getTitle().toString()).isEqualTo(expectedTitle);
+    }
+
+    @Test
+    public void onCreate_hasNoAccounts_shouldDisplayNoAccountPref() {
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+        Preference noAccountPref = mPreference.getPreference(0);
+
+        assertThat(noAccountPref.getTitle().toString()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "no_accounts_added"));
+    }
+
+    @Test
+    public void onCreate_hasAccounts_shouldDisplayAccounts() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        Preference firstPref = mPreference.getPreference(0);
+        assertThat(firstPref.getTitle().toString()).isEqualTo("Account1");
+        assertThat(firstPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type1_label));
+
+        Preference secondPref = mPreference.getPreference(1);
+        assertThat(secondPref.getTitle().toString()).isEqualTo("Account2");
+        assertThat(secondPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type2_label));
+    }
+
+    @Test
+    public void onCreate_hasUnauthenticatedAccount_shouldNotDisplayAccount() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct3");
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        Preference firstPref = mPreference.getPreference(0);
+        assertThat(firstPref.getTitle().toString()).isEqualTo("Account1");
+        assertThat(firstPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type1_label));
+
+        Preference secondPref = mPreference.getPreference(1);
+        assertThat(secondPref.getTitle().toString()).isEqualTo("Account2");
+        assertThat(secondPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type2_label));
+    }
+
+    @Test
+    public void onAccountsUpdate_isThisUser_shouldForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onAccountsUpdate(new UserHandle(USER_ID));
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+        Preference firstPref = mPreference.getPreference(0);
+        assertThat(firstPref.getTitle().toString()).isEqualTo("Account3");
+        assertThat(firstPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type1_label));
+    }
+
+    @Test
+    public void onAccountsUpdate_updatedUserIsNotCurrentUser_shouldNotForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onAccountsUpdate(new UserHandle(NOT_THIS_USER_ID));
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onUsersUpdate_shouldForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onUsersUpdate();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+        Preference firstPref = mPreference.getPreference(0);
+        assertThat(firstPref.getTitle().toString()).isEqualTo("Account3");
+        assertThat(firstPref.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.account_type1_label));
+    }
+
+    @Test
+    @UiThreadTest
+    public void onAccountPreferenceClicked_shouldLaunchAccountDetailsFragment() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        mController.onCreate(mLifecycleOwner);
+
+        Preference firstPref = mPreference.getPreference(0);
+        firstPref.performClick();
+
+        verify(mFragmentController).launchFragment(any(AccountDetailsFragment.class));
+    }
+
+    private void addAccount(String name, String type) {
+        if (mAccountTypeToNameMap.containsKey(type)) {
+            mAccountTypeToNameMap.get(type).add(name);
+        } else {
+            mAccountTypeToNameMap.put(type, Collections.singletonList(name));
+        }
+        updateEnabledAccountTypes();
+    }
+
+    private void removeAllAccounts() {
+        mAccountTypeToNameMap.clear();
+        updateEnabledAccountTypes();
+    }
+
+    private void initMocks() {
+        mAccountTypeToLabelMap = new HashMap<String, String>() {
+            {
+                put("com.acct1", mContext.getString(R.string.account_type1_label));
+                put("com.acct2", mContext.getString(R.string.account_type2_label));
+                put("com.acct3", mContext.getString(R.string.account_type3_label));
+            }
+        };
+        mAuthenticatedAccountTypes = new HashSet<>(Arrays.asList("com.acct1", "com.acct2"));
+        mAccountTypeToNameMap = new HashMap<>();
+        updateEnabledAccountTypes();
+        when(mMockAuthenticatorHelper.getLabelForType(any(), any())).then(invocation -> {
+            Object[] args = invocation.getArguments();
+            String type = (String) args[1];
+            return mAuthenticatedAccountTypes.contains(type)
+                    ? mAccountTypeToLabelMap.get(type)
+                    : null;
+        });
+        when(mMockAuthenticatorHelper.getDrawableForType(any(), any())).thenReturn(null);
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(ProfileHelper.class, withSettings().lenient())
+                .mockStatic(AccountManager.class, withSettings().lenient())
+                .startMocking();
+
+        when(ProfileHelper.getInstance(mContext)).thenReturn(mMockProfileHelper);
+        UserInfo userInfo = new UserInfo(USER_ID, USER_NAME, 0);
+        when(mMockProfileHelper.getCurrentProcessUserInfo()).thenReturn(userInfo);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        when(AccountManager.get(mContext)).thenReturn(mMockAccountManager);
+        when(mMockAccountManager.getAccountsByTypeAsUser(any(), any())).then(invocation -> {
+            Object[] args = invocation.getArguments();
+            String type = (String) args[0];
+            List<String> accountNames = mAccountTypeToNameMap.get(type);
+            Account[] accounts = new Account[accountNames.size()];
+            for (int i = 0; i < accountNames.size(); i++) {
+                accounts[i] = new Account(accountNames.get(i), type);
+            }
+            return accounts;
+        });
+    }
+
+    private void updateEnabledAccountTypes() {
+        when(mMockAuthenticatorHelper.getEnabledAccountTypes()).thenReturn(
+                mAccountTypeToNameMap.keySet().toArray(new String[0]));
+    }
+
+    private class TestAccountListPreferenceController extends AccountListPreferenceController {
+
+        TestAccountListPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        AuthenticatorHelper createAuthenticatorHelper() {
+            return mMockAuthenticatorHelper;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/AddAccountPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/AddAccountPreferenceControllerTest.java
new file mode 100644
index 0000000..4df762f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/AddAccountPreferenceControllerTest.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2020 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.car.settings.accounts;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class AddAccountPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private AddAccountPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private AccountTypesHelper mMockAccountTypesHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mController = new TestAddAccountPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+        doNothing().when(mContext).startActivity(any());
+    }
+
+    @Test
+    public void cannotModifyUsers_addAccountButtonShouldBeDisabled() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void canModifyUsers_addAccountButtonShouldBeAvailable() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    @UiThreadTest
+    public void clickAddAccountButton_shouldOpenChooseAccountFragment() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        mController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        verify(mFragmentController).launchFragment(any(ChooseAccountFragment.class));
+    }
+
+    @Test
+    public void clickAddAccountButton_shouldNotOpenChooseAccountFragmentWhenOneType() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+        Set<String> accountSet = new HashSet<>();
+        accountSet.add("TEST_ACCOUNT_TYPE_1");
+        when(mMockAccountTypesHelper.getAuthorizedAccountTypes()).thenReturn(accountSet);
+
+        mController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(
+                Intent.class);
+        verify(mContext).startActivity(intentArgumentCaptor.capture());
+
+        Intent intent = intentArgumentCaptor.getValue();
+        assertThat(intent.getComponent().getClassName()).isEqualTo(
+                AddAccountActivity.class.getName());
+    }
+
+    @Test
+    @UiThreadTest
+    public void clickAddAccountButton_shouldOpenChooseAccountFragmentWhenTwoTypes() {
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+        Set<String> accountSet = new HashSet<>();
+        accountSet.add("TEST_ACCOUNT_TYPE_1");
+        accountSet.add("TEST_ACCOUNT_TYPE_2");
+        when(mMockAccountTypesHelper.getAuthorizedAccountTypes()).thenReturn(accountSet);
+
+        mController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        verify(mFragmentController).launchFragment(any(ChooseAccountFragment.class));
+    }
+
+    private class TestAddAccountPreferenceController extends AddAccountPreferenceController {
+
+        TestAddAccountPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        ProfileHelper getProfileHelper() {
+            return mMockProfileHelper;
+        }
+
+        @Override
+        AccountTypesHelper getAccountTypesHelper() {
+            return mMockAccountTypesHelper;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
new file mode 100644
index 0000000..e52c1f3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2021 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.car.settings.accounts;
+
+import static com.android.car.settings.accounts.ChooseAccountPreferenceController.ADD_ACCOUNT_REQUEST_CODE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+@RunWith(AndroidJUnit4.class)
+public class ChooseAccountPreferenceControllerTest {
+    private static final int USER_ID = 0;
+    private static final String USER_NAME = "name";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ChooseAccountPreferenceController mController;
+    private MockitoSession mSession;
+    private Map<String, String> mAccountTypeToLabelMap;
+    private Account[] mAccounts;
+    private AuthenticatorDescription[] mAuthenticatorDescriptions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private AuthenticatorHelper mMockAuthenticatorHelper;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private AccountManager mMockAccountManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreference);
+        initMocks();
+        mController = new ChooseAccountPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mController.setAuthenticatorHelper(mMockAuthenticatorHelper);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+    }
+
+    @After
+    @UiThreadTest
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_authenticatorPreferencesShouldBeSet() {
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        Preference acct1Pref = mPreference.getPreference(0);
+        assertThat(acct1Pref.getTitle().toString()).isEqualTo(
+                mContext.getString(R.string.account_type1_label));
+
+        Preference acct2Pref = mPreference.getPreference(1);
+        assertThat(acct2Pref.getTitle().toString()).isEqualTo(
+                mContext.getString(R.string.account_type2_label));
+    }
+
+    @Test
+    public void onAccountsUpdate_currentUserUpdated_shouldForceUpdate() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        mAuthenticatorDescriptions = Arrays.copyOf(mAuthenticatorDescriptions,
+                mAuthenticatorDescriptions.length + 1);
+        mAuthenticatorDescriptions[mAuthenticatorDescriptions.length - 1] =
+                new AuthenticatorDescription("com.acct3", "com.android.car.settings",
+                        R.string.account_type3_label, 0, 0, 0, false);
+        when(mMockAccountManager.getAuthenticatorTypesAsUser(anyInt())).thenReturn(
+                mAuthenticatorDescriptions);
+
+        mAccounts = Arrays.copyOf(mAccounts, mAccounts.length + 1);
+        mAccounts[mAccounts.length - 1] = new Account(
+                mContext.getString(R.string.account_type3_label), "com.acct3");
+        when(mMockAccountManager.getAccountsAsUser(anyInt())).thenReturn(mAccounts);
+
+        mController.getAccountTypesHelper().updateAuthorizedAccountTypes(false);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(3);
+        Preference acct3Pref = mPreference.getPreference(2);
+        assertThat(acct3Pref.getTitle().toString()).isEqualTo(
+                mContext.getString(R.string.account_type3_label));
+    }
+
+    @Test
+    public void onPreferenceClick_shouldStartActivity() {
+        mController.onCreate(mLifecycleOwner);
+        Preference acct1Pref = mPreference.getPreference(0);
+        acct1Pref.performClick();
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+
+        verify(mFragmentController).startActivityForResult(captor.capture(),
+                anyInt(), any(ActivityResultCallback.class));
+
+        Intent intent = captor.getValue();
+        assertThat(intent.getComponent().getClassName()).isEqualTo(
+                AddAccountActivity.class.getName());
+        assertThat(intent.getStringExtra(AddAccountActivity.EXTRA_SELECTED_ACCOUNT)).isEqualTo(
+                "com.acct1");
+    }
+
+    @Test
+    public void onAccountAdded_shouldGoBack() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+
+        mController.processActivityResult(ADD_ACCOUNT_REQUEST_CODE, /* resultCode= */ 0, /* data= */
+                null);
+
+        verify(mFragmentController).goBack();
+    }
+
+    private void initMocks() {
+        mAccountTypeToLabelMap = new HashMap<String, String>() {
+            {
+                put("com.acct1", mContext.getString(R.string.account_type1_label));
+                put("com.acct2", mContext.getString(R.string.account_type2_label));
+                put("com.acct3", mContext.getString(R.string.account_type3_label));
+            }
+        };
+        when(mMockAuthenticatorHelper.getLabelForType(any(), any())).then(invocation -> {
+            Object[] args = invocation.getArguments();
+            return mAccountTypeToLabelMap.get((String) args[1]);
+        });
+        when(mMockAuthenticatorHelper.getDrawableForType(any(), any())).thenReturn(null);
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(ProfileHelper.class, withSettings().lenient())
+                .mockStatic(AccountManager.class, withSettings().lenient())
+                .startMocking();
+
+        when(ProfileHelper.getInstance(mContext)).thenReturn(mMockProfileHelper);
+        UserInfo userInfo = new UserInfo(USER_ID, USER_NAME, 0);
+        when(mMockProfileHelper.getCurrentProcessUserInfo()).thenReturn(userInfo);
+        when(mMockProfileHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        when(AccountManager.get(mContext)).thenReturn(mMockAccountManager);
+        mAuthenticatorDescriptions = new AuthenticatorDescription[]{
+                new AuthenticatorDescription("com.acct1", "com.android.car.settings",
+                        R.string.account_type1_label, 0, 0, 0, false),
+                new AuthenticatorDescription("com.acct2", "com.android.car.settings",
+                        R.string.account_type2_label, 0, 0, 0, false)
+        };
+        mAccounts = new Account[]{
+                new Account(mContext.getString(R.string.account_type1_label), "com.acct1"),
+                new Account(mContext.getString(R.string.account_type2_label), "com.acct2")
+        };
+        when(mMockAccountManager.getAuthenticatorTypesAsUser(anyInt())).thenReturn(
+                mAuthenticatorDescriptions);
+        when(mMockAccountManager.getAccountsAsUser(anyInt())).thenReturn(mAccounts);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/AllAppsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/AllAppsPreferenceControllerTest.java
new file mode 100644
index 0000000..9e3456c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/AllAppsPreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class AllAppsPreferenceControllerTest {
+
+    private static final int TEST_APP_COUNT = 3;
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private AllAppsPreferenceController mPreferenceController;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new AllAppsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_isUnavailableByDefault() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onRecentAppsCallback_empty_isAvailable() {
+        List<UsageStats> usageStats = new ArrayList<>();
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onRecentAppStatsLoaded(usageStats);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onRecentAppsCallback_notEmpty_isUnavailable() {
+        List<UsageStats> usageStats = new ArrayList<>();
+        usageStats.add(new UsageStats());
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onRecentAppStatsLoaded(usageStats);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onAppCountCallback_summarySet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onInstalledAppCountLoaded(TEST_APP_COUNT);
+
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getString(
+                R.string.apps_view_all_apps_title, TEST_APP_COUNT));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceControllerTest.java
index 8303d20..be6ddae 100644
--- a/tests/unit/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/car/settings/applications/ApplicationActionButtonsPreferenceControllerTest.java
@@ -20,6 +20,7 @@
 import static com.android.car.settings.applications.ApplicationActionButtonsPreferenceController.FORCE_STOP_CONFIRM_DIALOG_TAG;
 import static com.android.car.settings.applications.ApplicationActionButtonsPreferenceController.UNINSTALL_REQUEST_CODE;
 import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+import static com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment.DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -64,6 +65,7 @@
 import com.android.car.settings.common.ConfirmationDialogFragment;
 import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment;
 import com.android.car.settings.testutils.ResourceTestUtils;
 import com.android.car.settings.testutils.TestLifecycleOwner;
 import com.android.settingslib.applications.ApplicationsState;
@@ -361,8 +363,7 @@
     public void onStart_appsControlUserRestriction_disablesUninstallButton() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
-        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_APPS_CONTROL)).thenReturn(
-                true);
+        mockDisabledByUserManagerRestriction(UserManager.DISALLOW_APPS_CONTROL);
 
         mPreferenceController.onCreate(mLifecycleOwner);
 
@@ -370,11 +371,21 @@
     }
 
     @Test
+    public void onStart_appsControlUserRestrictionByDeviceAdmin_disablesUninstallButton() {
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+        mockDisabledByDevicePolicyManagerRestriction(UserManager.DISALLOW_APPS_CONTROL);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(getUninstallButton().isEnabled()).isTrue();
+    }
+
+    @Test
     public void onStart_uninstallAppsRestriction_disablesUninstallButton() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
-        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_UNINSTALL_APPS)).thenReturn(
-                true);
+        mockDisabledByUserManagerRestriction(UserManager.DISALLOW_UNINSTALL_APPS);
 
         mPreferenceController.onCreate(mLifecycleOwner);
 
@@ -382,6 +393,17 @@
     }
 
     @Test
+    public void onStart_uninstallAppsRestrictionByDeviceAdmin_disablesUninstallButton() {
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+        mockDisabledByDevicePolicyManagerRestriction(UserManager.DISALLOW_UNINSTALL_APPS);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(getUninstallButton().isEnabled()).isTrue();
+    }
+
+    @Test
     public void onCreate_forceStopButtonInitialized() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
@@ -427,8 +449,7 @@
     public void onCreate_appsControlUserRestriction_disablesForceStopButton() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
-        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_APPS_CONTROL)).thenReturn(
-                true);
+        mockDisabledByUserManagerRestriction(UserManager.DISALLOW_APPS_CONTROL);
 
         mPreferenceController.onCreate(mLifecycleOwner);
 
@@ -436,6 +457,17 @@
     }
 
     @Test
+    public void onCreate_appsControlUserRestrictionByDeviceAdmin_disablesForceStopButton() {
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+        mockDisabledByDevicePolicyManagerRestriction(UserManager.DISALLOW_APPS_CONTROL);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(getForceStopButton().isEnabled()).isTrue();
+    }
+
+    @Test
     public void onCreate_packageExplicitlyStopped_queriesPackageRestart() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ true, /* enabled= */ true, /* system= */ false);
@@ -513,6 +545,36 @@
     }
 
     @Test
+    public void forceStopClicked_showsDisabledByDeviceAdminDialog() {
+        mockDisabledByDevicePolicyManagerRestriction(UserManager.DISALLOW_APPS_CONTROL);
+
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        getForceStopButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).showDialog(any(ActionDisabledByAdminDialogFragment.class),
+                eq(DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG));
+    }
+
+    @Test
+    public void forceStopClicked_notDisabledByDeviceAdminDialog_forDifferentUserRestrictionType() {
+        mockDisabledByDevicePolicyManagerRestriction(UserManager.DISALLOW_UNINSTALL_APPS);
+
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        getForceStopButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(FORCE_STOP_CONFIRM_DIALOG_TAG));
+    }
+
+    @Test
     public void forceStopDialogConfirmed_forceStopsPackage() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
@@ -587,6 +649,31 @@
     }
 
     @Test
+    public void uninstallClicked_showsDisabledByDeviceAdminDialog_forDisallowAppsControl() {
+        testShowingDisabledByDeviceAdminDialogWhenUninstallClicked(
+                UserManager.DISALLOW_APPS_CONTROL);
+    }
+
+    @Test
+    public void uninstallClicked_showsDisabledByDeviceAdminDialog_forDisallowUninstallApps() {
+        testShowingDisabledByDeviceAdminDialogWhenUninstallClicked(
+                UserManager.DISALLOW_UNINSTALL_APPS);
+    }
+
+    private void testShowingDisabledByDeviceAdminDialogWhenUninstallClicked(String restriction) {
+        mockDisabledByDevicePolicyManagerRestriction(restriction);
+        setupAndAssignPreference();
+        setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        getUninstallButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).showDialog(any(ActionDisabledByAdminDialogFragment.class),
+                eq(DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG));
+    }
+
+    @Test
     public void processActivityResult_uninstall_resultOk_goesBack() {
         setupAndAssignPreference();
         setApplicationInfo(/* stopped= */ false, /* enabled= */ true, /* system= */ false);
@@ -656,4 +743,14 @@
     private ActionButtonInfo getUninstallButton() {
         return mActionButtonsPreference.getButton(ActionButtons.BUTTON1);
     }
+
+    private void mockDisabledByUserManagerRestriction(String restriction) {
+        when(mMockUserManager.hasUserRestriction(restriction)).thenReturn(true);
+        when(mMockUserManager.hasBaseUserRestriction(eq(restriction), any())).thenReturn(true);
+    }
+
+    private void mockDisabledByDevicePolicyManagerRestriction(String restriction) {
+        when(mMockUserManager.hasUserRestriction(restriction)).thenReturn(true);
+        when(mMockUserManager.hasBaseUserRestriction(eq(restriction), any())).thenReturn(false);
+    }
 }
diff --git a/tests/unit/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
new file mode 100644
index 0000000..94d08ac
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+
+@RunWith(AndroidJUnit4.class)
+public class ApplicationsSettingsPreferenceControllerTest {
+
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private LogicalPreferenceGroup mPreferenceGroup;
+    private ApplicationsSettingsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new ApplicationsSettingsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void defaultInitialize_hasNoPreference() {
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_addPreference_hasOnePreference() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mPreferenceController.onDataLoaded(apps);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
+        assertThat(mPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
+    }
+
+    @Test
+    @UiThreadTest
+    public void preferenceClick_launchesDetailFragment() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mPreferenceController.onDataLoaded(apps);
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        verify(mFragmentController).launchFragment(any(ApplicationDetailsFragment.class));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/HibernatedAppsItemManagerTest.java b/tests/unit/src/com/android/car/settings/applications/HibernatedAppsItemManagerTest.java
new file mode 100644
index 0000000..ba5697c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/HibernatedAppsItemManagerTest.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION;
+
+import static com.android.car.settings.applications.ApplicationsUtils.PROPERTY_APP_HIBERNATION_ENABLED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.usage.IUsageStatsManager;
+import android.app.usage.UsageStats;
+import android.app.usage.UsageStatsManager;
+import android.apphibernation.AppHibernationManager;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
+import android.content.res.Resources;
+import android.os.RemoteException;
+import android.provider.DeviceConfig;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class HibernatedAppsItemManagerTest {
+    private static final int CALLBACK_TIMEOUT_MS = 100;
+
+    private static final String HIBERNATED_PACKAGE_NAME = "hibernated_package";
+    private static final String AUTO_REVOKED_PACKAGE_NAME = "auto_revoked_package";
+    private static final String PERMISSION = "permission";
+    private final CountDownLatch mCountDownLatch = new CountDownLatch(1);
+    private final TestListener mHibernatedAppsCountListener = new TestListener();
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private AppHibernationManager mAppHibernationManager;
+    @Mock
+    private IUsageStatsManager mIUsageStatsManager;
+    private Context mContext;
+    private HibernatedAppsItemManager mManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                "true", false);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        when(mContext.getSystemService(AppHibernationManager.class))
+                .thenReturn(mAppHibernationManager);
+        when(mContext.getSystemService(UsageStatsManager.class)).thenReturn(
+                new UsageStatsManager(mContext, mIUsageStatsManager));
+        mManager = new HibernatedAppsItemManager(mContext);
+        mManager.setListener(mHibernatedAppsCountListener);
+    }
+
+
+    @Test
+    public void getSummary_getsRightCountForHibernatedPackage() throws Exception {
+        PackageInfo hibernatedPkg = getHibernatedPackage();
+        when(mPackageManager.getInstalledPackages(anyInt())).thenReturn(
+                Arrays.asList(hibernatedPkg, new PackageInfo()));
+        when(mContext.getResources()).thenReturn(mock(Resources.class));
+
+        mManager.startLoading();
+        mCountDownLatch.await(CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+
+        assertThat(mHibernatedAppsCountListener.mResult).isEqualTo(1);
+    }
+
+    @Test
+    public void getSummary_getsRightCountForUnusedAutoRevokedPackage() throws Exception {
+        PackageInfo autoRevokedPkg = getAutoRevokedPackage();
+        when(mPackageManager.getInstalledPackages(anyInt())).thenReturn(
+                Arrays.asList(autoRevokedPkg, new PackageInfo()));
+        when(mContext.getResources()).thenReturn(mock(Resources.class));
+
+        mManager.startLoading();
+        mCountDownLatch.await(CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+
+        assertThat(mHibernatedAppsCountListener.mResult).isEqualTo(1);
+    }
+
+    @Test
+    public void getSummary_getsRightCountForUsedAutoRevokedPackage() throws Exception {
+        PackageInfo usedAutoRevokedPkg = getAutoRevokedPackage();
+        setAutoRevokedPackageUsageStats();
+        when(mPackageManager.getInstalledPackages(anyInt())).thenReturn(
+                Arrays.asList(usedAutoRevokedPkg, new PackageInfo()));
+        when(mContext.getResources()).thenReturn(mock(Resources.class));
+
+        mManager.startLoading();
+        mCountDownLatch.await(CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+
+        assertThat(mHibernatedAppsCountListener.mResult).isEqualTo(0);
+    }
+
+
+    private PackageInfo getHibernatedPackage() {
+        PackageInfo pi = new PackageInfo();
+        pi.packageName = HIBERNATED_PACKAGE_NAME;
+        pi.requestedPermissions = new String[]{PERMISSION};
+        when(mAppHibernationManager.getHibernatingPackagesForUser())
+                .thenReturn(Arrays.asList(pi.packageName));
+        when(mPackageManager.getPermissionFlags(
+                pi.requestedPermissions[0], pi.packageName, mContext.getUser()))
+                .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED);
+        return pi;
+    }
+
+    private PackageInfo getAutoRevokedPackage() {
+        PackageInfo pi = new PackageInfo();
+        pi.packageName = AUTO_REVOKED_PACKAGE_NAME;
+        pi.requestedPermissions = new String[]{PERMISSION};
+        when(mPackageManager.getPermissionFlags(
+                pi.requestedPermissions[0], pi.packageName, mContext.getUser()))
+                .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED);
+        return pi;
+    }
+
+    private void setAutoRevokedPackageUsageStats() {
+        UsageStats us = new UsageStats();
+        us.mPackageName = AUTO_REVOKED_PACKAGE_NAME;
+        us.mLastTimeVisible = System.currentTimeMillis();
+        try {
+            when(mIUsageStatsManager.queryUsageStats(
+                    anyInt(), anyLong(), anyLong(), anyString(), anyInt()))
+                    .thenReturn(new ParceledListSlice(Arrays.asList(us)));
+        } catch (RemoteException e) {
+            // no-op
+        }
+    }
+
+    private class TestListener implements HibernatedAppsItemManager.HibernatedAppsCountListener {
+        int mResult;
+
+        @Override
+        public void onHibernatedAppsCountLoaded(int hibernatedAppsCount) {
+            mResult = hibernatedAppsCount;
+            mCountDownLatch.countDown();
+        }
+    };
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/HibernatedAppsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/HibernatedAppsPreferenceControllerTest.java
new file mode 100644
index 0000000..2f9a4d4
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/HibernatedAppsPreferenceControllerTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION;
+
+import static com.android.car.settings.applications.ApplicationsUtils.PROPERTY_APP_HIBERNATION_ENABLED;
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.apphibernation.AppHibernationManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.provider.DeviceConfig;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class HibernatedAppsPreferenceControllerTest {
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private AppHibernationManager mAppHibernationManager;
+    @Mock
+    private Preference mPreference;
+    private static final String KEY = "key";
+    private Context mContext;
+    private HibernatedAppsPreferenceController mController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                "true", false);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        when(mContext.getSystemService(AppHibernationManager.class))
+                .thenReturn(mAppHibernationManager);
+        mController = new HibernatedAppsPreferenceController(mContext, KEY, mFragmentController,
+                mCarUxRestrictions);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureDisabled_shouldNotReturnAvailable() {
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                /* value= */ "false", /* makeDefault= */ true);
+
+        assertThat((mController).getAvailabilityStatus()).isNotEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureEnabled_shouldReturnAvailable() {
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                /* value= */ "true", /* makeDefault= */ true);
+
+        assertThat((mController).getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onHibernatedAppsCountCallback_setsSummary() {
+        assignPreference();
+        when(mContext.getResources()).thenReturn(mock(Resources.class));
+        int totalHibernated = 2;
+
+        mController.onHibernatedAppsCountLoaded(totalHibernated);
+
+        verify(mContext.getResources()).getQuantityString(
+                anyInt(), eq(totalHibernated), eq(totalHibernated));
+    }
+
+    private void assignPreference() {
+        PreferenceControllerTestUtil.assignPreference(mController,
+                mPreference);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/HideSystemSwitchPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/HideSystemSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..09f9490
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/HideSystemSwitchPreferenceControllerTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2020 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ColoredSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class HideSystemSwitchPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private SwitchPreference mSwitchPreference;
+    private HideSystemSwitchPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private LifecycleOwner mLifecycleOwner;
+    private SharedPreferences mSharedPreferences;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mSharedPreferences = mContext.getSharedPreferences(
+                AppListFragment.SHARED_PREFERENCE_PATH, Context.MODE_PRIVATE);
+
+        mSwitchPreference = new ColoredSwitchPreference(mContext);
+        mPreferenceController = new HideSystemSwitchPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @After
+    public void tearDown() {
+        mSharedPreferences.edit().clear().apply();
+    }
+
+    @Test
+    public void onStart_sharedPreferenceTrue_switchChecked() {
+        mSharedPreferences.edit().putBoolean(AppListFragment.KEY_HIDE_SYSTEM, true).apply();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onStart_sharedPreferenceFalse_switchUnchecked() {
+        mSharedPreferences.edit().putBoolean(AppListFragment.KEY_HIDE_SYSTEM, false).apply();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceClicked_sharedPreferenceToggled() {
+        mSharedPreferences.edit().putBoolean(AppListFragment.KEY_HIDE_SYSTEM, true).apply();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        mSwitchPreference.performClick();
+        assertThat(mSharedPreferences.getBoolean(AppListFragment.KEY_HIDE_SYSTEM,
+                /* defaultValue= */ true)).isFalse();
+
+        mSwitchPreference.performClick();
+        assertThat(mSharedPreferences.getBoolean(AppListFragment.KEY_HIDE_SYSTEM,
+                /* defaultValue= */ false)).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/InstalledAppCountItemManagerTest.java b/tests/unit/src/com/android/car/settings/applications/InstalledAppCountItemManagerTest.java
new file mode 100644
index 0000000..de9b535
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/InstalledAppCountItemManagerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class InstalledAppCountItemManagerTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private InstalledAppCountItemManager mInstalledAppCountItemManager;
+
+    @Mock
+    private ApplicationInfo mMockApplicationInfo;
+    @Mock
+    private PackageManager mMockPm;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mInstalledAppCountItemManager = new InstalledAppCountItemManager(mContext);
+    }
+
+    @Test
+    public void isUpdatedSystemApp_isCounted() {
+        mMockApplicationInfo.flags = ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+
+        assertThat(mInstalledAppCountItemManager.shouldCountApp(mMockApplicationInfo)).isTrue();
+    }
+
+    @Test
+    public void isSystemApp_userCanOpen_isCounted() {
+        mMockApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+        List<ResolveInfo> intents = new ArrayList<>();
+        intents.add(new ResolveInfo());
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+        when(mMockPm.queryIntentActivitiesAsUser(any(), anyInt(), anyInt())).thenReturn(intents);
+
+        assertThat(mInstalledAppCountItemManager.shouldCountApp(mMockApplicationInfo)).isTrue();
+    }
+
+    @Test
+    public void isSystemApp_userCannotOpen_isNotCounted() {
+        mMockApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+        List<ResolveInfo> intents = new ArrayList<>();
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+        when(mMockPm.queryIntentActivitiesAsUser(any(), anyInt(), anyInt())).thenReturn(intents);
+
+        assertThat(mInstalledAppCountItemManager.shouldCountApp(mMockApplicationInfo)).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
new file mode 100644
index 0000000..8dd774a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class NotificationsPreferenceControllerTest {
+    private static final String PKG_NAME = "package.name";
+    private static final int UID = 1001010;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUxRestrictions mCarUxRestrictions;
+    private NotificationsPreferenceController mController;
+    private TwoStatePreference mTwoStatePreference;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private INotificationManager mMockManager;
+    @Mock
+    private NotificationChannel mMockChannel;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mTwoStatePreference = new SwitchPreference(mContext);
+
+        mController = new NotificationsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mTwoStatePreference);
+
+        mController.mNotificationManager = mMockManager;
+
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = PKG_NAME;
+
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = PKG_NAME;
+        packageInfo.applicationInfo = applicationInfo;
+        packageInfo.applicationInfo.uid = UID;
+        mController.setPackageInfo(packageInfo);
+    }
+
+    @Test
+    public void onCreate_notificationEnabled_isChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onCreate_notificationDisabled_isNotChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_setEnable_enablingNotification() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mTwoStatePreference.callChangeListener(true);
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, true);
+    }
+
+    @Test
+    public void callChangeListener_setDisable_disablingNotification() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mTwoStatePreference.callChangeListener(false);
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, false);
+    }
+
+    @Test
+    public void callChangeListener_onlyHasDefaultChannel_updateChannel() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(true);
+        when(mMockManager
+                .getNotificationChannelForPackage(
+                        PKG_NAME, UID, NotificationChannel.DEFAULT_CHANNEL_ID, null, true))
+                .thenReturn(mMockChannel);
+
+        mTwoStatePreference.callChangeListener(true);
+
+        verify(mMockManager).updateNotificationChannelForPackage(PKG_NAME, UID, mMockChannel);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/PeakPerformancePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/PeakPerformancePreferenceControllerTest.java
new file mode 100644
index 0000000..757166d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/PeakPerformancePreferenceControllerTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.watchdog.CarWatchdogManager;
+import android.car.watchdog.PackageKillableState;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+import org.mockito.quality.Strictness;
+
+import java.util.Collections;
+
+@RunWith(AndroidJUnit4.class)
+public class PeakPerformancePreferenceControllerTest {
+    private static final String PKG_NAME = "package.name";
+    private static final int UID = Process.myUid();
+
+    private MockitoSession mMockingSession;
+    private final Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUxRestrictions mCarUxRestrictions;
+    private UserHandle mUserHandle;
+    private PeakPerformancePreferenceController mController;
+    private TwoStatePreference mTwoStatePreference;
+
+    @Captor
+    ArgumentCaptor<Car.CarServiceLifecycleListener> mCarLifecycleCaptor;
+    @Captor
+    ArgumentCaptor<ConfirmationDialogFragment> mDialogFragment;
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Car mMockCar;
+    @Mock
+    private CarWatchdogManager mMockManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mMockingSession = mockitoSession()
+                .initMocks(this)
+                .mockStatic(Car.class)
+                .strictness(Strictness.LENIENT)
+                .startMocking();
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mUserHandle = UserHandle.getUserHandleForUid(UID);
+
+        mTwoStatePreference = new SwitchPreference(mContext);
+
+        mController = new PeakPerformancePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mTwoStatePreference);
+
+        when(Car.createCar(any(), any(), anyLong(), mCarLifecycleCaptor.capture())).then(
+                invocation -> {
+                    Car.CarServiceLifecycleListener listener = mCarLifecycleCaptor.getValue();
+                    listener.onLifecycleChanged(mMockCar, true);
+                    return mMockCar;
+                });
+        when(mMockCar.getCarManager(Car.CAR_WATCHDOG_SERVICE)).thenReturn(mMockManager);
+
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = PKG_NAME;
+
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = PKG_NAME;
+        packageInfo.applicationInfo = applicationInfo;
+        packageInfo.applicationInfo.uid = UID;
+        mController.setPackageInfo(packageInfo);
+    }
+
+    @After
+    public void tearDown() {
+        mMockingSession.finishMocking();
+    }
+
+    @Test
+    public void onCreate_peakPerformance_withKillableStateYes() {
+        when(mMockManager.getPackageKillableStatesAsUser(any())).thenReturn(
+                Collections.singletonList(
+                        new PackageKillableState(PKG_NAME, mUserHandle.getIdentifier(),
+                                PackageKillableState.KILLABLE_STATE_YES)));
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+        assertThat(mTwoStatePreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_peakPerformance_withKillableStateNo() {
+        when(mMockManager.getPackageKillableStatesAsUser(any())).thenReturn(
+                Collections.singletonList(
+                        new PackageKillableState(PKG_NAME, mUserHandle.getIdentifier(),
+                                PackageKillableState.KILLABLE_STATE_NO)));
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+        assertThat(mTwoStatePreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_peakPerformance_withKillableStateNever() {
+        when(mMockManager.getPackageKillableStatesAsUser(any())).thenReturn(
+                Collections.singletonList(
+                        new PackageKillableState(PKG_NAME, mUserHandle.getIdentifier(),
+                                PackageKillableState.KILLABLE_STATE_NEVER)));
+
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+        assertThat(mTwoStatePreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_enablingPeakPerformance() {
+        when(mMockManager.getPackageKillableStatesAsUser(any())).thenReturn(
+                Collections.singletonList(
+                        new PackageKillableState(PKG_NAME, mUserHandle.getIdentifier(),
+                                PackageKillableState.KILLABLE_STATE_NO)));
+        mController.onCreate(mLifecycleOwner);
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+
+        mTwoStatePreference.callChangeListener(true);
+
+        verify(mMockManager).setKillablePackageAsUser(PKG_NAME, mUserHandle, true);
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+        assertThat(mTwoStatePreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void callChangeListener_disablingPeakPerformance() {
+        when(mMockManager.getPackageKillableStatesAsUser(any())).thenReturn(
+                Collections.singletonList(
+                        new PackageKillableState(PKG_NAME, mUserHandle.getIdentifier(),
+                                PackageKillableState.KILLABLE_STATE_YES)));
+        mController.onCreate(mLifecycleOwner);
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+
+        mTwoStatePreference.callChangeListener(false);
+        verify(mFragmentController).showDialog(mDialogFragment.capture(),
+                eq(PeakPerformancePreferenceController.TURN_OFF_PEAK_PERFORMANCE_DIALOG_TAG));
+
+        mDialogFragment.getValue().getConfirmListener().onConfirm(new Bundle());
+
+        verify(mMockManager).setKillablePackageAsUser(PKG_NAME, mUserHandle, false);
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+        assertThat(mTwoStatePreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/RecentAppsGroupPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/RecentAppsGroupPreferenceControllerTest.java
new file mode 100644
index 0000000..ef241f2
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/RecentAppsGroupPreferenceControllerTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentAppsGroupPreferenceControllerTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private RecentAppsGroupPreferenceController mPreferenceController;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new RecentAppsGroupPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        mPreference = new LogicalPreferenceGroup(mContext);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_isAvailableByDefault() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onRecentAppsCallback_empty_isUnavailable() {
+        List<UsageStats> usageStats = new ArrayList<>();
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onRecentAppStatsLoaded(usageStats);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onRecentAppsCallback_notEmpty_isUnavailable() {
+        List<UsageStats> usageStats = new ArrayList<>();
+        usageStats.add(new UsageStats());
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onRecentAppStatsLoaded(usageStats);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/RecentAppsItemManagerTest.java b/tests/unit/src/com/android/car/settings/applications/RecentAppsItemManagerTest.java
new file mode 100644
index 0000000..531a90f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/RecentAppsItemManagerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.usage.UsageStats;
+import android.app.usage.UsageStatsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.UserHandle;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentAppsItemManagerTest {
+
+    private static final String MOCK_PACKAGE_NAME_1 = "pkg1";
+    private static final String MOCK_PACKAGE_NAME_2 = "pkg2";
+    private static final String MOCK_PACKAGE_NAME_3 = "pkg3";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private RecentAppsItemManager mRecentAppsItemManager;
+
+    @Mock
+    private UsageStatsManager mUsageStatsManager;
+    @Mock
+    private ApplicationsState mAppState;
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private ApplicationsState.AppEntry mAppEntry;
+    @Mock
+    private ApplicationInfo mApplicationInfo;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getApplicationContext()).thenReturn(mContext);
+        when(mContext.getSystemService(UsageStatsManager.class)).thenReturn(mUsageStatsManager);
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+
+        mRecentAppsItemManager = new RecentAppsItemManager(mContext,
+                3 /* maximumApps */, mAppState);
+    }
+
+    @Test
+    public void loadDisplayableRecentApps_oneValidRecentAppSet_shouldHaveOneRecentApp() {
+        final List<UsageStats> stats = new ArrayList<>();
+        final UsageStats stat1 = createUsageStats(MOCK_PACKAGE_NAME_1);
+        stats.add(stat1);
+        // stat1 is valid app.
+        when(mAppState.getEntry(eq(stat1.mPackageName), anyInt()))
+                .thenReturn(mAppEntry);
+        when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(new ResolveInfo());
+        when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
+                .thenReturn(stats);
+        mAppEntry.info = mApplicationInfo;
+
+        mRecentAppsItemManager.loadDisplayableRecentApps(3);
+
+        assertThat(mRecentAppsItemManager.mRecentApps.size()).isEqualTo(1);
+    }
+
+    @Test
+    public void loadDisplayableRecentApps_oneValidAndTwoInvalidSet_shouldHaveOneRecentApp() {
+        final List<UsageStats> stats = new ArrayList<>();
+        final UsageStats stat1 = createUsageStats(MOCK_PACKAGE_NAME_1);
+        final UsageStats stat2 = createUsageStats(MOCK_PACKAGE_NAME_2);
+        final UsageStats stat3 = createUsageStats(MOCK_PACKAGE_NAME_3);
+        stats.add(stat1);
+        stats.add(stat2);
+        stats.add(stat3);
+
+        // stat1, stat2 are valid apps. stat3 is invalid.
+        when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId()))
+                .thenReturn(mAppEntry);
+        when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId()))
+                .thenReturn(mAppEntry);
+        when(mAppState.getEntry(stat3.mPackageName, UserHandle.myUserId()))
+                .thenReturn(null);
+        when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(new ResolveInfo());
+        when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
+                .thenReturn(stats);
+        mAppEntry.info = mApplicationInfo;
+
+        mRecentAppsItemManager.loadDisplayableRecentApps(3);
+
+        // Only stat1. stat2 is skipped because of the package name, stat3 skipped because
+        // it's invalid app.
+        assertThat(mRecentAppsItemManager.mRecentApps.size()).isEqualTo(2);
+    }
+
+    private UsageStats createUsageStats(String packageName) {
+        UsageStats usageStats = new UsageStats();
+        usageStats.mPackageName = packageName;
+        usageStats.mLastTimeUsed = System.currentTimeMillis();
+        return usageStats;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/RecentAppsListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/RecentAppsListPreferenceControllerTest.java
new file mode 100644
index 0000000..48e19df
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/RecentAppsListPreferenceControllerTest.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.usage.UsageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentAppsListPreferenceControllerTest {
+
+    private static final String MOCK_PACKAGE_NAME_1 = "pkg1";
+    private static final String MOCK_PACKAGE_NAME_2 = "pkg2";
+    private static final String MOCK_PACKAGE_NAME_3 = "pkg3";
+    private static final String MOCK_PACKAGE_NAME_4 = "pkg4";
+
+    private static final String MOCK_APP_NAME_1 = "title1";
+    private static final String MOCK_APP_NAME_2 = "title2";
+    private static final String MOCK_APP_NAME_3 = "title3";
+    private static final String MOCK_APP_NAME_4 = "title4";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private RecentAppsListPreferenceController mPreferenceController;
+    private PreferenceCategory mPreferenceCategory;
+    private CarUxRestrictions mCarUxRestrictions;
+    private int mMaxEntryCount;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private ApplicationsState mMockApplicationsState;
+    @Mock
+    private ApplicationInfo mApplicationInfo;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new RecentAppsListPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions, mMockApplicationsState);
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceCategory = new PreferenceCategory(mContext);
+        screen.addPreference(mPreferenceCategory);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceCategory);
+
+        mMaxEntryCount = mContext.getResources().getInteger(
+                R.integer.recent_notifications_apps_list_count);
+    }
+
+    @Test
+    public void onRecentAppsLoaded_displaysApps() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        UsageStats usageStats = createUsageStats(MOCK_PACKAGE_NAME_1);
+        List<UsageStats> mUsageStatsList = new ArrayList<>();
+        mUsageStatsList.add(usageStats);
+        ApplicationsState.AppEntry appEntry = createAppEntry(MOCK_APP_NAME_1);
+
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_1), anyInt()))
+                .thenReturn(appEntry);
+
+        mPreferenceController.onRecentAppStatsLoaded(mUsageStatsList);
+
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo(appEntry.label);
+    }
+
+    @Test
+    public void onRecentAppsLoaded_doesNotDisplayInvalidApps() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        UsageStats usageStats1 = createUsageStats(MOCK_PACKAGE_NAME_1);
+        UsageStats usageStats2 = createUsageStats(MOCK_PACKAGE_NAME_2);
+        List<UsageStats> mUsageStatsList = new ArrayList<>();
+        mUsageStatsList.add(usageStats1);
+        mUsageStatsList.add(usageStats2);
+        ApplicationsState.AppEntry appEntry = createAppEntry(MOCK_APP_NAME_1);
+
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_1), anyInt()))
+                .thenReturn(appEntry);
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_2), anyInt())).thenReturn(null);
+
+        mPreferenceController.onRecentAppStatsLoaded(mUsageStatsList);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onRecentAppsLoaded_moreThanMaximumAllowed_maximumShown() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        UsageStats usageStats1 = createUsageStats(MOCK_PACKAGE_NAME_1);
+        UsageStats usageStats2 = createUsageStats(MOCK_PACKAGE_NAME_2);
+        UsageStats usageStats3 = createUsageStats(MOCK_PACKAGE_NAME_3);
+        UsageStats usageStats4 = createUsageStats(MOCK_PACKAGE_NAME_4);
+        List<UsageStats> mUsageStatsList = new ArrayList<>();
+        mUsageStatsList.add(usageStats1);
+        mUsageStatsList.add(usageStats2);
+        mUsageStatsList.add(usageStats3);
+        mUsageStatsList.add(usageStats4);
+        ApplicationsState.AppEntry appEntry1 = createAppEntry(MOCK_APP_NAME_1);
+        ApplicationsState.AppEntry appEntry2 = createAppEntry(MOCK_APP_NAME_2);
+        ApplicationsState.AppEntry appEntry3 = createAppEntry(MOCK_APP_NAME_3);
+        ApplicationsState.AppEntry appEntry4 = createAppEntry(MOCK_APP_NAME_4);
+
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_1), anyInt()))
+                .thenReturn(appEntry1);
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_2), anyInt()))
+                .thenReturn(appEntry2);
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_3), anyInt()))
+                .thenReturn(appEntry3);
+        when(mMockApplicationsState.getEntry(eq(MOCK_PACKAGE_NAME_4), anyInt()))
+                .thenReturn(appEntry4);
+
+        mPreferenceController.onRecentAppStatsLoaded(mUsageStatsList);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(mMaxEntryCount);
+    }
+
+    private UsageStats createUsageStats(String packageName) {
+        UsageStats usageStats = new UsageStats();
+        usageStats.mPackageName = packageName;
+        usageStats.mEndTimeStamp = System.currentTimeMillis();
+        return usageStats;
+    }
+
+    private ApplicationsState.AppEntry createAppEntry(String label) {
+        ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
+        appEntry.info = mApplicationInfo;
+        appEntry.label = label;
+        return appEntry;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceControllerTest.java
new file mode 100644
index 0000000..67a3983
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/RecentAppsViewAllPreferenceControllerTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentAppsViewAllPreferenceControllerTest {
+
+    private static final int TEST_APP_COUNT = 3;
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private RecentAppsViewAllPreferenceController mPreferenceController;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new RecentAppsViewAllPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_isUnavailableByDefault() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onInstalledAppCountLoaded(TEST_APP_COUNT);
+
+        assertThat(mPreference.getTitle()).isEqualTo(mContext.getResources().getString(
+                R.string.apps_view_all_apps_title, TEST_APP_COUNT));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..7af8ce5
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/appinfo/HibernationSwitchPreferenceControllerTest.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.appinfo;
+
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_DEFAULT;
+import static android.app.AppOpsManager.MODE_IGNORED;
+import static android.app.AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED;
+import static android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION;
+
+import static com.android.car.settings.applications.ApplicationsUtils.PROPERTY_APP_HIBERNATION_ENABLED;
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.AppOpsManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.DeviceConfig;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class HibernationSwitchPreferenceControllerTest {
+    private static final int PACKAGE_UID = 1;
+    private static final String INVALID_PACKAGE_NAME = "invalid_package";
+    private static final String KEY = "key";
+    private static final String VALID_PACKAGE_NAME = "package";
+    private static final String EXEMPTED_PACKAGE_NAME = "exempted_package";
+    private static final String UNEXEMPTED_PACKAGE_NAME = "unexempted_package";
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private AppOpsManager mAppOpsManager;
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private SwitchPreference mPreference;
+
+    private LifecycleOwner mLifecycleOwner;
+    private CarUxRestrictions mCarUxRestrictions;
+    private HibernationSwitchPreferenceController mController;
+    private Context mContext;
+
+    @Before
+    public void setUp() throws PackageManager.NameNotFoundException {
+        MockitoAnnotations.initMocks(this);
+
+        mLifecycleOwner = new TestLifecycleOwner();
+        mContext = spy(ApplicationProvider.getApplicationContext());
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
+        when(mPackageManager.getPackageUid(eq(VALID_PACKAGE_NAME), anyInt()))
+                .thenReturn(PACKAGE_UID);
+        when(mPackageManager.getPackageUid(eq(INVALID_PACKAGE_NAME), anyInt()))
+                .thenThrow(new PackageManager.NameNotFoundException());
+        when(mPackageManager.getTargetSdkVersion(eq(EXEMPTED_PACKAGE_NAME)))
+                .thenReturn(android.os.Build.VERSION_CODES.Q);
+        when(mPackageManager.getTargetSdkVersion(eq(UNEXEMPTED_PACKAGE_NAME)))
+                .thenReturn(android.os.Build.VERSION_CODES.S);
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                /* value= */ "true", /* makeDefault= */ true);
+        mController = new HibernationSwitchPreferenceController(
+                mContext, KEY, mFragmentController, mCarUxRestrictions);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureNotEnabled_shouldNotReturnAvailable() {
+        mController.setPackageName(VALID_PACKAGE_NAME);
+        DeviceConfig.setProperty(NAMESPACE_APP_HIBERNATION, PROPERTY_APP_HIBERNATION_ENABLED,
+                /* value= */ "false", /* makeDefault= */ true);
+
+        assertThat(mController.getAvailabilityStatus()).isNotEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_invalidPackage_shouldReturnNotAvailable() {
+        mController.setPackageName(INVALID_PACKAGE_NAME);
+
+        assertThat(mController.getAvailabilityStatus()).isNotEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_validPackage_shouldReturnAvailable() {
+        mController.setPackageName(VALID_PACKAGE_NAME);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void updateState_exemptedByDefaultPackage_shouldNotCheck() {
+        assignPreference();
+        when(mAppOpsManager.unsafeCheckOpNoThrow(
+                eq(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED), anyInt(), eq(EXEMPTED_PACKAGE_NAME)))
+                .thenReturn(MODE_DEFAULT);
+        mController.setPackageName(EXEMPTED_PACKAGE_NAME);
+
+        mController.onCreate(mLifecycleOwner);
+
+        verify(mPreference).setChecked(false);
+    }
+
+    @Test
+    public void updateState_exemptedPackageOverrideByUser_shouldCheck() {
+        assignPreference();
+        when(mAppOpsManager.unsafeCheckOpNoThrow(
+                eq(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED), anyInt(), eq(EXEMPTED_PACKAGE_NAME)))
+                .thenReturn(MODE_ALLOWED);
+        mController.setPackageName(EXEMPTED_PACKAGE_NAME);
+
+        mController.onCreate(mLifecycleOwner);
+
+        verify(mPreference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_unexemptedPackageOverrideByUser_shouldNotCheck() {
+        assignPreference();
+        when(mAppOpsManager.unsafeCheckOpNoThrow(
+                eq(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED), anyInt(), eq(UNEXEMPTED_PACKAGE_NAME)))
+                .thenReturn(MODE_IGNORED);
+        mController.setPackageName(UNEXEMPTED_PACKAGE_NAME);
+
+        mController.onCreate(mLifecycleOwner);
+
+        verify(mPreference).setChecked(false);
+    }
+
+    private void assignPreference() {
+        PreferenceControllerTestUtil.assignPreference(mController,
+                mPreference);
+    }
+}
+
diff --git a/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
new file mode 100644
index 0000000..1fda403
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiPreference;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class DefaultAppEntryBasePreferenceControllerTest {
+    private static final CharSequence TEST_LABEL = "Test Label";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private CarUiPreference mPreference;
+    private TestDefaultAppEntryBasePreferenceController mController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new CarUiPreference(mContext);
+        mController = new TestDefaultAppEntryBasePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+    }
+
+    @Test
+    public void refreshUi_hasDefaultAppWithLabel_summaryAndIconAreSet() {
+        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
+        when(defaultAppInfo.loadLabel()).thenReturn(TEST_LABEL);
+        when(defaultAppInfo.loadIcon()).thenReturn(mContext.getDrawable(R.drawable.test_icon));
+        mController.setCurrentDefaultAppInfo(defaultAppInfo);
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_LABEL);
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_hasDefaultAppWithoutLabel_summaryAndIconAreNotSet() {
+        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
+        when(defaultAppInfo.loadLabel()).thenReturn(null);
+        when(defaultAppInfo.loadIcon()).thenReturn(null);
+        mController.setCurrentDefaultAppInfo(defaultAppInfo);
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(mPreference.getIcon()).isNull();
+    }
+
+    @Test
+    public void refreshUi_hasNoDefaultApp_summaryAndIconAreNotSet() {
+        mController.setCurrentDefaultAppInfo(null);
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(mPreference.getIcon()).isNull();
+    }
+
+    private static class TestDefaultAppEntryBasePreferenceController extends
+            DefaultAppEntryBasePreferenceController<Preference> {
+
+        private DefaultAppInfo mDefaultAppInfo;
+
+        TestDefaultAppEntryBasePreferenceController(Context context,
+                String preferenceKey, FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+
+        @Nullable
+        @Override
+        protected DefaultAppInfo getCurrentDefaultAppInfo() {
+            return mDefaultAppInfo;
+        }
+
+        protected void setCurrentDefaultAppInfo(DefaultAppInfo defaultAppInfo) {
+            mDefaultAppInfo = defaultAppInfo;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
new file mode 100644
index 0000000..90f0691
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class DefaultAppUtilsTest {
+
+    @Test
+    public void setSafeIcon_smallerThanLimit() {
+        Context context = ApplicationProvider.getApplicationContext();
+        Drawable drawable = context.getDrawable(R.drawable.test_icon_2);
+        int height = drawable.getMinimumHeight();
+        int width = drawable.getMinimumWidth();
+
+        // Set to some value larger than current height or width;
+        int testMaxDimensions = Math.max(height, width) + 1;
+        Drawable icon = DefaultAppUtils.getSafeIcon(drawable, testMaxDimensions);
+
+        assertThat(icon.getMinimumHeight()).isEqualTo(height);
+        assertThat(icon.getMinimumWidth()).isEqualTo(width);
+    }
+
+    @Test
+    public void setSafeIcon_largerThanLimit() {
+        Context context = ApplicationProvider.getApplicationContext();
+        Drawable drawable = context.getDrawable(R.drawable.test_icon_2);
+        int height = drawable.getMinimumHeight();
+        int width = drawable.getMinimumWidth();
+
+        // Set to some value smaller than current height or width;
+        int testMaxDimensions = Math.min(height, width) - 5;
+        Drawable icon = DefaultAppUtils.getSafeIcon(drawable, testMaxDimensions);
+
+        assertThat(icon.getMinimumHeight()).isEqualTo(testMaxDimensions);
+        assertThat(icon.getMinimumWidth()).isEqualTo(testMaxDimensions);
+    }
+
+    @Test
+    public void setSafeIcon_noChangeForVectorDrawable() {
+        Context context = ApplicationProvider.getApplicationContext();
+        Drawable drawable = context.getDrawable(R.drawable.test_icon);
+        int height = drawable.getMinimumHeight();
+        int width = drawable.getMinimumWidth();
+
+        // Set to some value smaller than current height or width;
+        int testMaxDimensions = Math.min(height, width) - 1;
+        Drawable icon = DefaultAppUtils.getSafeIcon(drawable, testMaxDimensions);
+
+        assertThat(icon.getMinimumHeight()).isEqualTo(height);
+        assertThat(icon.getMinimumWidth()).isEqualTo(width);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
new file mode 100644
index 0000000..45f2635
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiRadioButtonPreference;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class DefaultAppsPickerBasePreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private TestDefaultAppsPickerBasePreferenceController mController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mController = new TestDefaultAppsPickerBasePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreferenceGroup);
+    }
+
+    @Test
+    public void refreshUi_noCandidates_hasSingleNoneElement() {
+        mController.setCurrentDefault("");
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        // Has the "None" element.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(preference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_noCandidates_noNoneElement() {
+        mController.setCurrentDefault("");
+        mController.setIncludeNonePreference(false);
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        // None element removed.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_hasAdditionalCandidate_hasTwoElements() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void refreshUi_hasAdditionalCandidateAsDefault_secondElementIsSelected() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        CarUiRadioButtonPreference preference = mPreferenceGroup.findPreference(testKey);
+        assertThat(preference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_currentDefaultApp_nothingHappened() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
+        CarUiRadioButtonPreference otherOption =
+                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(currentDefault.isChecked()).isTrue();
+        assertThat(otherOption.isChecked()).isFalse();
+
+        currentDefault.performClick();
+
+        currentDefault = mPreferenceGroup.findPreference(testKey);
+        otherOption = (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(currentDefault.isChecked()).isTrue();
+        assertThat(otherOption.isChecked()).isFalse();
+    }
+
+    @Test
+    public void performClick_otherOptionNoMessage_otherOptionSelected() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+        mController.setTestMessage(null);
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
+        CarUiRadioButtonPreference otherOption =
+                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(currentDefault.isChecked()).isTrue();
+        assertThat(otherOption.isChecked()).isFalse();
+
+        otherOption.performClick();
+
+        currentDefault = mPreferenceGroup.findPreference(testKey);
+        otherOption = (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(currentDefault.isChecked()).isFalse();
+        assertThat(otherOption.isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_otherOptionHasMessage_dialogOpened() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+        mController.setTestMessage("Non-empty message");
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        CarUiRadioButtonPreference currentDefault = mPreferenceGroup.findPreference(testKey);
+        CarUiRadioButtonPreference otherOption =
+                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(currentDefault.isChecked()).isTrue();
+        assertThat(otherOption.isChecked()).isFalse();
+
+        otherOption.performClick();
+
+        verify(mFragmentController).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void performClick_otherOptionNoMessage_newKeySet() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+
+        // Currently, the testApp is the default selection.
+        mController.setCurrentDefault(testKey);
+
+        mController.onCreate(mLifecycleOwner);
+        mController.refreshUi();
+
+        // This preference represents the "None" option.
+        CarUiRadioButtonPreference otherOption =
+                (CarUiRadioButtonPreference) mPreferenceGroup.getPreference(0);
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(testKey);
+
+        otherOption.performClick();
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo("");
+    }
+
+    private static class TestDefaultAppsPickerBasePreferenceController extends
+            DefaultAppsPickerBasePreferenceController {
+
+        private List<DefaultAppInfo> mCandidates;
+        private String mKey;
+        private CharSequence mMessage;
+        private boolean mIncludeNone = true;
+
+        TestDefaultAppsPickerBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        public void setTestCandidates(List<DefaultAppInfo> candidates) {
+            mCandidates = candidates;
+        }
+
+        public void setTestMessage(String s) {
+            mMessage = s;
+        }
+
+        public void setIncludeNonePreference(boolean include) {
+            mIncludeNone = include;
+        }
+
+        @Override
+        protected List<DefaultAppInfo> getCandidates() {
+            return mCandidates;
+        }
+
+        @Override
+        protected String getCurrentDefaultKey() {
+            return mKey;
+        }
+
+        @Override
+        protected void setCurrentDefault(String key) {
+            mKey = key;
+        }
+
+        @Override
+        protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
+            return mMessage;
+        }
+
+        @Override
+        protected boolean includeNonePreference() {
+            return mIncludeNone;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
new file mode 100644
index 0000000..f619435
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2021 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.car.settings.applications.managedomainurls;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.util.ArraySet;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiPreference;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class DomainUrlsPreferenceControllerTest {
+    private static final String TEST_PACKAGE_NAME = "com.example.test";
+    private static final int TEST_PACKAGE_ID = 1;
+    private static final String TEST_PATH = "TEST_PATH";
+    private static final String TEST_DOMAIN = "example.com";
+    private static final String TEST_SUMMARY = "test_summary";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private DomainUrlsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+    private ApplicationsState.AppEntry mAppEntry;
+    private ArraySet<String> mMockDomains;
+    private boolean mIsBrowserApp;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiPreference(mContext);
+        mPreferenceController = new TestDomainUrlsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        mAppEntry = new ApplicationsState.AppEntry(mContext, info, TEST_PACKAGE_ID);
+        mMockDomains = new ArraySet<>();
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(DomainUrlsUtils.class,
+                withSettings().lenient()).startMocking();
+        when(DomainUrlsUtils.getHandledDomains(any(PackageManager.class),
+                eq(TEST_PACKAGE_NAME))).thenReturn(mMockDomains);
+        when(DomainUrlsUtils.getDomainsSummary(mContext, TEST_PACKAGE_NAME, UserHandle.myUserId(),
+                mMockDomains)).thenReturn(TEST_SUMMARY);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_isBrowserApp_isDisabled() {
+        mIsBrowserApp = true;
+        mMockDomains.add(TEST_DOMAIN);
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onCreate_isNotBrowserApp_isEnabled() {
+        mIsBrowserApp = false;
+        mMockDomains.add(TEST_DOMAIN);
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_hasNoDomains_isDisabled() {
+        mIsBrowserApp = false;
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onCreate_isBrowserApp_summarySet() {
+        mIsBrowserApp = true;
+        mMockDomains.add(TEST_DOMAIN);
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY);
+    }
+
+    @Test
+    public void onCreate_isNotBrowserApp_summarySet() {
+        mIsBrowserApp = false;
+        mMockDomains.add(TEST_DOMAIN);
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY);
+    }
+
+    @Test
+    public void performClick_isNotBrowserApp_opensDialog() {
+        mIsBrowserApp = false;
+        mMockDomains.add(TEST_DOMAIN);
+        mPreferenceController.setAppEntry(mAppEntry);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        verify(mFragmentController).showDialog(
+                any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
+    }
+
+    private class TestDomainUrlsPreferenceController extends DomainUrlsPreferenceController {
+
+        TestDomainUrlsPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected boolean isBrowserApp() {
+            return mIsBrowserApp;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..071c0c3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2021 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.BluetoothTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothAddressPreferenceControllerTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private BluetoothAddressPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private CarUiPreference mPreference;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private BluetoothAdapter mBluetoothAdapter;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiPreference(mContext);
+        mPreferenceController = new BluetoothAddressPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions,
+                mBluetoothAdapter);
+
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        // Ensure bluetooth is available and enabled.
+        assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH));
+        BluetoothTestUtils.setBluetoothState(mContext, /* enable= */ true);
+    }
+
+    @Test
+    public void refreshUi_setsAddress() {
+        String address = "address";
+        when(mBluetoothAdapter.getAddress()).thenReturn(address);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.bluetooth_vehicle_mac_address, address));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
new file mode 100644
index 0000000..f882075
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
@@ -0,0 +1,384 @@
+/*
+ * Copyright (C) 2021 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.MultiActionPreference;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.common.ToggleButtonActionItem;
+import com.android.car.settings.testutils.BluetoothTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothBondedDevicesPreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private PreferenceGroup mPreferenceGroup;
+    private BluetoothBondedDevicesPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private LocalBluetoothProfile mPhoneProfile;
+    private LocalBluetoothProfile mMediaProfile;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Collection<CachedBluetoothDevice> mCachedDevices;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CachedBluetoothDevice mBondedCachedDevice;
+    @Mock
+    private BluetoothDevice mBondedDevice;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        // Ensure bluetooth is available and enabled.
+        assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH));
+        BluetoothTestUtils.setBluetoothState(mContext, /* enable= */ true);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mBondedCachedDevice.getDevice()).thenReturn(mBondedDevice);
+
+        mPhoneProfile = new TestLocalBluetoothProfile(BluetoothProfile.HEADSET_CLIENT);
+        mMediaProfile = new TestLocalBluetoothProfile(BluetoothProfile.A2DP_SINK);
+        when(mBondedCachedDevice.getProfiles()).thenReturn(List.of(mPhoneProfile, mMediaProfile));
+
+        BluetoothDevice unbondedDevice = mock(BluetoothDevice.class);
+        when(unbondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        CachedBluetoothDevice unbondedCachedDevice = mock(CachedBluetoothDevice.class);
+        when(unbondedCachedDevice.getDevice()).thenReturn(unbondedDevice);
+
+        mCachedDevices = Arrays.asList(mBondedCachedDevice, unbondedCachedDevice);
+
+        mLocalBluetoothManager = spy(BluetoothUtils.getLocalBtManager(mContext));
+        when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(mCachedDevices);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new BluetoothBondedDevicesPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions,
+                mLocalBluetoothManager, mUserManager);
+
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+    }
+
+    @Test
+    public void showsOnlyBondedDevices() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mBondedCachedDevice);
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_refreshesUi() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        // Unbond the only bonded device.
+        when(mBondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        mPreferenceController.onDeviceBondStateChanged(mBondedCachedDevice,
+                BluetoothDevice.BOND_NONE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDeviceClicked_connected_launchesDeviceDetailsFragment() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mFragmentController).launchFragment(
+                any(BluetoothDeviceDetailsFragment.class));
+    }
+
+    @Test
+    public void bluetoothButtonClicked_connected_disconnectsFromDevice() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        ToggleButtonActionItem bluetoothButton = devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1);
+        assertThat(bluetoothButton.isVisible()).isTrue();
+        bluetoothButton.onClick();
+
+        verify(mBondedCachedDevice).disconnect();
+    }
+
+    @Test
+    public void bluetoothButtonClicked_notConnected_connectsToDevice() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH))
+                .thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        ToggleButtonActionItem bluetoothButton = devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1);
+        assertThat(bluetoothButton.isEnabled()).isTrue();
+        bluetoothButton.onClick();
+
+        verify(mBondedCachedDevice).connect();
+    }
+
+    @Test
+    public void phoneButtonClicked_phoneProfile_enabled() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH))
+                .thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        ToggleButtonActionItem phoneButton = devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2);
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2).isEnabled()).isTrue();
+        assertThat(mPhoneProfile.isEnabled(mBondedDevice)).isFalse();
+        phoneButton.onClick();
+
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(mPhoneProfile.isEnabled(mBondedDevice)).isTrue();
+    }
+
+    @Test
+    public void mediaButtonClicked_mediaProfile_enabled() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH))
+                .thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        ToggleButtonActionItem mediaButton = devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3);
+        mediaButton.onClick();
+
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(mMediaProfile.isEnabled(mBondedDevice)).isTrue();
+    }
+
+    @Test
+    public void actionButtons_disallowConfigBluetooth_bluetoothActionStaysDisabled() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH))
+                .thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1).isEnabled()).isTrue();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2).isEnabled()).isFalse();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_hasRestrictions_actionButtonDisabled() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        CarUxRestrictions restrictions = new CarUxRestrictions.Builder(
+                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
+        mPreferenceController.onUxRestrictionsChanged(restrictions);
+
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1).isEnabled()).isTrue();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2).isEnabled()).isFalse();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_restrictionToggled_actionButtonsEnabled() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        CarUxRestrictions restrictions = new CarUxRestrictions.Builder(
+                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
+        mPreferenceController.onUxRestrictionsChanged(restrictions);
+
+        CarUxRestrictions noRestrictions = new CarUxRestrictions.Builder(
+                true, CarUxRestrictions.UX_RESTRICTIONS_BASELINE, 0).build();
+        mPreferenceController.onUxRestrictionsChanged(noRestrictions);
+
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1).isEnabled()).isTrue();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2).isEnabled()).isTrue();
+        assertThat(devicePreference.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3).isEnabled()).isTrue();
+    }
+
+    private class TestLocalBluetoothProfile implements LocalBluetoothProfile {
+        private int mProfileId;
+        private boolean mIsEnabled;
+
+        TestLocalBluetoothProfile(int profileId) {
+            mProfileId = profileId;
+        }
+
+        @Override
+        public boolean accessProfileEnabled() {
+            return false;
+        }
+
+        @Override
+        public boolean isAutoConnectable() {
+            return false;
+        }
+
+        @Override
+        public int getConnectionStatus(BluetoothDevice device) {
+            return 0;
+        }
+
+        @Override
+        public boolean isEnabled(BluetoothDevice device) {
+            return mIsEnabled;
+        }
+
+        @Override
+        public int getConnectionPolicy(BluetoothDevice device) {
+            return 0;
+        }
+
+        @Override
+        public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+            return mIsEnabled = enabled;
+        }
+
+        @Override
+        public boolean isProfileReady() {
+            return false;
+        }
+
+        @Override
+        public int getProfileId() {
+            return mProfileId;
+        }
+
+        @Override
+        public int getOrdinal() {
+            return 0;
+        }
+
+        @Override
+        public int getNameResource(BluetoothDevice device) {
+            return 0;
+        }
+
+        @Override
+        public int getSummaryResourceForDevice(BluetoothDevice device) {
+            return 0;
+        }
+
+        @Override
+        public int getDrawableResource(BluetoothClass btClass) {
+            return 0;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceControllerTest.java
new file mode 100644
index 0000000..8083559
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceActionButtonsPreferenceControllerTest.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2020 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.car.settings.bluetooth;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ActionButtonInfo;
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.BluetoothTestUtils;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothDeviceActionButtonsPreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private ActionButtonsPreference mActionButtonsPreference;
+    private BluetoothDeviceActionButtonsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        // Ensure bluetooth is available and enabled.
+        assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH));
+        BluetoothTestUtils.setBluetoothState(mContext, /* enable= */ true);
+
+        String address = "00:11:22:33:AA:BB";
+        when(mCachedDevice.getAddress()).thenReturn(address);
+
+        mActionButtonsPreference = new ActionButtonsPreference(mContext);
+        mPreferenceController = new BluetoothDeviceActionButtonsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setCachedDevice(mCachedDevice);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController,
+                mActionButtonsPreference);
+    }
+
+    @Test
+    public void forgetButtonClicked_unpairsDevice() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        findForgetButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mCachedDevice).unpair();
+    }
+
+    @Test
+    public void forgetButtonClicked_goesBack() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        findForgetButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).goBack();
+    }
+
+    @Test
+    public void connectionButtonClicked_deviceConnected_disconnectsDevice() {
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        findConnectionButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mCachedDevice).disconnect();
+    }
+
+    @Test
+    public void connectionButtonClicked_deviceNotConnected_connectsDevice() {
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        findConnectionButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mCachedDevice).connect();
+    }
+
+    @Test
+    public void deviceConnected_connectionButtonShowsDisconnect() {
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(findConnectionButton().getText()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "disconnect"));
+    }
+
+    @Test
+    public void deviceNotConnected_connectionButtonShowsConnect() {
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(findConnectionButton().getText()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "connect"));
+    }
+
+    @Test
+    public void deviceBusy_connectionButtonDisabled() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(findConnectionButton().isEnabled()).isFalse();
+    }
+
+    @Test
+    public void deviceNotBusy_connectionButtonEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(findConnectionButton().isEnabled()).isTrue();
+    }
+
+    @Test
+    public void deviceAttributesChanged_updatesConnectionButtonState() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(findConnectionButton().isEnabled()).isFalse();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(findConnectionButton().isEnabled()).isTrue();
+    }
+
+    private ActionButtonInfo findForgetButton() {
+        return mActionButtonsPreference.getButton(ActionButtons.BUTTON2);
+    }
+
+    private ActionButtonInfo findConnectionButton() {
+        return mActionButtonsPreference.getButton(ActionButtons.BUTTON1);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
new file mode 100644
index 0000000..47140e0
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2020 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothProfile;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.BluetoothTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.bluetooth.BluetoothUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.StringJoiner;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothDeviceNamePreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private BluetoothDeviceNamePreferenceController mPreferenceController;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        // Ensure bluetooth is available and enabled.
+        assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH));
+        BluetoothTestUtils.setBluetoothState(mContext, /* enable= */ true);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreference.setSelectable(true);
+        mPreferenceController = new TestBluetoothDeviceNamePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setCachedDevice(mCachedDevice);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void refreshUi_setsDeviceNameAsTitle() {
+        String name = "name";
+        when(mCachedDevice.getName()).thenReturn(name);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+    }
+
+    @Test
+    public void refreshUi_connected_setsCarConnectionSummaryAsSummary() {
+        String summary = "summary";
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void refreshUi_notConnected_setsDisconnectedAsSummary() {
+        when(mCachedDevice.isConnected()).thenReturn(false);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getString(BluetoothUtils
+                .getConnectionStateSummary(BluetoothProfile.STATE_DISCONNECTED)));
+    }
+
+    @Test
+    public void refreshUi_setsIcon() {
+        when(mCachedDevice.getBtClass()).thenReturn(
+                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_hearingAidDevice_setsBatteryStatusesAsSummary() {
+        String summary = "summary";
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+        String otherSummary = "other summary";
+        when(mCachedDeviceManager.getSubDeviceSummary(mCachedDevice)).thenReturn("other summary");
+
+        mPreferenceController.refreshUi();
+
+        String expected = new StringJoiner(System.lineSeparator()).add(summary).add(
+                otherSummary).toString();
+        assertThat(mPreference.getSummary()).isEqualTo(expected);
+    }
+
+    @Test
+    public void preferenceClicked_launchesRenameDialog() {
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        verify(mFragmentController).showDialog(any(RemoteRenameDialogFragment.class),
+                eq(RemoteRenameDialogFragment.TAG));
+    }
+
+    @Test
+    public void preferenceClicked_handled() {
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mPreference.getOnPreferenceClickListener()
+                .onPreferenceClick(mPreference)).isTrue();
+    }
+
+    private class TestBluetoothDeviceNamePreferenceController
+            extends BluetoothDeviceNamePreferenceController {
+
+        TestBluetoothDeviceNamePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CachedBluetoothDeviceManager getCachedDeviceManager() {
+            return mCachedDeviceManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
new file mode 100644
index 0000000..baa284f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2021 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.ToolbarController;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothDevicePickerFragmentTest {
+    private BluetoothDevicePickerFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+
+    @Mock
+    private LocalBluetoothManager mMockManager;
+    @Mock
+    private BluetoothEventManager mMockEventManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                BluetoothUtils.class, withSettings().lenient()).startMocking();
+        when(BluetoothUtils.getLocalBtManager(any())).thenReturn(
+                mMockManager);
+        when(mMockManager.getEventManager()).thenReturn(mMockEventManager);
+        CachedBluetoothDeviceManager cbdm = mock(CachedBluetoothDeviceManager.class);
+        when(mMockManager.getCachedDeviceManager()).thenReturn(cbdm);
+        setUpFragment();
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        verify(mMockManager).setForegroundActivity(mFragment.requireActivity());
+    }
+
+    @Test
+    public void onStart_showsProgressBar() {
+        ToolbarController toolbar = mActivity.getToolbar();
+
+        assertThat(toolbar.getProgressBar().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.onStop();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        verify(mMockManager).setForegroundActivity(null);
+    }
+
+    @Test
+    public void onStop_hidesProgressBar() throws Throwable {
+        ToolbarController toolbar = mActivity.getToolbar();
+        toolbar.getProgressBar().setVisible(true);
+
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.onStop();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(toolbar.getProgressBar().isVisible()).isFalse();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String bluetoothDevicePickerFragmentTag = "bluetooth_device_picker_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new BluetoothDevicePickerFragment(),
+                            bluetoothDevicePickerFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (BluetoothDevicePickerFragment)
+                mFragmentManager.findFragmentByTag(bluetoothDevicePickerFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
new file mode 100644
index 0000000..8c343e6
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 2021 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.MultiActionPreference;
+import com.android.settingslib.bluetooth.BluetoothUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothDevicePreferenceTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private BluetoothDevicePreference mPreference;
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
+    }
+
+    @Test
+    public void actionIsHiddenByDefault() {
+        assertThat(mPreference.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isVisible()).isFalse();
+        assertThat(mPreference.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isVisible()).isFalse();
+        assertThat(mPreference.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isVisible()).isFalse();
+    }
+
+    @Test
+    public void onAttached_registersDeviceCallback() {
+        mPreference.onAttached();
+
+        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
+    }
+
+    @Test
+    public void onAttached_setsDeviceNameAsTitle() {
+        String name = "name";
+        when(mCachedDevice.getName()).thenReturn(name);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+    }
+
+    @Test
+    public void onAttached_notConnected_setsCarConnectionSummaryAsSummary() {
+        String summary = "summary";
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void onAttached_connected_setsConnectedAsSummary() {
+        when(mCachedDevice.isConnected()).thenReturn(true);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getString(BluetoothUtils
+                .getConnectionStateSummary(BluetoothProfile.STATE_CONNECTED),
+                /* appended text= */ ""));
+    }
+
+    @Test
+    public void onAttached_setsIcon() {
+        when(mCachedDevice.getBtClass()).thenReturn(
+                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void onAttached_deviceNotBusy_setsEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(false);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onAttached_deviceBusy_setsNotEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onAttached_deviceNameNotHumanReadable_setsHidden() {
+        SystemProperties.set("persist.bluetooth.showdeviceswithoutnames", Boolean.FALSE.toString());
+        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
+        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onAttached_deviceNameNotHumanReadable_showWithoutNamesTrue_setsShown() {
+        SystemProperties.set("persist.bluetooth.showdeviceswithoutnames", Boolean.TRUE.toString());
+        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
+        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onDetached_unregistersDeviceCallback() {
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        mPreference.onDetached();
+
+        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
+    }
+
+    @Test
+    public void onDeviceAttributesChanged_refreshesUi() {
+        String name = "name";
+        when(mCachedDevice.getName()).thenReturn(name);
+        String summary = "summary";
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+        assertThat(mPreference.isEnabled()).isTrue();
+
+        String updatedName = "updatedName";
+        when(mCachedDevice.getName()).thenReturn(updatedName);
+        String updatedSummary = "updatedSummary";
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(updatedSummary);
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(mPreference.getTitle()).isEqualTo(updatedName);
+        assertThat(mPreference.getSummary()).isEqualTo(updatedSummary);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void equals_devicesEqual_returnsTrue() {
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                mCachedDevice);
+
+        assertThat(mPreference.equals(otherPreference)).isTrue();
+    }
+
+    @Test
+    public void equals_devicesNotEqual_returnsFalse() {
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                mock(CachedBluetoothDevice.class));
+
+        assertThat(mPreference.equals(otherPreference)).isFalse();
+    }
+
+    @Test
+    public void compareTo_sameType_usesDeviceCompareTo() {
+        CachedBluetoothDevice otherDevice = mock(CachedBluetoothDevice.class);
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                otherDevice);
+        when(mCachedDevice.compareTo(otherDevice)).thenReturn(1);
+        when(otherDevice.compareTo(mCachedDevice)).thenReturn(-1);
+
+        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(1);
+        assertThat(otherPreference.compareTo(mPreference)).isEqualTo(-1);
+    }
+
+    @Test
+    public void compareTo_differentType_fallsBackToDefaultCompare() {
+        mPreference.setOrder(1);
+        Preference otherPreference = new Preference(mContext);
+        otherPreference.setOrder(2);
+
+        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(-1);
+        verify(mCachedDevice, never()).compareTo(any());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
new file mode 100644
index 0000000..f353ca9
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2021 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.bluetooth.BluetoothDevice;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.ToolbarController;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothPairingSelectionFragmentTest {
+    private BluetoothPairingSelectionFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+
+    @Mock
+    private LocalBluetoothManager mMockManager;
+    @Mock
+    private BluetoothEventManager mMockEventManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                BluetoothUtils.class, withSettings().lenient()).startMocking();
+        when(BluetoothUtils.getLocalBtManager(any())).thenReturn(
+                mMockManager);
+        when(mMockManager.getEventManager()).thenReturn(mMockEventManager);
+        CachedBluetoothDeviceManager cbdm = mock(CachedBluetoothDeviceManager.class);
+        when(mMockManager.getCachedDeviceManager()).thenReturn(cbdm);
+        setUpFragment();
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        verify(mMockManager).setForegroundActivity(mFragment.requireActivity());
+    }
+
+    @Test
+    public void onStart_registersEventListener() {
+        verify(mMockEventManager).registerCallback(mFragment.mCallback);
+    }
+
+    @Test
+    public void onStart_showsProgressBar() {
+        ToolbarController toolbar = mActivity.getToolbar();
+
+        assertThat(toolbar.getProgressBar().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.onStop();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        verify(mMockManager).setForegroundActivity(null);
+    }
+
+    @Test
+    public void onStop_unregistersEventListener() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.onStop();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        verify(mMockEventManager).registerCallback(mFragment.mCallback);
+        verify(mMockEventManager).unregisterCallback(mFragment.mCallback);
+    }
+
+    @Test
+    public void onStop_hidesProgressBar() throws Throwable {
+        ToolbarController toolbar = mActivity.getToolbar();
+        toolbar.getProgressBar().setVisible(true);
+
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.onStop();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(toolbar.getProgressBar().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_deviceBonded_goesBack() throws Throwable {
+        verify(mMockEventManager).registerCallback(mFragment.mCallback);
+
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.mCallback.onDeviceBondStateChanged(mock(CachedBluetoothDevice.class),
+                    BluetoothDevice.BOND_BONDED);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(mActivity.getOnBackPressedFlag()).isTrue();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String bluetoothPairingSelectionFragmentTag = "bluetooth_pairing_selection_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new BluetoothPairingSelectionFragment(),
+                            bluetoothPairingSelectionFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (BluetoothPairingSelectionFragment)
+                mFragmentManager.findFragmentByTag(bluetoothPairingSelectionFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..7c2c6a1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/bluetooth/BluetoothStateSwitchPreferenceControllerTest.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2020 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothStateSwitchPreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private SwitchPreference mSwitchPreference;
+    private BluetoothStateSwitchPreferenceController mPreferenceController;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private UserManager mUserManager;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
+                null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSwitchPreference = new ClickableWhileDisabledSwitchPreference(mContext);
+        mPreferenceController = new BluetoothStateSwitchPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(mContext);
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        mPreferenceController.onStop(mLifecycleOwner);
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
+    }
+
+    @Test
+    public void onStart_initializesSwitchState() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isEqualTo(
+                BluetoothAdapter.getDefaultAdapter().isEnabled());
+    }
+
+    @Test
+    public void switchClicked_disabled_checksAndDisablesSwitch() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        mSwitchPreference.setChecked(false);
+        BluetoothAdapter.getDefaultAdapter().disable();
+
+        mSwitchPreference.performClick();
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void switchClicked_enabled_unchecksAndDisablesSwitch() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        mSwitchPreference.setChecked(true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+
+        mSwitchPreference.performClick();
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_turningOn_setsSwitchChecked() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_TURNING_ON);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_turningOn_setsSwitchDisabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_TURNING_ON);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_on_setsSwitchChecked() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_ON);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_on_setsSwitchEnabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_ON);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_turningOff_setsSwitchUnchecked() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_TURNING_OFF);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_turningOff_setsSwitchDisabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_TURNING_OFF);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_off_setsSwitchUnchecked() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_OFF);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_off_setsSwitchEnabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_OFF);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_on_userRestricted_setsSwitchDisabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.setUserManager(mUserManager);
+        when(mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH)).thenReturn(true);
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_ON);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_off_userRestricted_setsSwitchDisabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.setUserManager(mUserManager);
+        when(mUserManager.hasUserRestriction(DISALLOW_BLUETOOTH)).thenReturn(true);
+
+        mPreferenceController.handleStateChanged(BluetoothAdapter.STATE_OFF);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onPolicyChanged_enabled_setsSwitchEnabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mSwitchPreference.setEnabled(false);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ true);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onPolicyChanged_disabled_setsSwitchDisabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mSwitchPreference.setEnabled(true);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ false);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/BaseCarSettingsActivityTestCase.java b/tests/unit/src/com/android/car/settings/common/BaseCarSettingsActivityTestCase.java
new file mode 100644
index 0000000..14ff68a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/BaseCarSettingsActivityTestCase.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static org.testng.Assert.assertThrows;
+
+import android.content.Context;
+
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.preference.PreferenceFragment;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+@RunWith(AndroidJUnit4.class)
+abstract class BaseCarSettingsActivityTestCase<T extends BaseCarSettingsTestActivity> {
+    protected Context mContext = ApplicationProvider.getApplicationContext();
+    protected BaseCarSettingsTestActivity mActivity;
+    protected TopLevelMenuFragment mTopLevelFragment;
+    protected FragmentManager mFragmentManager;
+
+    abstract ActivityTestRule<T> getActivityTestRule();
+
+    @Before
+    public void setUp() throws Throwable {
+        mActivity = getActivityTestRule().getActivity();
+        mFragmentManager = mActivity.getSupportFragmentManager();
+    }
+
+    @Test
+    public void launchFragment_dialogFragment_throwsError() {
+        DialogFragment dialogFragment = new DialogFragment();
+
+        assertThrows(IllegalArgumentException.class,
+                () -> mActivity.launchFragment(dialogFragment));
+    }
+
+    protected PreferenceFragment getCurrentFragment() {
+        return (PreferenceFragment) mFragmentManager.findFragmentById(R.id.fragment_container);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledPreferenceTest.java b/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledPreferenceTest.java
new file mode 100644
index 0000000..195d27a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledPreferenceTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2020 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.function.Consumer;
+
+@RunWith(AndroidJUnit4.class)
+public class ClickableWhileDisabledPreferenceTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private View mRootView;
+    private ClickableWhileDisabledPreference mPref;
+    private PreferenceViewHolder mHolder;
+
+    @Mock
+    private Consumer<Preference> mPreferenceConsumer;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mRootView = View.inflate(mContext, R.layout.action_buttons_preference, /* parent= */ null);
+        mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
+        mPref = new ClickableWhileDisabledPreference(mContext);
+        mPref.setDisabledClickListener(mPreferenceConsumer);
+    }
+
+    @Test
+    public void isDisabled_isClickable() {
+        mPref.setEnabled(false);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mHolder.itemView.isClickable()).isTrue();
+    }
+
+    @Test
+    public void onClick_isDisabled_handleWithDisabledClickHandler() {
+        mPref.setEnabled(false);
+        mPref.onBindViewHolder(mHolder);
+
+        mPref.performClick();
+
+        verify(mPreferenceConsumer).accept(any(Preference.class));
+    }
+
+    @Test
+    public void onClick_isEnabled_handleWithRegularClickHandler() {
+        mPref.setEnabled(true);
+        mPref.onBindViewHolder(mHolder);
+
+        mPref.performClick();
+
+        verify(mPreferenceConsumer, never()).accept(any(Preference.class));
+    }
+
+}
diff --git a/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreferenceTest.java b/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreferenceTest.java
new file mode 100644
index 0000000..5e2ae6a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/ClickableWhileDisabledSwitchPreferenceTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.widget.FrameLayout;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.function.Consumer;
+
+@RunWith(AndroidJUnit4.class)
+public class ClickableWhileDisabledSwitchPreferenceTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private FrameLayout mWidgetView;
+    private ClickableWhileDisabledSwitchPreference mPref;
+    private PreferenceViewHolder mHolder;
+
+    @Mock
+    private Consumer<Preference> mPreferenceConsumer;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        mHolder = PreferenceViewHolder.createInstanceForTests(inflater.inflate(
+                R.layout.car_ui_preference, null));
+        mWidgetView = mHolder.itemView.findViewById(android.R.id.widget_frame);
+        inflater.inflate(R.layout.car_ui_preference_widget_switch, mWidgetView,
+                /* attachToRoot= */ true);
+        mPref = new ClickableWhileDisabledSwitchPreference(mContext);
+        mPref.setDisabledClickListener(mPreferenceConsumer);
+    }
+
+    @Test
+    public void isDisabled_isClickable() {
+        mPref.setEnabled(false);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mHolder.itemView.isClickable()).isTrue();
+    }
+
+    @Test
+    public void onClick_isDisabled_handleWithDisabledClickHandler() {
+        mPref.setEnabled(false);
+        mPref.onBindViewHolder(mHolder);
+
+        mPref.performClick();
+
+        verify(mPreferenceConsumer).accept(any(Preference.class));
+    }
+
+    @Test
+    public void onClick_isEnabled_handleWithRegularClickHandler() {
+        mPref.setEnabled(true);
+        mPref.onBindViewHolder(mHolder);
+
+        mPref.performClick();
+
+        verify(mPreferenceConsumer, never()).accept(any(Preference.class));
+    }
+
+    @Test
+    public void onBindViewHolder_setContentDescription_shouldSetDescription() {
+        String description = "test contents description";
+        mPref.setContentDescription(description);
+
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mHolder.itemView.getContentDescription()).isEqualTo(description);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java b/tests/unit/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
new file mode 100644
index 0000000..ef84570
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.DialogTestUtils;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ConfirmationDialogFragmentTest {
+
+    private static final String TEST_ARG_KEY = "arg_key";
+    private static final String TEST_ARG_VALUE = "arg_value";
+    private static final String TEST_TITLE = "Test Title";
+    private static final String TEST_MESSAGE = "Test Message";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private ConfirmationDialogFragment mFragment;
+    private ConfirmationDialogFragment.Builder mDialogFragmentBuilder;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule = new ActivityTestRule<>(
+            BaseCarSettingsTestActivity.class);
+
+    @Mock
+    private ConfirmationDialogFragment.ConfirmListener mConfirmListener;
+    @Mock
+    private ConfirmationDialogFragment.RejectListener mRejectListener;
+    @Mock
+    private ConfirmationDialogFragment.DismissListener mDismissListener;
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        mDialogFragmentBuilder = new ConfirmationDialogFragment.Builder(mContext);
+        mDialogFragmentBuilder.setTitle(TEST_TITLE);
+        mDialogFragmentBuilder.setMessage(TEST_MESSAGE);
+        mDialogFragmentBuilder.addArgumentString(TEST_ARG_KEY, TEST_ARG_VALUE);
+    }
+
+    @Test
+    public void buildDialogFragment_hasTitleAndMessage() throws Throwable {
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        // TODO(b/148687802): Figure out why title returns empty string.
+        // assertThat(DialogTestUtils.getTitle(dialogFragment)).isEqualTo(TEST_TITLE);
+        assertThat(DialogTestUtils.getMessage(dialogFragment)).isEqualTo(TEST_MESSAGE);
+    }
+
+    @Test
+    public void buildDialogFragment_positiveButtonSet_negativeAndNeutralButtonNotVisible()
+            throws Throwable {
+        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label, null);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
+                View.GONE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
+                View.GONE);
+    }
+
+    @Test
+    public void buildDialogFragment_negativeButtonSet_positiveAndNeutralButtonNotVisible()
+            throws Throwable {
+        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label, null);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
+                View.GONE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
+                View.GONE);
+    }
+
+    @Test
+    public void buildDialogFragment_neutralButtonSet_positiveAndNegativeButtonNotVisible()
+            throws Throwable {
+        mDialogFragmentBuilder.setNeutralButton(R.string.test_neutral_button_label, null);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
+                View.GONE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
+                View.GONE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEUTRAL).getVisibility()).isEqualTo(
+                View.VISIBLE);
+    }
+
+    @Test
+    public void clickPositiveButton_callsCallbackWithArgs() throws Throwable {
+        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label,
+                mConfirmListener);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        mActivityTestRule.runOnUiThread(() ->
+                dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
+        verify(mConfirmListener).onConfirm(bundle.capture());
+        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
+    }
+
+    @Test
+    public void clickNegativeButton_callsCallbackWithArgs() throws Throwable {
+        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label,
+                mRejectListener);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        mActivityTestRule.runOnUiThread(() ->
+                dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
+        verify(mRejectListener).onReject(bundle.capture());
+        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
+    }
+
+    @Test
+    public void dismissDialog_callsCallbackWithArgs() throws Throwable {
+        mDialogFragmentBuilder.setDismissListener(mDismissListener);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        launchDialogFragment(dialogFragment);
+
+        AlertDialog dialog = (AlertDialog) mFragment.getDialog();
+        mActivityTestRule.runOnUiThread(() -> dialog.dismiss());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        dialog.dismiss();
+        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
+        verify(mDismissListener).onDismiss(bundle.capture());
+        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
+    }
+
+    private void launchDialogFragment(ConfirmationDialogFragment dialog) throws Throwable {
+        mActivityTestRule.runOnUiThread(
+                () -> dialog.show(mFragmentManager,
+                        ConfirmationDialogFragment.TAG));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ConfirmationDialogFragment) mFragmentManager.findFragmentByTag(
+                ConfirmationDialogFragment.TAG);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/DualPaneBaseCarSettingsActivityTest.java b/tests/unit/src/com/android/car/settings/common/DualPaneBaseCarSettingsActivityTest.java
new file mode 100644
index 0000000..8ef5f85
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/DualPaneBaseCarSettingsActivityTest.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.annotation.Nullable;
+import android.car.drivingstate.CarUxRestrictions;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestSettingsFragment;
+import com.android.car.settings.testutils.DualPaneTestActivity;
+import com.android.car.settings.testutils.EmptySettingsFragment;
+import com.android.car.settings.testutils.TestTopLevelMenuFragment;
+import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.ToolbarController;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+public class DualPaneBaseCarSettingsActivityTest
+        extends BaseCarSettingsActivityTestCase<DualPaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<DualPaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(DualPaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<DualPaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void onPreferenceStartFragment_launchesFragment() throws Throwable {
+        Preference pref = new Preference(mContext);
+        pref.setFragment(BaseTestSettingsFragment.class.getName());
+
+        mActivityTestRule.runOnUiThread(() ->
+                mActivity.onPreferenceStartFragment(/* caller= */ null, pref));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(mActivity.getSupportFragmentManager().findFragmentById(
+                R.id.fragment_container)).isInstanceOf(BaseTestSettingsFragment.class);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_topFragmentInBackStackHasUpdatedUxRestrictions()
+            throws Throwable {
+        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
+                /* timestamp= */ 0
+        ).build();
+
+        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
+                /* timestamp= */ 0
+        ).build();
+
+        AtomicReference<BaseTestSettingsFragment> fragmentA = new AtomicReference<>();
+        AtomicReference<BaseTestSettingsFragment> fragmentB = new AtomicReference<>();
+
+        mActivityTestRule.runOnUiThread(() -> {
+            fragmentA.set(new BaseTestSettingsFragment());
+            fragmentB.set(new BaseTestSettingsFragment());
+            mActivity.launchFragment(fragmentA.get());
+            mActivity.onUxRestrictionsChanged(oldUxRestrictions);
+            mActivity.launchFragment(fragmentB.get());
+            mActivity.onUxRestrictionsChanged(newUxRestrictions);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(
+                fragmentB.get().getUxRestrictions().isSameRestrictions(newUxRestrictions)).isTrue();
+    }
+
+    @Test
+    public void onBackStackChanged_uxRestrictionsChanged_currentFragmentHasUpdatedUxRestrictions()
+            throws Throwable {
+        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
+                /* timestamp= */ 0
+        ).build();
+
+        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
+                /* timestamp= */ 0
+        ).build();
+
+        AtomicReference<BaseTestSettingsFragment> fragmentA = new AtomicReference<>();
+        AtomicReference<BaseTestSettingsFragment> fragmentB = new AtomicReference<>();
+
+        mActivityTestRule.runOnUiThread(() -> {
+            fragmentA.set(new BaseTestSettingsFragment());
+            fragmentB.set(new BaseTestSettingsFragment());
+            mActivity.launchFragment(fragmentA.get());
+            mActivity.onUxRestrictionsChanged(oldUxRestrictions);
+            mActivity.launchFragment(fragmentB.get());
+            mActivity.onUxRestrictionsChanged(newUxRestrictions);
+            mActivity.goBack();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(
+                fragmentA.get().getUxRestrictions().isSameRestrictions(newUxRestrictions)).isTrue();
+    }
+
+    @Test
+    public void onBackStackChanged_toolbarUpdated() throws Throwable {
+        ToolbarController toolbar = mActivity.getToolbar();
+
+        mActivityTestRule.runOnUiThread(() -> {
+            BaseTestSettingsFragment fragment1 = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment1);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(toolbar.getNavButtonMode()).isEquivalentAccordingToCompareTo(
+                Toolbar.NavButtonMode.DISABLED);
+
+        mActivityTestRule.runOnUiThread(() -> {
+            BaseTestSettingsFragment fragment2 = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment2);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(toolbar.getNavButtonMode()).isEqualTo(Toolbar.NavButtonMode.BACK);
+
+        mActivityTestRule.runOnUiThread(() -> mActivity.goBack());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(toolbar.getNavButtonMode()).isEquivalentAccordingToCompareTo(
+                Toolbar.NavButtonMode.DISABLED);
+    }
+
+    @Test
+    public void onActivityCreated_noFragment_topLevelMenuFocused() throws Throwable {
+        assertThat(mActivity.findViewById(R.id.top_level_menu).hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onActivityCreated_homepage_topLevelMenuFocused() throws Throwable {
+        ActivityTestRule<TestDualPaneHomepageActivity> activityTestRule =
+                new ActivityTestRule<>(TestDualPaneHomepageActivity.class);
+        activityTestRule.launchActivity(null);
+        mActivity = activityTestRule.getActivity();
+        mFragmentManager = activityTestRule.getActivity().getSupportFragmentManager();
+
+        assertThat(mActivity.findViewById(R.id.top_level_menu).hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onActivityCreated_hasFragment_contentFocused() throws Throwable {
+        ActivityTestRule<TestDualPaneFragmentActivity> activityTestRule =
+                new ActivityTestRule<>(TestDualPaneFragmentActivity.class);
+        activityTestRule.launchActivity(null);
+        mActivity = activityTestRule.getActivity();
+        mFragmentManager = activityTestRule.getActivity().getSupportFragmentManager();
+
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onTopLevelPreferenceTapped_focusUpdated() throws Throwable {
+        setUpTopLevelTestFragment();
+        mActivityTestRule.runOnUiThread(() ->
+                mTopLevelFragment.getPreferenceScreen().getPreference(0).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onFragmentLaunched_maintainContentFocus() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            BaseTestSettingsFragment fragment = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+        mActivityTestRule.runOnUiThread(() ->
+                getCurrentFragment().getPreferenceScreen().getPreference(0).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onBack_maintainContentFocus() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            BaseTestSettingsFragment fragment1 = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment1);
+            BaseTestSettingsFragment fragment2 = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment2);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+        mActivityTestRule.runOnUiThread(() -> mActivity.goBack());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onPreferenceDisabled_maintainContentFocus() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            BaseTestSettingsFragment fragment = new BaseTestSettingsFragment();
+            mActivity.launchFragment(fragment);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+        mActivityTestRule.runOnUiThread(() ->
+                getCurrentFragment().getPreferenceScreen().getPreference(0).setEnabled(false));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getView().hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onFragmentLaunched_noFocusableElements_parkingViewFocused() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            EmptySettingsFragment fragment = new EmptySettingsFragment();
+            mActivity.launchFragment(fragment);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(mActivity.findViewById(R.id.settings_focus_parking_view).isFocused()).isTrue();
+    }
+
+    private void setUpTopLevelTestFragment() throws Throwable {
+        String topLevelMenuTag = "top_level_menu";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.top_level_menu, new TestTopLevelMenuFragment(), topLevelMenuTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mTopLevelFragment = (TopLevelMenuFragment) mFragmentManager.findFragmentByTag(
+                topLevelMenuTag);
+    }
+
+    public static class TestDualPaneHomepageActivity extends DualPaneTestActivity {
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new BaseTestSettingsFragment();
+        }
+
+        @Override
+        protected boolean shouldFocusContentOnLaunch() {
+            return false;
+        }
+    }
+
+    public static class TestDualPaneFragmentActivity extends DualPaneTestActivity {
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new BaseTestSettingsFragment();
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/DualPaneSettingsFragmentTest.java b/tests/unit/src/com/android/car/settings/common/DualPaneSettingsFragmentTest.java
new file mode 100644
index 0000000..3810bd3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/DualPaneSettingsFragmentTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.DualPaneTestActivity;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+public class DualPaneSettingsFragmentTest extends SettingsFragmentTestCase<DualPaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<DualPaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(DualPaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<DualPaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void launchFragment_otherFragment_opensFragment() throws Throwable {
+        AtomicReference<TestSettingsFragment> otherFragment = new AtomicReference<>();
+        getActivityTestRule().runOnUiThread(() -> {
+            otherFragment.set(new TestSettingsFragment());
+            mFragment.onCreate(null);
+            mFragment.launchFragment(otherFragment.get());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(
+                mFragment.getFragmentManager().findFragmentById(R.id.fragment_container)).isEqualTo(
+                otherFragment.get());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java b/tests/unit/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java
index 9adb9e6..f0aa9b2 100644
--- a/tests/unit/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java
+++ b/tests/unit/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java
@@ -16,6 +16,8 @@
 
 package com.android.car.settings.common;
 
+import static com.android.car.settings.common.ExtraSettingsLoader.META_DATA_PREFERENCE_IS_TOP_LEVEL;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
@@ -45,7 +47,10 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 @RunWith(AndroidJUnit4.class)
@@ -53,9 +58,12 @@
     private static final String META_DATA_PREFERENCE_CATEGORY = "com.android.settings.category";
     private static final String FAKE_CATEGORY = "fake_category";
     private static final String FAKE_TITLE = "fake_title";
+    private static final String FAKE_TITLE1 = "fake_title1";
+    private static final String FAKE_TITLE2 = "fake_title2";
     private static final String FAKE_SUMMARY = "fake_summary";
     private static final String TEST_CONTENT_PROVIDER =
             "content://com.android.car.settings.testutils.TestContentProvider";
+    private static final String DEVICE_CATEGORY = "com.android.settings.category.ia.device";
 
     private Context mContext = ApplicationProvider.getApplicationContext();
     private ExtraSettingsLoader mExtraSettingsLoader;
@@ -70,10 +78,32 @@
         mExtraSettingsLoader.setPackageManager(mPm);
     }
 
+    private ResolveInfo createResolveInfo(String packageName, String className, Bundle metaData,
+            boolean isSystem) {
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = packageName;
+        activityInfo.name = className;
+        activityInfo.metaData = metaData;
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = isSystem;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        return resolveInfoSystem;
+    }
+
+    private Map<Preference, Bundle> executeLoadPreferences(List<ResolveInfo> resolveInfoList,
+            String category) {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, category);
+
+        when(mPm.queryIntentActivitiesAsUser(eq(intent), eq(PackageManager.GET_META_DATA),
+                anyInt())).thenReturn(resolveInfoList);
+        return mExtraSettingsLoader.loadPreferences(intent);
+    }
+
     @Test
     public void testLoadPreference_uriResources_shouldNotLoadStaticResources() {
-        Intent intent = new Intent();
-        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
         Bundle bundle = new Bundle();
         bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
         bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
@@ -82,19 +112,11 @@
         bundle.putString(META_DATA_PREFERENCE_SUMMARY_URI, TEST_CONTENT_PROVIDER);
         bundle.putString(META_DATA_PREFERENCE_ICON_URI, TEST_CONTENT_PROVIDER);
 
-        ActivityInfo activityInfo = new ActivityInfo();
-        activityInfo.metaData = bundle;
-        activityInfo.packageName = "package_name";
-        activityInfo.name = "class_name";
+        ResolveInfo resolveInfoSystem = createResolveInfo("package_name", "class_name",
+                bundle, /* isSystem= */ true);
 
-        ResolveInfo resolveInfoSystem = new ResolveInfo();
-        resolveInfoSystem.system = true;
-        resolveInfoSystem.activityInfo = activityInfo;
-
-        when(mPm.queryIntentActivitiesAsUser(eq(intent), eq(PackageManager.GET_META_DATA),
-                anyInt())).thenReturn(Collections.singletonList(resolveInfoSystem));
-        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
-                intent);
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(Collections.singletonList(resolveInfoSystem), FAKE_CATEGORY);
 
         assertThat(preferenceToBundleMap).hasSize(1);
 
@@ -104,4 +126,142 @@
             assertThat(p.getIcon()).isNull();
         }
     }
+
+    @Test
+    public void testLoadPreference_sortPreferences_byMetadata() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE1);
+        bundle1.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        bundle1.putInt(META_DATA_KEY_ORDER, 1);
+
+        ResolveInfo resolveInfoSystem1 = createResolveInfo("package_name1", "class_name1",
+                bundle1, /* isSystem= */ true);
+
+        Bundle bundle2 = new Bundle();
+        bundle2.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE2);
+        bundle2.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        bundle2.putInt(META_DATA_KEY_ORDER, 2);
+
+        ResolveInfo resolveInfoSystem2 = createResolveInfo("package_name2", "class_name2",
+                bundle2, /* isSystem= */ true);
+
+        List<ResolveInfo> resolveInfoList = new ArrayList<>();
+        resolveInfoList.add(resolveInfoSystem1);
+        resolveInfoList.add(resolveInfoSystem2);
+
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(resolveInfoList, FAKE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(2);
+
+        Iterator<Preference> iter = preferenceToBundleMap.keySet().iterator();
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE2);
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE1);
+    }
+
+    @Test
+    public void testLoadPreference_sortPreferences_byPackageName() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE1);
+        bundle1.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ResolveInfo resolveInfoSystem1 = createResolveInfo("package_name1", "class_name1",
+                bundle1, /* isSystem= */ true);
+
+        Bundle bundle2 = new Bundle();
+        bundle2.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE2);
+        bundle2.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ResolveInfo resolveInfoSystem2 = createResolveInfo("package_name2", "class_name2",
+                bundle2, /* isSystem= */ true);
+
+        List<ResolveInfo> resolveInfoList = new ArrayList<>();
+        resolveInfoList.add(resolveInfoSystem2);
+        resolveInfoList.add(resolveInfoSystem1);
+
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(resolveInfoList, FAKE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(2);
+
+        Iterator<Preference> iter = preferenceToBundleMap.keySet().iterator();
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE1);
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE2);
+    }
+
+    @Test
+    public void testLoadPreference_sortPreferences_prioritizeMetadata() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE1);
+        bundle1.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ResolveInfo resolveInfoSystem1 = createResolveInfo("package_name1", "class_name1",
+                bundle1, /* isSystem= */ true);
+
+        Bundle bundle2 = new Bundle();
+        bundle2.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE2);
+        bundle2.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        bundle2.putInt(META_DATA_KEY_ORDER, 2);
+
+        ResolveInfo resolveInfoSystem2 = createResolveInfo("package_name2", "class_name2",
+                bundle2, /* isSystem= */ true);
+
+        List<ResolveInfo> resolveInfoList = new ArrayList<>();
+        resolveInfoList.add(resolveInfoSystem1);
+        resolveInfoList.add(resolveInfoSystem2);
+
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(resolveInfoList, FAKE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(2);
+
+        Iterator<Preference> iter = preferenceToBundleMap.keySet().iterator();
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE2);
+        assertThat(iter.next().getTitle().toString()).isEqualTo(FAKE_TITLE1);
+    }
+
+    @Test
+    public void testLoadPreference_isTopLevel_topLevelMetadataSet() {
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, DEVICE_CATEGORY);
+
+        ResolveInfo resolveInfo = createResolveInfo("package_name", "class_name",
+                bundle, /* isSystem= */ true);
+
+        Map<Preference, Bundle> preferenceToBundleMap = executeLoadPreferences(
+                Collections.singletonList(resolveInfo), DEVICE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(1);
+        for (Bundle b : preferenceToBundleMap.values()) {
+            assertThat(b.getBoolean(META_DATA_PREFERENCE_IS_TOP_LEVEL)).isTrue();
+        }
+    }
+
+    @Test
+    public void testLoadPreference_notSystem_notLoaded() {
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ResolveInfo resolveInfo = createResolveInfo("package_name1", "class_name1",
+                bundle, /* isSystem= */ false);
+
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(Collections.singletonList(resolveInfo), FAKE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(0);
+    }
+
+    @Test
+    public void testLoadPreference_noMetaData_notLoaded() {
+        ResolveInfo resolveInfo = createResolveInfo("package_name1", "class_name1",
+                /* metaData= */ null, /* isSystem= */ true);
+
+        Map<Preference, Bundle> preferenceToBundleMap =
+                executeLoadPreferences(Collections.singletonList(resolveInfo), FAKE_CATEGORY);
+
+        assertThat(preferenceToBundleMap).hasSize(0);
+    }
 }
diff --git a/tests/unit/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
index 801b846..135a221 100644
--- a/tests/unit/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
@@ -46,9 +46,9 @@
 import com.android.car.settings.R;
 import com.android.car.settings.testutils.ResourceTestUtils;
 import com.android.car.settings.testutils.TestContentProvider;
+import com.android.car.settings.testutils.TestLifecycleOwner;
 import com.android.car.ui.preference.CarUiPreference;
 import com.android.car.ui.preference.UxRestrictablePreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -80,7 +80,6 @@
             "content://com.android.car.settings.testutils.TestContentProvider";
 
     private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
 
     private Context mContext = ApplicationProvider.getApplicationContext();
     private PreferenceManager mPreferenceManager;
@@ -98,8 +97,7 @@
     @Before
     @UiThreadTest
     public void setUp() {
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
+        mLifecycleOwner = new TestLifecycleOwner();
 
         MockitoAnnotations.initMocks(this);
 
diff --git a/tests/unit/src/com/android/car/settings/common/FakePreferenceController.java b/tests/unit/src/com/android/car/settings/common/FakePreferenceController.java
new file mode 100644
index 0000000..9582d63
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/FakePreferenceController.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2021 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Concrete {@link PreferenceController} with methods for verifying behavior in tests.
+ */
+public class FakePreferenceController extends PreferenceController<Preference> {
+
+    @AvailabilityStatus
+    private int mAvailabilityStatus;
+    private int mCheckInitializedCallCount;
+    private int mOnCreateInternalCallCount;
+    private int mOnStartInternalCallCount;
+    private int mOnResumeInternalCallCount;
+    private int mOnPauseInternalCallCount;
+    private int mOnStopInternalCallCount;
+    private int mOnDestroyInternalCallCount;
+    private int mUpdateStateCallCount;
+    private Preference mUpdateStateArg;
+    private int mHandlePreferenceChangedCallCount;
+    private Preference mHandlePreferenceChangedPreferenceArg;
+    private Object mHandlePreferenceChangedValueArg;
+    private int mHandlePreferenceClickedCallCount;
+    private Preference mHandlePreferenceClickedArg;
+    private boolean mAllIgnoresUxRestrictions = false;
+    private Set<String> mPreferencesIgnoringUxRestrictions = new HashSet<>();
+
+    public FakePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAvailabilityStatus = super.getAvailabilityStatus();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        mCheckInitializedCallCount++;
+    }
+
+    int getCheckInitializedCallCount() {
+        return mCheckInitializedCallCount;
+    }
+
+    @Override
+    @AvailabilityStatus
+    protected int getAvailabilityStatus() {
+        return mAvailabilityStatus;
+    }
+
+    void setAvailabilityStatus(@AvailabilityStatus int availabilityStatus) {
+        mAvailabilityStatus = availabilityStatus;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mOnCreateInternalCallCount++;
+    }
+
+    int getOnCreateInternalCallCount() {
+        return mOnCreateInternalCallCount;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mOnStartInternalCallCount++;
+    }
+
+    int getOnStartInternalCallCount() {
+        return mOnStartInternalCallCount;
+    }
+
+    @Override
+    protected void onResumeInternal() {
+        mOnResumeInternalCallCount++;
+    }
+
+    int getOnResumeInternalCallCount() {
+        return mOnResumeInternalCallCount;
+    }
+
+    @Override
+    protected void onPauseInternal() {
+        mOnPauseInternalCallCount++;
+    }
+
+    int getOnPauseInternalCallCount() {
+        return mOnPauseInternalCallCount;
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mOnStopInternalCallCount++;
+    }
+
+    int getOnStopInternalCallCount() {
+        return mOnStopInternalCallCount;
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mOnDestroyInternalCallCount++;
+    }
+
+    int getOnDestroyInternalCallCount() {
+        return mOnDestroyInternalCallCount;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        mUpdateStateArg = preference;
+        mUpdateStateCallCount++;
+    }
+
+    Preference getUpdateStateArg() {
+        return mUpdateStateArg;
+    }
+
+    int getUpdateStateCallCount() {
+        return mUpdateStateCallCount;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(Preference preference, Object newValue) {
+        mHandlePreferenceChangedCallCount++;
+        mHandlePreferenceChangedPreferenceArg = preference;
+        mHandlePreferenceChangedValueArg = newValue;
+        return super.handlePreferenceChanged(preference, newValue);
+    }
+
+    int getHandlePreferenceChangedCallCount() {
+        return mHandlePreferenceChangedCallCount;
+    }
+
+    Preference getHandlePreferenceChangedPreferenceArg() {
+        return mHandlePreferenceChangedPreferenceArg;
+    }
+
+    Object getHandlePreferenceChangedValueArg() {
+        return mHandlePreferenceChangedValueArg;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        mHandlePreferenceClickedCallCount++;
+        mHandlePreferenceClickedArg = preference;
+        return super.handlePreferenceClicked(preference);
+    }
+
+    int getHandlePreferenceClickedCallCount() {
+        return mHandlePreferenceClickedCallCount;
+    }
+
+    Preference getHandlePreferenceClickedArg() {
+        return mHandlePreferenceClickedArg;
+    }
+
+    @Override
+    protected boolean isUxRestrictionsIgnored(boolean allIgnores, Set preferencesThatIgnore) {
+        return super.isUxRestrictionsIgnored(mAllIgnoresUxRestrictions,
+                mPreferencesIgnoringUxRestrictions);
+    }
+
+    protected void setUxRestrictionsIgnoredConfig(boolean allIgnore, Set preferencesThatIgnore) {
+        mAllIgnoresUxRestrictions = allIgnore;
+        mPreferencesIgnoringUxRestrictions = preferencesThatIgnore;
+    }
+
+}
diff --git a/tests/unit/src/com/android/car/settings/common/MultiActionPreferenceTest.java b/tests/unit/src/com/android/car/settings/common/MultiActionPreferenceTest.java
new file mode 100644
index 0000000..a0c983d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/MultiActionPreferenceTest.java
@@ -0,0 +1,288 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+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.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.preference.PreferenceViewHolder;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class MultiActionPreferenceTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private View mRootView;
+    private MultiActionPreference mPref;
+    private PreferenceViewHolder mHolder;
+
+    @Mock
+    private TypedArray mTypedArray;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mRootView = View.inflate(mContext, R.layout.multi_action_preference, null);
+        mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
+        // Mocked int and boolean values from TypedArray seem to be 0, so default values can't be
+        // used. Must manually set tested values
+        doReturn(mTypedArray).when(mContext).obtainStyledAttributes(nullable(AttributeSet.class),
+                eq(R.styleable.MultiActionPreference));
+    }
+
+    @Test
+    @UiThreadTest
+    public void onBindViewHolder_actionItemsNullByDefault() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(-1);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(-1);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(-1);
+        mPref = new MultiActionPreference(mContext);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1))
+                .isNull();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2))
+                .isNull();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3))
+                .isNull();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onBindViewHolder_toggleButtons_attributesVisible() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_one_shown),
+                anyBoolean())).thenReturn(true);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_two_shown),
+                anyBoolean())).thenReturn(true);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_three_shown),
+                anyBoolean())).thenReturn(true);
+        mPref = new MultiActionPreference(mContext);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isVisible()).isTrue();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2)
+                .isVisible()).isTrue();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3)
+                .isVisible()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onBindViewHolder_toggleButtons_attributesEnabled() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_one_enabled), anyBoolean()))
+                .thenReturn(true);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_two_enabled), anyBoolean()))
+                .thenReturn(true);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_three_enabled), anyBoolean()))
+                .thenReturn(true);
+        mPref = new MultiActionPreference(mContext);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isEnabled()).isTrue();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2)
+                .isEnabled()).isTrue();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3)
+                .isEnabled()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onBindViewHolder_toggleButtons_attributesNotVisible() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_one_shown),
+                anyBoolean())).thenReturn(false);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_two_shown),
+                anyBoolean())).thenReturn(false);
+        when(mTypedArray.getBoolean(eq(R.styleable.MultiActionPreference_action_item_three_shown),
+                anyBoolean())).thenReturn(false);
+        mPref = new MultiActionPreference(mContext);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isVisible()).isFalse();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2)
+                .isVisible()).isFalse();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3)
+                .isVisible()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onBindViewHolder_toggleButtons_attributesNotEnabled() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_one_enabled), anyBoolean()))
+                .thenReturn(false);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_two_enabled), anyBoolean()))
+                .thenReturn(false);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_three_enabled), anyBoolean()))
+                .thenReturn(false);
+        mPref = new MultiActionPreference(mContext);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .isEnabled()).isFalse();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2)
+                .isEnabled()).isFalse();
+        assertThat(mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3)
+                .isEnabled()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void toggleButtons_onClick_checkedStateChanges() {
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInt(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_one_enabled), anyBoolean()))
+                .thenReturn(true);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_two_enabled), anyBoolean()))
+                .thenReturn(true);
+        when(mTypedArray.getBoolean(
+                eq(R.styleable.MultiActionPreference_action_item_three_enabled), anyBoolean()))
+                .thenReturn(true);
+        mPref = new MultiActionPreference(mContext);
+        // OnClickListeners needed for check state to change
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).setOnClickListener(c -> {});
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).setOnClickListener(c -> {});
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).setOnClickListener(c -> {});
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).isChecked()).isTrue();
+
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).onClick();
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).onClick();
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).onClick();
+
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).isChecked()).isFalse();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).isChecked()).isFalse();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).isChecked()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void toggleButtons_onClickRestricted_checkedStateDoesNotChange() {
+        when(mTypedArray.getInteger(eq(R.styleable.MultiActionPreference_action_item_one),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInteger(eq(R.styleable.MultiActionPreference_action_item_two),
+                anyInt())).thenReturn(0);
+        when(mTypedArray.getInteger(eq(R.styleable.MultiActionPreference_action_item_three),
+                anyInt())).thenReturn(0);
+        mPref = new MultiActionPreference(mContext);
+        mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM1)
+                .setPreferenceRestricted(true);
+        mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM2)
+                .setPreferenceRestricted(true);
+        mPref.getActionItem(MultiActionPreference.ActionItem.ACTION_ITEM3)
+                .setPreferenceRestricted(true);
+        mPref.onBindViewHolder(mHolder);
+
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).isChecked()).isTrue();
+
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).onClick();
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).onClick();
+        ((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).onClick();
+
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM1)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM2)).isChecked()).isTrue();
+        assertThat(((ToggleButtonActionItem) mPref.getActionItem(
+                MultiActionPreference.ActionItem.ACTION_ITEM3)).isChecked()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/PreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/common/PreferenceControllerTest.java
index 637b6e9..447741b 100644
--- a/tests/unit/src/com/android/car/settings/common/PreferenceControllerTest.java
+++ b/tests/unit/src/com/android/car/settings/common/PreferenceControllerTest.java
@@ -16,7 +16,14 @@
 
 package com.android.car.settings.common;
 
+import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
 import android.car.drivingstate.CarUxRestrictions;
@@ -30,9 +37,9 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
+import com.android.car.settings.testutils.TestLifecycleOwner;
 import com.android.car.ui.preference.CarUiPreference;
 import com.android.car.ui.preference.UxRestrictablePreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -44,6 +51,10 @@
 @RunWith(AndroidJUnit4.class)
 public class PreferenceControllerTest {
 
+    private static final CarUxRestrictions LIMIT_STRINGS_UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_LIMIT_STRING_LENGTH, /* timestamp= */
+                    0).build();
     private static final CarUxRestrictions NO_SETUP_UX_RESTRICTIONS =
             new CarUxRestrictions.Builder(/* reqOpt= */ true,
                     CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, /* timestamp= */ 0).build();
@@ -53,7 +64,6 @@
                     CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
 
     private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
 
     private Context mContext = ApplicationProvider.getApplicationContext();
     private FakePreferenceController mPreferenceController;
@@ -64,10 +74,8 @@
     private CarUiPreference mPreference;
 
     @Before
-    @UiThreadTest
     public void setUp() {
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
+        mLifecycleOwner = new TestLifecycleOwner();
 
         MockitoAnnotations.initMocks(this);
 
@@ -89,7 +97,7 @@
     @Test
     public void onUxRestrictionsChanged_restricted_viewOnly_preferenceUnrestricted() {
         mPreferenceController.setPreference(mPreference);
-        mPreferenceController.setAvailabilityStatus(PreferenceController.AVAILABLE_FOR_VIEWING);
+        mPreferenceController.setAvailabilityStatus(AVAILABLE_FOR_VIEWING);
         mPreferenceController.onCreate(mLifecycleOwner);
 
         Mockito.reset(mPreference);
@@ -128,10 +136,118 @@
         verify((UxRestrictablePreference) mPreference).setUxRestricted(false);
     }
 
+    @Test
+    public void refreshUi_notCreated_doesNothing() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.refreshUi();
+
+        verify(mPreference, never()).setVisible(anyBoolean());
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_created_available_preferenceShownAndEnabled() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        Mockito.reset(mPreference);
+
+        mPreferenceController.refreshUi();
+
+        verify(mPreference).setVisible(true);
+        verify(mPreference).setEnabled(true);
+    }
+
+    @Test
+    public void refreshUi_created_availableForViewing_preferenceShownAndDisabled() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.setAvailabilityStatus(AVAILABLE_FOR_VIEWING);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        Mockito.reset(mPreference);
+
+        mPreferenceController.refreshUi();
+
+        verify(mPreference).setVisible(true);
+        verify(mPreference).setEnabled(false);
+    }
+
+    @Test
+    public void refreshUi_created_notAvailable_preferenceHidden() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        Mockito.reset(mPreference);
+
+        mPreferenceController.refreshUi();
+
+        verify(mPreference).setVisible(false);
+    }
+
+    @Test
+    public void refreshUi_created_available_updatesState() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.refreshUi();
+
+        // onCreate, refreshUi.
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(2);
+        assertThat(mPreferenceController.getUpdateStateArg()).isEqualTo(mPreference);
+    }
+
+    @Test
+    public void refreshUi_created_notAvailable_doesNotUpdateState() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+
+    @Test
+    public void onUxRestrictionsChanged_created_available_updatesState() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
+
+        // onCreate, onUxRestrictionsChanged.
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_notCreated_available_doesNotUpdateState() {
+        mPreferenceController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
+
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onCreate_available_updatesState() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onStart_available_updatesState() {
+        mPreferenceController.setPreference(mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        // onCreate, onStart
+        assertThat(mPreferenceController.getUpdateStateCallCount()).isEqualTo(2);
+    }
+
     private static class FakePreferenceController extends
             PreferenceController<Preference> {
 
         private int mAvailabilityStatus;
+        private int mUpdateStateCallCount;
+        private Preference mUpdateStateArg;
 
         FakePreferenceController(Context context, String preferenceKey,
                 FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
@@ -149,8 +265,22 @@
             return mAvailabilityStatus;
         }
 
+        @Override
+        protected void updateState(Preference preference) {
+            mUpdateStateArg = preference;
+            mUpdateStateCallCount++;
+        }
+
         public void setAvailabilityStatus(int availabilityStatus) {
             mAvailabilityStatus = availabilityStatus;
         }
+
+        public Preference getUpdateStateArg() {
+            return mUpdateStateArg;
+        }
+
+        public int getUpdateStateCallCount() {
+            return mUpdateStateCallCount;
+        }
     }
 }
diff --git a/tests/unit/src/com/android/car/settings/common/PreferenceControllerTestUtil.java b/tests/unit/src/com/android/car/settings/common/PreferenceControllerTestUtil.java
index 9c350c5..b3cc64a 100644
--- a/tests/unit/src/com/android/car/settings/common/PreferenceControllerTestUtil.java
+++ b/tests/unit/src/com/android/car/settings/common/PreferenceControllerTestUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
diff --git a/tests/unit/src/com/android/car/settings/common/SettingsFragmentTestCase.java b/tests/unit/src/com/android/car/settings/common/SettingsFragmentTestCase.java
new file mode 100644
index 0000000..464ffac
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/SettingsFragmentTestCase.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.withSettings;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.widget.Toast;
+
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.TestFinishActivity;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+@RunWith(AndroidJUnit4.class)
+public abstract class SettingsFragmentTestCase<T extends BaseCarSettingsTestActivity> {
+    protected static final String TEST_TAG = "test_tag";
+
+    protected Context mContext = ApplicationProvider.getApplicationContext();
+    protected BaseCarSettingsTestActivity mActivity;
+    protected FragmentManager mFragmentManager;
+    protected SettingsFragment mFragment;
+
+    abstract ActivityTestRule<T> getActivityTestRule();
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = getActivityTestRule().getActivity();
+        mFragmentManager = mActivity.getSupportFragmentManager();
+        setUpFragment();
+    }
+
+    @Test
+    @UiThreadTest
+    public void use_returnsController() {
+        mFragment.onCreate(null);
+        assertThat(mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller)).isNotNull();
+    }
+
+    @Test
+    public void onAttach_registersLifecycleObservers() throws Throwable {
+        AtomicReference<FakePreferenceController> controller = new AtomicReference<>();
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragment.onCreate(null);
+            controller.set(mFragment.use(FakePreferenceController.class,
+                    R.string.tpk_fake_controller));
+            assertThat(controller.get().getOnCreateInternalCallCount()).isEqualTo(1);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        getActivityTestRule().finishActivity();
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(controller.get().getOnCreateInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onUxRestrictionsChanged_propagatesToControllers() {
+        mFragment.onCreate(null);
+        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller);
+        CarUxRestrictions uxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_KEYBOARD, /* timestamp= */ 0).build();
+        mFragment.onUxRestrictionsChanged(uxRestrictions);
+        assertThat(controller.getUxRestrictions()).isEqualTo(uxRestrictions);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onUxRestrictedPreferenceTapped_showToast() {
+        MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(Toast.class,
+                withSettings().lenient()).startMocking();
+        Toast mockToast = mock(Toast.class);
+        ExtendedMockito.when(Toast.makeText(any(), anyString(), anyInt()))
+                .thenReturn(mockToast);
+
+        mFragment.onCreate(null);
+        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller);
+        CarUxRestrictions uxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, /* timestamp= */ 0).build();
+        mFragment.onUxRestrictionsChanged(uxRestrictions);
+        controller.getPreference().performClick();
+        verify(mockToast).show();
+
+        session.finishMocking();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDisplayPreferenceDialog_unknownPreferenceType_throwsIllegalArgumentException() {
+        mFragment.onCreate(null);
+
+        assertThrows(IllegalArgumentException.class,
+                () -> mFragment.onDisplayPreferenceDialog(new Preference(mContext)));
+    }
+
+    @Test
+    @UiThreadTest
+    public void launchFragment_dialogFragment_throwsError() {
+        mFragment.onCreate(null);
+        DialogFragment dialogFragment = new DialogFragment();
+        assertThrows(IllegalArgumentException.class,
+                () -> mFragment.launchFragment(dialogFragment));
+    }
+
+    @Test
+    @UiThreadTest
+    public void showDialog_noTag_launchesDialogFragment() {
+        mFragment.onCreate(null);
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mFragment.showDialog(dialogFragment, /* tag= */ null);
+        verify(dialogFragment).show(mFragment.getFragmentManager(), null);
+    }
+
+    @Test
+    @UiThreadTest
+    public void showDialog_withTag_launchesDialogFragment() {
+        mFragment.onCreate(null);
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mFragment.showDialog(dialogFragment, TEST_TAG);
+        verify(dialogFragment).show(mFragment.getFragmentManager(), TEST_TAG);
+    }
+
+    @Test
+    public void findDialogByTag_retrieveOriginalDialog_returnsDialog() throws Throwable {
+        DialogFragment dialogFragment = new DialogFragment();
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragment.onCreate(null);
+            mFragment.showDialog(dialogFragment, TEST_TAG);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isEqualTo(dialogFragment);
+    }
+
+    @Test
+    @UiThreadTest
+    public void findDialogByTag_notDialogFragment_returnsNull() {
+        mFragment.onCreate(null);
+        TestSettingsFragment
+                fragment = new TestSettingsFragment();
+        mFragment.getFragmentManager().beginTransaction().add(fragment, TEST_TAG).commit();
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    @UiThreadTest
+    public void findDialogByTag_noSuchFragment_returnsNull() {
+        mFragment.onCreate(null);
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    @UiThreadTest
+    public void startActivityForResult_largeRequestCode_throwsError() {
+        mFragment.onCreate(null);
+        assertThrows(() -> mFragment.startActivityForResult(new Intent(), 0xffff,
+                mock(ActivityResultCallback.class)));
+    }
+
+    @Test
+    @UiThreadTest
+    public void startActivityForResult_tooManyRequests_throwsError() {
+        mFragment.onCreate(null);
+        assertThrows(() -> {
+            for (int i = 0; i < 0xff; i++) {
+                mFragment.startActivityForResult(new Intent(), i,
+                        mock(ActivityResultCallback.class));
+            }
+        });
+    }
+
+    @Test
+    @UiThreadTest
+    public void startIntentSenderForResult_largeRequestCode_throwsError() {
+        mFragment.onCreate(null);
+        assertThrows(
+                () -> mFragment.startIntentSenderForResult(
+                        mock(IntentSender.class), /* requestCode= */ 0xffff,
+                        /* fillInIntent= */ null, /* flagsMask= */ 0,
+                        /* flagsValues= */ 0, /* options= */ null,
+                        mock(ActivityResultCallback.class)));
+    }
+
+    @Test
+    @UiThreadTest
+    public void startIntentSenderForResult_tooManyRequests_throwsError() {
+        mFragment.onCreate(null);
+        assertThrows(() -> {
+            for (int i = 0; i < 0xff; i++) {
+                mFragment.startIntentSenderForResult(
+                        mock(IntentSender.class), /* requestCode= */ 0xffff,
+                        /* fillInIntent= */ null, /* flagsMask= */ 0,
+                        /* flagsValues= */ 0, /* options= */ null,
+                        mock(ActivityResultCallback.class));
+            }
+        });
+    }
+
+    @Test
+    @UiThreadTest
+    public void onActivityResult_hasValidRequestCode_triggersOnActivityResult() {
+        mFragment.onCreate(null);
+        ActivityResultCallback callback = mock(ActivityResultCallback.class);
+        Intent intent = new Intent(mContext, TestFinishActivity.class);
+
+        int reqCode = 100;
+        int resCode = -1;
+        mFragment.startActivityForResult(intent, reqCode, callback);
+        int fragmentReqCode = (1 << 8) + reqCode;
+        mFragment.onActivityResult(fragmentReqCode, resCode, intent);
+        verify(callback).processActivityResult(eq(reqCode), eq(resCode), any(Intent.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void onActivityResult_wrongRequestCode_doesntTriggerOnActivityResult() {
+        mFragment.onCreate(null);
+        ActivityResultCallback callback = mock(ActivityResultCallback.class);
+        Intent intent = new Intent(mContext, TestFinishActivity.class);
+
+        int reqCode = 100;
+        int resCode = -1;
+        mFragment.startActivityForResult(intent, reqCode, callback);
+        int fragmentReqCode = (2 << 8) + reqCode;
+        mFragment.onActivityResult(fragmentReqCode, resCode, intent);
+        verify(callback, never()).processActivityResult(anyInt(), anyInt(),
+                any(Intent.class));
+    }
+
+    protected void setUpFragment() throws Throwable {
+        setUpFragment(null);
+    }
+
+    protected void setUpFragment(Fragment fragment) throws Throwable {
+        String settingsFragmentTag = "settings_fragment";
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container,
+                            fragment != null ? fragment : new TestSettingsFragment(),
+                            settingsFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (SettingsFragment) mFragmentManager.findFragmentByTag(settingsFragmentTag);
+    }
+
+    /** Concrete {@link SettingsFragment} for testing. */
+    public static class TestSettingsFragment extends SettingsFragment {
+
+        @Override
+        protected int getPreferenceScreenResId() {
+            return R.xml.test_base_settings_fragment;
+        }
+
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/SinglePaneBaseCarSettingsActivityTest.java b/tests/unit/src/com/android/car/settings/common/SinglePaneBaseCarSettingsActivityTest.java
new file mode 100644
index 0000000..d4f6059
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/SinglePaneBaseCarSettingsActivityTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Intent;
+
+import androidx.preference.Preference;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.BaseTestSettingsFragment;
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+public class SinglePaneBaseCarSettingsActivityTest
+        extends BaseCarSettingsActivityTestCase<SinglePaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<SinglePaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void onPreferenceStartFragment_launchesActivity() throws Throwable {
+        Preference pref = new Preference(mContext);
+        pref.setFragment(BaseTestSettingsFragment.class.getName());
+
+        BaseCarSettingsTestActivity spiedActivity = spy(mActivity);
+
+        mActivityTestRule.runOnUiThread(() ->
+                spiedActivity.onPreferenceStartFragment(/* caller= */ null, pref));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        verify(spiedActivity).startActivity(any(Intent.class));
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_fragmentHasUpdatedUxRestrictions()
+            throws Throwable {
+
+        CarUxRestrictions restrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
+                /* timestamp= */ 0
+        ).build();
+
+        mActivityTestRule.runOnUiThread(() -> {
+            mActivity.onUxRestrictionsChanged(restrictions);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(((BaseTestSettingsFragment) getCurrentFragment()).getUxRestrictions()
+                .isSameRestrictions(restrictions)).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/SinglePaneSettingsFragmentTest.java b/tests/unit/src/com/android/car/settings/common/SinglePaneSettingsFragmentTest.java
new file mode 100644
index 0000000..3ef78ed
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/SinglePaneSettingsFragmentTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.fragment.app.Fragment;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.testutils.RootTestSettingsFragment;
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+import com.android.car.ui.toolbar.Toolbar;
+import com.android.car.ui.toolbar.ToolbarController;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+public class SinglePaneSettingsFragmentTest
+        extends SettingsFragmentTestCase<SinglePaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<SinglePaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void onActivityCreated_hasAppIconIfRoot() throws Throwable {
+        AtomicReference<Fragment> fragment = new AtomicReference<>();
+        getActivityTestRule().runOnUiThread(() -> {
+            fragment.set(new RootTestSettingsFragment());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        setUpFragment(fragment.get());
+
+        ToolbarController toolbar = mActivity.getToolbar();
+
+        assertThat(toolbar.getNavButtonMode()).isEquivalentAccordingToCompareTo(
+                Toolbar.NavButtonMode.DISABLED);
+    }
+
+    @Test
+    public void onActivityCreated_hasBackArrowIconIfNotRoot() {
+        ToolbarController toolbar = mActivity.getToolbar();
+
+        assertThat(toolbar.getNavButtonMode()).isEquivalentAccordingToCompareTo(
+                Toolbar.NavButtonMode.BACK);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/TopLevelIconTest.java b/tests/unit/src/com/android/car/settings/common/TopLevelIconTest.java
new file mode 100644
index 0000000..1f9e490
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/TopLevelIconTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.GradientDrawable;
+import android.os.Bundle;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TopLevelIconTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Test
+    public void createIcon_shouldSetBackgroundAndInset() {
+        TopLevelIcon icon = new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK));
+
+        assertThat(icon.getNumberOfLayers()).isEqualTo(2);
+        assertThat(icon.getDrawable(0)).isInstanceOf(TopLevelIconShapeDrawable.class);
+    }
+
+    @Test
+    public void setBackgroundColor_shouldUpdateTintList() {
+        TopLevelIcon icon = spy(new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK)));
+        GradientDrawable background = mock(GradientDrawable.class);
+        when(icon.getDrawable(0)).thenReturn(background);
+        icon.setBackgroundColor(Color.BLUE);
+
+        verify(background).setTintList(any(ColorStateList.class));
+    }
+
+    @Test
+    public void injectedPreferenceWithBackgroundColorRawValue_shouldSetColor() {
+        Bundle metaData = new Bundle();
+        metaData.putInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0xff0000);
+        TopLevelIcon icon = new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK));
+        icon.setBackgroundColor(mContext, metaData, mContext.getPackageName());
+
+        assertThat(icon.mBackgroundColorStateList.getDefaultColor()).isEqualTo(0xff0000);
+    }
+
+    @Test
+    public void injectedPreferenceWithoutBackgroundColor_shouldSetDefaultBackgroundColor() {
+        Bundle metaData = new Bundle();
+        TopLevelIcon icon = new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK));
+        icon.setBackgroundColor(mContext, metaData, mContext.getPackageName());
+
+        assertThat(icon.mBackgroundColorStateList.getDefaultColor()).isEqualTo(
+                mContext.getColor(R.color.top_level_injected_default_background));
+    }
+
+    @Test
+    public void injectedPreferenceWithBackgroundColorHintValue_shouldSetColor() {
+        Bundle metaData = new Bundle();
+        metaData.putInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT, android.R.color.darker_gray);
+        TopLevelIcon icon = new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK));
+        icon.setBackgroundColor(mContext, metaData, mContext.getPackageName());
+
+        assertThat(icon.mBackgroundColorStateList.getDefaultColor()).isEqualTo(
+                mContext.getColor(android.R.color.darker_gray));
+    }
+
+    @Test
+    public void getConstantState_returnCorrectState() {
+        TopLevelIcon icon = new TopLevelIcon(mContext, new ColorDrawable(Color.BLACK));
+        icon.setBackgroundColor(Color.YELLOW);
+
+        TopLevelIcon.AdaptiveConstantState state =
+                (TopLevelIcon.AdaptiveConstantState) icon.getConstantState();
+
+        assertThat(state.mColor).isEqualTo(Color.YELLOW);
+        assertThat(state.mContext).isEqualTo(mContext);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/common/TopLevelMenuFragmentTest.java b/tests/unit/src/com/android/car/settings/common/TopLevelMenuFragmentTest.java
new file mode 100644
index 0000000..c78af53
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/common/TopLevelMenuFragmentTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2021 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.DualPaneTestActivity;
+import com.android.car.settings.testutils.TestSettingsFragment1;
+import com.android.car.settings.testutils.TestSettingsFragment2;
+import com.android.car.settings.testutils.TestTopLevelMenuFragment;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class TopLevelMenuFragmentTest {
+
+    private TopLevelMenuFragment mFragment;
+    private DualPaneTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<DualPaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(DualPaneTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+    }
+
+
+    @Test
+    public void onPreferenceTapped_launchesFragment() throws Throwable {
+        mActivityTestRule.runOnUiThread(() ->
+                mFragment.getPreferenceScreen().getPreference(0).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getClass()).isEqualTo(TestSettingsFragment1.class);
+    }
+
+    @Test
+    public void onPreferenceTapped_preferenceHighlightUpdated() throws Throwable {
+        mActivityTestRule.runOnUiThread(() ->
+                mFragment.getPreferenceScreen().getPreference(0).performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(mFragment.getSelectedPreferenceKey()).isEqualTo("pk_test_fragment_1");
+    }
+
+    @Test
+    public void onSamePreferenceTapped_noDuplicateEntry() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.getPreferenceScreen().getPreference(0).performClick();
+            mFragment.getPreferenceScreen().getPreference(0).performClick();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getClass()).isEqualTo(TestSettingsFragment1.class);
+        assertThat(mFragmentManager.getBackStackEntryCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onDifferentPreferenceTapped_clearsBackStack() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragment.getPreferenceScreen().getPreference(0).performClick();
+            mFragment.getPreferenceScreen().getPreference(1).performClick();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(getCurrentFragment().getClass()).isEqualTo(TestSettingsFragment2.class);
+        assertThat(mFragmentManager.getBackStackEntryCount()).isEqualTo(1);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String topLevelMenuTag = "top_level_menu";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.top_level_menu, new TestTopLevelMenuFragment(), topLevelMenuTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (TopLevelMenuFragment) mFragmentManager.findFragmentByTag(topLevelMenuTag);
+    }
+
+    private Fragment getCurrentFragment() {
+        return mFragmentManager.findFragmentById(R.id.fragment_container);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java b/tests/unit/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
new file mode 100644
index 0000000..6be3d6b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.NetworkPolicy;
+import android.os.Bundle;
+import android.text.format.DateUtils;
+import android.util.Pair;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.settingslib.NetworkPolicyEditor;
+
+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 java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/** Unit test for {@link AppDataUsageFragment}. */
+@RunWith(AndroidJUnit4.class)
+public class AppDataUsageFragmentTest {
+    private static final String KEY_START = "start";
+    private static final String KEY_END = "end";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private TestAppDataUsageFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+
+    private Iterator<Pair<ZonedDateTime, ZonedDateTime>> mIterator;
+
+    @Mock
+    private NetworkPolicyEditor mNetworkPolicyEditor;
+    @Mock
+    private NetworkPolicy mNetworkPolicy;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+    }
+
+    @Test
+    public void onActivityCreated_policyIsNull_startAndEndDateShouldHaveFourWeeksDifference()
+            throws Throwable {
+        setUpFragment();
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+        long timeDiff = end - start;
+
+        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
+    }
+
+    @Test
+    public void onActivityCreated_iteratorIsEmpty_startAndEndDateShouldHaveFourWeeksDifference()
+            throws Throwable {
+        when(mNetworkPolicyEditor.getPolicy(any())).thenReturn(mNetworkPolicy);
+
+        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
+        mIterator = list.iterator();
+        setUpFragment();
+
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+        long timeDiff = end - start;
+
+        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
+    }
+
+    @Test
+    public void onActivityCreated_iteratorIsNotEmpty_startAndEndDateShouldBeLastOneInIterator()
+            throws Throwable {
+        when(mNetworkPolicyEditor.getPolicy(any())).thenReturn(mNetworkPolicy);
+
+        ZonedDateTime start1 = ZonedDateTime.now();
+        ZonedDateTime end1 = ZonedDateTime.now();
+        ZonedDateTime start2 = ZonedDateTime.now();
+        ZonedDateTime end2 = ZonedDateTime.now();
+
+        Pair pair1 = new Pair(start1, end1);
+        Pair pair2 = new Pair(start2, end2);
+
+        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
+        list.add(pair1);
+        list.add(pair2);
+
+        mIterator = list.iterator();
+        setUpFragment();
+
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+
+        assertThat(start).isEqualTo(start2.toInstant().toEpochMilli());
+        assertThat(end).isEqualTo(end2.toInstant().toEpochMilli());
+    }
+
+    private void setUpFragment() throws Throwable {
+        String appDataUsageFragmentTag = "app_data_usage_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container,
+                            TestAppDataUsageFragment.newInstance(mNetworkPolicyEditor, mIterator),
+                            appDataUsageFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (TestAppDataUsageFragment) mFragmentManager
+                .findFragmentByTag(appDataUsageFragmentTag);
+    }
+
+    public static class TestAppDataUsageFragment extends AppDataUsageFragment {
+
+        private NetworkPolicyEditor mNetworkPolicyEditor;
+        private Iterator<Pair<ZonedDateTime, ZonedDateTime>> mIterator;
+
+        public static TestAppDataUsageFragment newInstance(NetworkPolicyEditor networkPolicyEditor,
+                Iterator<Pair<ZonedDateTime, ZonedDateTime>> cycleIterator) {
+            TestAppDataUsageFragment fragment = new TestAppDataUsageFragment();
+            fragment.mNetworkPolicyEditor = networkPolicyEditor;
+            fragment.mIterator = cycleIterator;
+            return fragment;
+        }
+
+        @Override
+        NetworkPolicyEditor getNetworkPolicyEditor(Context context) {
+            return mNetworkPolicyEditor;
+        }
+
+        @Override
+        Iterator<Pair<ZonedDateTime, ZonedDateTime>> getCycleIterator(NetworkPolicy policy) {
+            if (mIterator != null) {
+                return mIterator;
+            }
+            return super.getCycleIterator(policy);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..4a7c061
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class AutoDatetimeTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private AutoDatetimeTogglePreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        LifecycleOwner lifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new AutoDatetimeTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(lifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_unchecked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_checked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mPreference.callChangeListener(true);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mPreference.callChangeListener(false);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..bae5b49
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class AutoTimeZoneTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private AutoTimeZoneTogglePreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        LifecycleOwner lifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new AutoTimeZoneTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(lifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_unchecked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_checked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mController.handlePreferenceChanged(mPreference, true);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mController.handlePreferenceChanged(mPreference, false);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..d46164e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class DatePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private DatePickerPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new DatePickerPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..cdca742
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class TimeFormatTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private TwoStatePreference mPreference;
+    private TimeFormatTogglePreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        LifecycleOwner lifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new TimeFormatTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(lifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_24HourSet_shouldCheckPreference() {
+        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
+                TimeFormatTogglePreferenceController.HOURS_24);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_12HourSet_shouldUncheckPreference() {
+        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
+                TimeFormatTogglePreferenceController.HOURS_12);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceChange_24HourSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mPreference.callChangeListener(true);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
+                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR);
+    }
+
+    @Test
+    public void testOnPreferenceChange_12HourSet_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mPreference.callChangeListener(false);
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
+                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/TimePickerFragmentTest.java b/tests/unit/src/com/android/car/settings/datetime/TimePickerFragmentTest.java
new file mode 100644
index 0000000..3afa403
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/TimePickerFragmentTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+
+import android.app.Activity;
+import android.text.format.DateFormat;
+import android.widget.TimePicker;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class TimePickerFragmentTest {
+    private TimePickerFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+
+        mSession = ExtendedMockito.mockitoSession().spyStatic(DateFormat.class).startMocking();
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onActivityCreated_isNot24HourFormat_timePickerShouldShow12HourTimeFormat()
+            throws Throwable {
+        ExtendedMockito.doReturn(false).when(() -> DateFormat.is24HourFormat(any()));
+        setUpFragment();
+        TimePicker timePicker = findTimePicker(mFragment.requireActivity());
+
+        assertThat(timePicker.is24HourView()).isFalse();
+    }
+
+    @Test
+    public void onActivityCreated_is24HourFormat_timePickerShouldShow24HourTimeFormat()
+            throws Throwable {
+        ExtendedMockito.doReturn(true).when(() -> DateFormat.is24HourFormat(any()));
+        setUpFragment();
+        TimePicker timePicker = findTimePicker(mFragment.requireActivity());
+
+        assertThat(timePicker.is24HourView()).isTrue();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String timePickerFragmentTag = "time_picker_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new TimePickerFragment(),
+                            timePickerFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (TimePickerFragment)
+                mFragmentManager.findFragmentByTag(timePickerFragmentTag);
+    }
+
+    private TimePicker findTimePicker(Activity activity) {
+        return activity.findViewById(R.id.time_picker);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..70b3688
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class TimePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private TimePickerPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new TimePickerPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..491a8d1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class TimeZonePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private TimeZonePickerPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new TimeZonePickerPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+
+        mController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mController.onStart(mLifecycleOwner);
+
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
new file mode 100644
index 0000000..29ef4bf
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2021 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TimeZoneDetector;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.datetime.ZoneGetter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RunWith(AndroidJUnit4.class)
+public class TimeZonePickerScreenPreferenceControllerTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private TimeZonePickerScreenPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private TimeZoneDetector mTimeZoneDetector;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new TimeZonePickerScreenPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+
+        // Test setup.
+        mPreferenceController.mTimeZoneDetector = mTimeZoneDetector;
+    }
+
+    @Test
+    public void testOnCreate_hasElements() {
+        List<Map<String, Object>> testTimeZones = new ArrayList<>();
+        testTimeZones.add(
+                createTimeZoneMap("testKey1", "Midway", "GMT-11:00", -1100));
+        testTimeZones.add(
+                createTimeZoneMap("testKey2", "Tijuana", "GMT-07:00", -700));
+        testTimeZones.add(
+                createTimeZoneMap("testKey3", "Coordinated Universal Time", "GMT+00:00", 0));
+        testTimeZones.add(
+                createTimeZoneMap("testKey4", "Kabul", "GMT+04:30", 430));
+        mPreferenceController.setZonesList(testTimeZones);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
+    }
+
+    @Test
+    public void testOnPreferenceClick_setTimeZoneCalled() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mPreferenceController.setZonesList(testTimeZone);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+        ManualTimeZoneSuggestion suggestion =
+                TimeZoneDetector.createManualTimeZoneSuggestion("testKey", "Test debug info");
+        verify(mTimeZoneDetector).suggestManualTimeZone(suggestion);
+    }
+
+    @Test
+    public void testOnPreferenceClick_fragmentControllerGoBack() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mPreferenceController.setZonesList(testTimeZone);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+        verify(mFragmentController).goBack();
+    }
+
+    @Test
+    public void testOnPreferenceClick_broadcastFired() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mPreferenceController.setZonesList(testTimeZone);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext, times(1)).sendBroadcast(captor.capture());
+        List<Intent> intentsFired = captor.getAllValues();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testTimeZonesComparator() {
+        List<Map<String, Object>> testTimeZones = new ArrayList<>();
+        testTimeZones.add(createTimeZoneMap("testKey1", "Oral",
+                "GMT+05:00", 500));
+        testTimeZones.add(createTimeZoneMap("testKey2", "Kathmandu",
+                "GMT+05:45", 545));
+        testTimeZones.add(createTimeZoneMap("testKey3", "Brazzaville",
+                "GMT+01:00", 100));
+        testTimeZones.add(createTimeZoneMap("testKey4", "Casablanca",
+                "GMT+01:00", 100));
+        testTimeZones.add(createTimeZoneMap("testKey5", "Nuuk",
+                "GMT-02:00", -200));
+        testTimeZones.add(createTimeZoneMap("testKey6", "St. John's",
+                "GMT-02:30", -230));
+        mPreferenceController.setZonesList(testTimeZones);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        List<String> computedOrder = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            computedOrder.add(mPreferenceGroup.getPreference(i).getTitle().toString());
+        }
+
+        assertThat(computedOrder).containsExactly("St. John's", "Nuuk", "Brazzaville", "Casablanca",
+                "Oral", "Kathmandu");
+    }
+
+    private Map<String, Object> createTimeZoneMap(String key, String timeZone, String offset,
+            int offsetValue) {
+        Map<String, Object> map = new HashMap<>();
+        map.put(ZoneGetter.KEY_ID, key);
+        map.put(ZoneGetter.KEY_DISPLAY_LABEL, timeZone);
+        map.put(ZoneGetter.KEY_OFFSET_LABEL, offset);
+        map.put(ZoneGetter.KEY_OFFSET, offsetValue);
+        return map;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java b/tests/unit/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
new file mode 100644
index 0000000..2e2ce3f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2021 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.car.settings.development;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class DevelopmentSettingsUtilTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // default to no debugging restrictions
+        when(mMockUserManager.hasUserRestriction(
+                UserManager.DISALLOW_DEBUGGING_FEATURES)).thenReturn(false);
+    }
+
+    @Test
+    public void isEnabled_settingsOff_isAdmin_shouldReturnFalse() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mMockUserManager))
+                .isFalse();
+    }
+
+    @Test
+    public void isEnabled_settingsOn_isAdmin_shouldReturnTrue() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mMockUserManager))
+                .isTrue();
+    }
+
+    @Test
+    public void isEnabled_settingsOn_notAdmin_shouldReturnFalse() {
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mMockUserManager))
+                .isFalse();
+    }
+
+    @Test
+    public void isEnabled_hasDisallowDebuggingRestriction_shouldReturnFalse() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        when(mMockUserManager.hasUserRestriction(
+                UserManager.DISALLOW_DEBUGGING_FEATURES)).thenReturn(true);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mMockUserManager))
+                .isFalse();
+    }
+
+    @Test
+    public void isEnabled_doesNotHaveDisallowDebuggingRestriction_shouldReturnTrue() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext, mMockUserManager))
+                .isTrue();
+    }
+
+    @Test
+    public void setDevelopmentSettingsEnabled_setTrue() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+
+        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, true);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void setDevelopmentSettingsEnabled_setFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, false);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1)).isEqualTo(0);
+    }
+
+    @Test
+    public void isDeviceProvisioned_true() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isTrue();
+    }
+
+    @Test
+    public void isDeviceProvisioned_false() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                0);
+        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..97d4f62
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2021 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.car.settings.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AdaptiveBrightnessTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private AdaptiveBrightnessTogglePreferenceController mPreferenceController;
+    private TwoStatePreference mTwoStatePreference;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        LifecycleOwner lifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = ApplicationProvider.getApplicationContext();
+        mTwoStatePreference = new SwitchPreference(mContext);
+
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new AdaptiveBrightnessTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mTwoStatePreference);
+
+        mPreferenceController.onCreate(lifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_manualMode_isNotChecked() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+
+        mPreferenceController.refreshUi();
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_automaticMode_isChecked() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+
+        mPreferenceController.refreshUi();
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_setFalse() {
+        mTwoStatePreference.callChangeListener(false);
+        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_setTrue() {
+        mTwoStatePreference.callChangeListener(true);
+        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
new file mode 100644
index 0000000..64e26f1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2021 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.car.settings.display;
+
+import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.common.SeekBarPreference;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BrightnessLevelPreferenceControllerTest {
+    private Context mContext;
+    private BrightnessLevelPreferenceController mController;
+    private SeekBarPreference mSeekBarPreference;
+    private int mMin;
+    private int mMax;
+    private int mMid;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        LifecycleOwner lifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mContext = ApplicationProvider.getApplicationContext();
+        mMin = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
+        mMax = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_screenBrightnessSettingMaximum);
+        mMid = (mMax + mMin) / 2;
+
+        mSeekBarPreference = new SeekBarPreference(mContext);
+        CarUxRestrictions carUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mController = new BrightnessLevelPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, carUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mSeekBarPreference);
+
+        mController.onCreate(lifecycleOwner);
+    }
+
+    @Test
+    public void testRefreshUi_maxSet() {
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getMax()).isEqualTo(GAMMA_SPACE_MAX);
+    }
+
+    @Test
+    public void testRefreshUi_minValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMin, UserHandle.myUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(0);
+    }
+
+    @Test
+    public void testRefreshUi_maxValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMax, UserHandle.myUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(GAMMA_SPACE_MAX);
+    }
+
+    @Test
+    public void testRefreshUi_midValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMid, UserHandle.myUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(
+                convertLinearToGamma(mMid,
+                        mMin, mMax));
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_minValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(0);
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMin);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_maxValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(GAMMA_SPACE_MAX);
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMax);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_midValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(convertLinearToGamma(mMid, mMin, mMax));
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, UserHandle.myUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMid);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceControllerTestCase.java b/tests/unit/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceControllerTestCase.java
new file mode 100644
index 0000000..1ea7754
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/BaseDeviceAdminAddPreferenceControllerTestCase.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.notNull;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+abstract class BaseDeviceAdminAddPreferenceControllerTestCase<T extends
+        BaseDeviceAdminAddPreferenceController<?>> extends BasePreferenceControllerTestCase {
+
+    protected final void verifyPreferenceTitleNeverSet() {
+        verify(mPreference, never()).setTitle(any());
+    }
+
+    protected final void verifyPreferenceTitleSet(CharSequence title) {
+        verify(mPreference).setTitle(title);
+    }
+
+    protected final void verifyPreferenceTitleSet(int resId) {
+        verify(mPreference).setTitle(resId);
+    }
+
+    protected final void verifyPreferenceSummarySet(CharSequence title) {
+        verify(mPreference).setSummary(title);
+    }
+
+    protected final void verifyPreferenceSummaryNeverSet() {
+        verify(mPreference, never()).setSummary(any());
+    }
+
+    protected final void verifyPreferenceIconSet() {
+        verify(mPreference).setIcon(notNull());
+    }
+
+    protected final void verifyPreferenceIconNeverSet() {
+        verify(mPreference, never()).setIcon(notNull());
+    }
+
+    protected final void verifyPreferenceDisabled() {
+        verify(mPreference).setEnabled(false);
+    }
+
+    protected final void verifyPreferenceEnabled() {
+        verify(mPreference).setEnabled(true);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/BaseEnterpriseTestCase.java b/tests/unit/src/com/android/car/settings/enterprise/BaseEnterpriseTestCase.java
new file mode 100644
index 0000000..2bebf0f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/BaseEnterpriseTestCase.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DeviceAdminInfo;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.os.UserManager;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+abstract class BaseEnterpriseTestCase {
+
+    @Rule
+    public final MockitoRule mockitorule = MockitoJUnit.rule();
+
+    protected final Context mRealContext = ApplicationProvider.getApplicationContext();
+    protected final Context mSpiedContext = spy(mRealContext);
+
+    protected final String mPackageName = mRealContext.getPackageName();
+
+    private final PackageManager mRealPm = mRealContext.getPackageManager();
+    protected PackageManager mSpiedPm = spy(mRealPm);
+
+    protected final ComponentName mDefaultAdmin =
+            new ComponentName(mSpiedContext, DefaultDeviceAdminReceiver.class);
+    protected final ComponentName mFancyAdmin =
+            new ComponentName(mSpiedContext, FancyDeviceAdminReceiver.class);
+
+    protected DeviceAdminInfo mDefaultDeviceAdminInfo;
+    protected DeviceAdminInfo mFancyDeviceAdminInfo;
+
+    @Mock
+    private DevicePolicyManager mDpm;
+
+    @Mock
+    private UserManager mUm;
+
+    @Before
+    public final void setFixtures() throws Exception {
+        when(mSpiedContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDpm);
+        when(mSpiedContext.getSystemService(PackageManager.class)).thenReturn(mSpiedPm);
+        when(mSpiedContext.getPackageManager()).thenReturn(mSpiedPm);
+        when(mSpiedContext.getSystemService(UserManager.class)).thenReturn(mUm);
+
+        ActivityInfo defaultInfo = mRealPm.getReceiverInfo(mDefaultAdmin,
+                PackageManager.GET_META_DATA);
+        mDefaultDeviceAdminInfo = new DeviceAdminInfo(mRealContext, defaultInfo);
+
+        ActivityInfo fancyInfo = mRealPm.getReceiverInfo(mFancyAdmin, PackageManager.GET_META_DATA);
+        mFancyDeviceAdminInfo = new DeviceAdminInfo(mRealContext, fancyInfo);
+    }
+
+    protected final void mockProfileOwner() {
+        mockActiveAdmin();
+        when(mDpm.getProfileOwner()).thenReturn(mDefaultAdmin);
+    }
+
+    protected final void mockDeviceOwner() {
+        mockActiveAdmin();
+        when(mDpm.getDeviceOwnerComponentOnCallingUser()).thenReturn(mDefaultAdmin);
+        when(mDpm.getDeviceOwnerComponentOnAnyUser()).thenReturn(mDefaultAdmin);
+    }
+
+    protected final void mockFinancialDevice() {
+        when(mDpm.isDeviceManaged()).thenReturn(true);
+        when(mDpm.getDeviceOwnerType(mDefaultAdmin))
+                .thenReturn(DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED);
+    }
+
+    protected final void mockActiveAdmin() {
+        when(mDpm.isAdminActive(mDefaultAdmin)).thenReturn(true);
+    }
+
+    protected final void mockInactiveAdmin() {
+        when(mDpm.isAdminActive(mDefaultAdmin)).thenReturn(false);
+    }
+
+    protected final void mockActiveAdmin(ComponentName admin) {
+        when(mDpm.getActiveAdmins()).thenReturn(Arrays.asList(admin));
+    }
+
+    protected final void mockGetLongSupportMessageForUser(CharSequence message) {
+        when(mDpm.getLongSupportMessageForUser(eq(mDefaultAdmin), anyInt())).thenReturn(message);
+    }
+
+    protected final void mockHasDeviceAdminFeature() {
+        when(mSpiedPm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)).thenReturn(true);
+    }
+
+    protected final void mockNoDeviceAdminFeature() {
+        when(mSpiedPm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)).thenReturn(false);
+    }
+
+    protected final void verifyAdminActivated() {
+        verify(mDpm).setActiveAdmin(eq(mDefaultAdmin), anyBoolean());
+    }
+
+    protected final void verifyAdminNeverActivated() {
+        verify(mDpm, never()).setActiveAdmin(any(), anyBoolean());
+    }
+
+    protected final void verifyAdminDeactivated() {
+        verify(mDpm).removeActiveAdmin(mDefaultAdmin);
+    }
+
+    protected final void verifyAdminNeverDeactivated() {
+        verify(mDpm, never()).removeActiveAdmin(any());
+    }
+
+    protected final void mockAdminUser() {
+        when(mUm.isAdminUser()).thenReturn(true);
+    }
+
+    protected final void mockNonAdminUser() {
+        when(mUm.isAdminUser()).thenReturn(false);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/BasePreferenceControllerTestCase.java b/tests/unit/src/com/android/car/settings/enterprise/BasePreferenceControllerTestCase.java
new file mode 100644
index 0000000..0a2148d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/BasePreferenceControllerTestCase.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import org.mockito.Mock;
+
+abstract class BasePreferenceControllerTestCase extends BaseEnterpriseTestCase {
+
+    protected final String mPreferenceKey = "Da Key";
+    protected final CarUxRestrictions mUxRestrictions = new CarUxRestrictions.Builder(
+            /* reqOpt= */ true, CarUxRestrictions.UX_RESTRICTIONS_FULLY_RESTRICTED, /* time= */ 0)
+                    .build();
+    @Mock
+    protected FragmentController mFragmentController;
+    @Mock
+    protected Preference mPreference;
+
+    protected static final String availabilityToString(int value) {
+        switch (value) {
+            case PreferenceController.AVAILABLE:
+                return "AVAILABLE";
+            case PreferenceController.AVAILABLE_FOR_VIEWING:
+                return "AVAILABLE_FOR_VIEWING";
+            case PreferenceController.CONDITIONALLY_UNAVAILABLE:
+                return "CONDITIONALLY_UNAVAILABLE";
+            case PreferenceController.DISABLED_FOR_PROFILE:
+                return "DISABLED_FOR_PROFILE";
+            case PreferenceController.UNSUPPORTED_ON_DEVICE:
+                return "UNSUPPORTED_ON_DEVICE";
+            default:
+                return "INVALID-" + value;
+        }
+    }
+
+    protected static final void assertAvailability(int actualValue, int expectedValue) {
+        assertWithMessage("controller availability (%s=%s, %s=%s)",
+                actualValue, availabilityToString(actualValue),
+                expectedValue, availabilityToString(expectedValue))
+                        .that(actualValue).isEqualTo(expectedValue);
+    }
+
+    protected final void verifyGoBack() {
+        verify(mFragmentController).goBack();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DefaultDeviceAdminReceiver.java b/tests/unit/src/com/android/car/settings/enterprise/DefaultDeviceAdminReceiver.java
new file mode 100644
index 0000000..3afbb90
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DefaultDeviceAdminReceiver.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DeviceAdminReceiver;
+
+public final class DefaultDeviceAdminReceiver extends DeviceAdminReceiver {
+
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceControllerTest.java
new file mode 100644
index 0000000..5b8b6b8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActionPreferenceControllerTest.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddActionPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddActionPreferenceController> {
+
+    private DeviceAdminAddActionPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddActionPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noAdmin() throws Exception {
+        DeviceAdminAddActionPreferenceController controller =
+                new DeviceAdminAddActionPreferenceController(mSpiedContext, mPreferenceKey,
+                        mFragmentController, mUxRestrictions);
+
+        assertAvailability(controller.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testUpdateStatus_deviceOwner() throws Exception {
+        mockDeviceOwner();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceDisabled();
+        verifyPreferenceTitleSet(R.string.remove_device_admin);
+    }
+
+    @Test
+    public void testUpdateStatus_profileOwner() throws Exception {
+        mockProfileOwner();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceDisabled();
+        verifyPreferenceTitleSet(R.string.remove_device_admin);
+    }
+
+    @Test
+    public void testUpdateStatus_activeAdmin() throws Exception {
+        mockActiveAdmin();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceEnabled();
+        verifyPreferenceTitleSet(R.string.remove_device_admin);
+    }
+
+    @Test
+    public void testUpdateStatus_inactiveAdmin() throws Exception {
+        mockInactiveAdmin();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceEnabled();
+        verifyPreferenceTitleSet(R.string.add_device_admin);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_deviceOwner() throws Exception {
+        mockDeviceOwner();
+        mController.setIsActive();
+
+        handlePreferenceClicked();
+
+        verifyAdminNeverActivated();
+        verifyAdminNeverDeactivated();
+        verifyGoBack();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_profileOwner() throws Exception {
+        mockProfileOwner();
+        mController.setIsActive();
+
+        handlePreferenceClicked();
+
+        verifyAdminNeverActivated();
+        verifyAdminNeverDeactivated();
+        verifyGoBack();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_activeAdmin() throws Exception {
+        mockActiveAdmin();
+        mController.setIsActive();
+
+        handlePreferenceClicked();
+
+        verifyAdminNeverActivated();
+        verifyAdminDeactivated();
+        verifyGoBack();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_inactiveAdmin() throws Exception {
+        mockInactiveAdmin();
+        mController.setIsActive();
+
+        handlePreferenceClicked();
+
+        verifyAdminActivated();
+        verifyAdminNeverDeactivated();
+        verifyGoBack();
+    }
+
+    private void handlePreferenceClicked() {
+        boolean handled = mController.handlePreferenceClicked(mPreference);
+        assertWithMessage("handlePreferenceClicked() result").that(handled).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActivityTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActivityTest.java
new file mode 100644
index 0000000..fcd2bd6
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddActivityTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static android.car.test.mocks.AndroidMockitoHelper.syncCallOnMainThread;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import androidx.fragment.app.Fragment;
+
+import org.junit.Test;
+
+public final class DeviceAdminAddActivityTest extends BaseEnterpriseTestCase {
+
+    @Test
+    public void testGetFragment() throws Exception {
+        Fragment fragment = syncCallOnMainThread(() ->
+                // DeviceAdminAddActivity must be created in the main thread
+                new DeviceAdminAddActivity().getInitialFragment());
+        assertWithMessage("initial fragment class").that(fragment)
+                .isInstanceOf(DeviceAdminAddFragment.class);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceControllerTest.java
new file mode 100644
index 0000000..1ef9399
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddCancelPreferenceControllerTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddCancelPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddCancelPreferenceController> {
+
+    private DeviceAdminAddCancelPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddCancelPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testUpdateState() throws Exception {
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(com.android.internal.R.string.cancel);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked() throws Exception {
+        boolean handled = mController.handlePreferenceClicked(mPreference);
+
+        assertWithMessage("handlePreferenceClicked() result").that(handled).isTrue();
+        verifyGoBack();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceControllerTest.java
new file mode 100644
index 0000000..18e4c5b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddExplanationPreferenceControllerTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import com.android.car.settings.common.PreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddExplanationPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddExplanationPreferenceController> {
+
+    private DeviceAdminAddExplanationPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddExplanationPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noAdmin() throws Exception {
+        DeviceAdminAddExplanationPreferenceController controller =
+                new DeviceAdminAddExplanationPreferenceController(mSpiedContext, mPreferenceKey,
+                        mFragmentController, mUxRestrictions);
+
+        assertAvailability(controller.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_deviceOwner() throws Exception {
+        mockDeviceOwner();
+        mController.setExplanation("To conquer the universe");
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_profileOwner() throws Exception {
+        mockProfileOwner();
+        mController.setExplanation("To conquer the universe");
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetRealAvailabilityStatus_nullReason() throws Exception {
+        mController.setExplanation(null);
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_emptyReason() throws Exception {
+        mController.setExplanation("");
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_validReason() throws Exception {
+        mController.setExplanation("To conquer the universe");
+
+        assertAvailability(mController.getAvailabilityStatus(), PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void testUpdateState() throws Exception {
+        mController.setExplanation("To conquer the universe");
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet("To conquer the universe");
+        verifyPreferenceSummaryNeverSet();
+        verifyPreferenceIconNeverSet();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddFragmentTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddFragmentTest.java
new file mode 100644
index 0000000..777af9b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddFragmentTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static android.car.test.mocks.AndroidMockitoHelper.syncCallOnMainThread;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.content.Context;
+import android.content.res.XmlResourceParser;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddFragmentTest extends BaseEnterpriseTestCase {
+
+    private final Context mRealContext = ApplicationProvider.getApplicationContext();
+
+    private DeviceAdminAddFragment mFragment;
+
+    @Before
+    public void createFragment() throws Exception {
+        mFragment = syncCallOnMainThread(() -> new DeviceAdminAddFragment());
+    }
+
+    @Test
+    public void testGetPreferenceScreenResId() {
+        int resId = mFragment.getPreferenceScreenResId();
+
+        XmlResourceParser parser = mRealContext.getResources().getXml(resId);
+        assertWithMessage("xml with id%s", resId).that(parser).isNotNull();
+    }
+
+    // TODO(b/191269229): add tests for onAttach()
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceControllerTest.java
new file mode 100644
index 0000000..566ed2a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddHeaderPreferenceControllerTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddHeaderPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddHeaderPreferenceController> {
+
+    private DeviceAdminAddHeaderPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddHeaderPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testUpdateState_adminWithNoProperties() throws Exception {
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(DefaultDeviceAdminReceiver.class.getName());
+        verifyPreferenceSummaryNeverSet();
+        verifyPreferenceIconSet();
+    }
+
+    @Test
+    public void testUpdateState_adminWithAllProperties() throws Exception {
+        mController.setDeviceAdmin(mFancyDeviceAdminInfo);
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet("LordOfTheSevenReceiverKingdoms");
+        verifyPreferenceSummarySet("One Receiver to Rule them All");
+        verifyPreferenceIconSet();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceControllerTest.java
new file mode 100644
index 0000000..b7ed858
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddPoliciesPreferenceControllerTest.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DeviceAdminInfo.PolicyInfo;
+import android.util.Log;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.ui.preference.CarUiPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public final class DeviceAdminAddPoliciesPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddPoliciesPreferenceController> {
+
+    private static final String TAG = DeviceAdminAddPoliciesPreferenceControllerTest.class
+            .getSimpleName();
+
+    private DeviceAdminAddPoliciesPreferenceController mController;
+
+    @Mock
+    private PreferenceGroup mPreferenceGroup;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddPoliciesPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testGetPreferenceType() throws Exception {
+        assertWithMessage("preference type").that(mController.getPreferenceType())
+                .isEqualTo(PreferenceGroup.class);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noAdmin() throws Exception {
+        DeviceAdminAddPoliciesPreferenceController controller =
+                new DeviceAdminAddPoliciesPreferenceController(mSpiedContext, mPreferenceKey,
+                        mFragmentController, mUxRestrictions);
+
+        assertAvailability(controller.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_deviceOwner() throws Exception {
+        mockDeviceOwner();
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_profileOwner() throws Exception {
+        mockProfileOwner();
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_regularAdmin() throws Exception {
+        // Admin is neither PO nor DO
+
+        assertAvailability(mController.getAvailabilityStatus(), PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void testUpdateState_adminUser() throws Exception {
+        updateStateTest(/* isAdmin= */ true);
+    }
+
+    @Test
+    public void testUpdateState_nonAdminUser() throws Exception {
+        updateStateTest(/* isAdmin= */ false);
+    }
+
+    private void updateStateTest(boolean isAdmin) {
+        // Arrange
+        if (isAdmin) {
+            mockAdminUser();
+        } else {
+            mockNonAdminUser();
+        }
+        ArrayList<PolicyInfo> usedPolicies = mFancyDeviceAdminInfo.getUsedPolicies();
+        Log.d(TAG, "Admin policies: " + usedPolicies);
+        mController.setDeviceAdmin(mFancyDeviceAdminInfo);
+        List<CarUiPreference> addedPreferences = new ArrayList<>();
+        when(mPreferenceGroup.addPreference(any())).thenAnswer(call -> {
+            Log.d(TAG, "Mocking " + call);
+            addedPreferences.add((CarUiPreference) call.getArguments()[0]);
+            return true;
+        });
+
+        // Act
+        mController.updateState(mPreferenceGroup);
+        Log.d(TAG, "Added preferences: " + addedPreferences);
+
+        // Assert
+
+        verify(mPreferenceGroup).removeAll();
+
+        int maxPoliciesShown = mRealContext.getResources()
+                .getInteger(R.integer.max_device_policies_shown);
+        Log.d(TAG, "R.integer.max_device_policies_shown: " + maxPoliciesShown);
+        verify(mPreferenceGroup).setInitialExpandedChildrenCount(maxPoliciesShown);
+
+        int expectedSize = usedPolicies.size();
+        assertWithMessage("added preferences").that(addedPreferences).hasSize(expectedSize);
+
+        for (int i = 0; i < expectedSize; i++) {
+            CarUiPreference preference = addedPreferences.get(i);
+            PolicyInfo policy = usedPolicies.get(i);
+            CharSequence expectedTitle = mRealContext
+                    .getText(isAdmin ? policy.label : policy.labelForSecondaryUsers);
+            assertWithMessage("title for policy at index %s", i)
+                    .that(preference.getTitle().toString())
+                    .isEqualTo(expectedTitle);
+            CharSequence expectedSummary = mRealContext
+                    .getText(isAdmin ? policy.description : policy.descriptionForSecondaryUsers);
+            assertWithMessage("summary for policy at index %s", i)
+                    .that(preference.getSummary().toString())
+                    .isEqualTo(expectedSummary);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceControllerTest.java
new file mode 100644
index 0000000..bea4383
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddSupportPreferenceControllerTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import com.android.car.settings.common.PreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddSupportPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddSupportPreferenceController> {
+
+    private DeviceAdminAddSupportPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddSupportPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noAdmin() throws Exception {
+        DeviceAdminAddSupportPreferenceController controller =
+                new DeviceAdminAddSupportPreferenceController(mSpiedContext, mPreferenceKey,
+                        mFragmentController, mUxRestrictions);
+
+        assertAvailability(controller.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_nullMessage() {
+        mockGetLongSupportMessageForUser(null);
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_emptyMessage() {
+        mockGetLongSupportMessageForUser("");
+
+        assertAvailability(mController.getAvailabilityStatus(),
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_validMessage() {
+        mockGetLongSupportMessageForUser("WHAZZZZUP");
+
+        assertAvailability(mController.getAvailabilityStatus(), PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void testUpdateState() {
+        mockGetLongSupportMessageForUser("WHAZZZZUP");
+        mController.setSupportMessage();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet("WHAZZZZUP");
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceControllerTest.java
new file mode 100644
index 0000000..1561ffa
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/DeviceAdminAddWarningPreferenceControllerTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public final class DeviceAdminAddWarningPreferenceControllerTest extends
+        BaseDeviceAdminAddPreferenceControllerTestCase
+                <DeviceAdminAddWarningPreferenceController> {
+
+    private DeviceAdminAddWarningPreferenceController mController;
+
+    @Before
+    public void setController() {
+        mController = new DeviceAdminAddWarningPreferenceController(mSpiedContext,
+                mPreferenceKey, mFragmentController, mUxRestrictions);
+        mController.setDeviceAdmin(mDefaultDeviceAdminInfo);
+    }
+
+    @Test
+    public void testUpdateState_adminInactive() {
+        mockInactiveAdmin();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(
+                mRealContext.getString(R.string.device_admin_warning, mPackageName));
+    }
+
+    @Test
+    public void testUpdateState_adminActive() {
+        mockActiveAdmin();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(
+                mRealContext.getString(R.string.device_admin_status, mPackageName));
+    }
+
+    @Test
+    public void testUpdateState_profileOwner() {
+        mockProfileOwner();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(mRealContext.getString(R.string.admin_profile_owner_user_message));
+    }
+
+    @Test
+    public void testUpdateState_deviceOwner() {
+        mockDeviceOwner();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(mRealContext.getString(R.string.admin_device_owner_message));
+    }
+
+    @Test
+    public void testUpdateState_deviceOwner_financialDevice() {
+        mockDeviceOwner();
+        mockFinancialDevice();
+
+        mController.updateState(mPreference);
+
+        verifyPreferenceTitleSet(mRealContext.getString(R.string.admin_financed_message));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/EnterpriseUtilsTest.java b/tests/unit/src/com/android/car/settings/enterprise/EnterpriseUtilsTest.java
new file mode 100644
index 0000000..4251de6
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/EnterpriseUtilsTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static com.android.car.settings.enterprise.EnterpriseUtils.getAdminWithinPackage;
+import static com.android.car.settings.enterprise.EnterpriseUtils.getDeviceAdminInfo;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.app.admin.DeviceAdminInfo;
+import android.content.ComponentName;
+
+import org.junit.Test;
+
+public final class EnterpriseUtilsTest extends BaseEnterpriseTestCase {
+
+    @Test
+    public void testGetAdminWithinPackage_notFound() {
+        ComponentName admin = getAdminWithinPackage(mSpiedContext, mPackageName);
+
+        assertWithMessage("Admin for %s", mPackageName).that(admin).isNull();
+    }
+
+    @Test
+    public void testGetAdminWithinPackage_found() {
+        mockActiveAdmin(mDefaultAdmin);
+
+        ComponentName admin = getAdminWithinPackage(mSpiedContext, mPackageName);
+
+        assertWithMessage("Admin for %s", mPackageName).that(admin).isEqualTo(mDefaultAdmin);
+    }
+
+    @Test
+    public void testGetDeviceAdminInfo_notFound() {
+        ComponentName admin = new ComponentName("Bond", "James Bond");
+
+        DeviceAdminInfo info = getDeviceAdminInfo(mSpiedContext, admin);
+
+        assertWithMessage("Device admin for %s", admin).that(info).isNull();
+    }
+
+    @Test
+    public void testGetDeviceAdminInfo_found() {
+        DeviceAdminInfo info = getDeviceAdminInfo(mSpiedContext, mDefaultAdmin);
+
+        assertWithMessage("Device admin for %s", mDefaultAdmin).that(info).isNotNull();
+        assertWithMessage("Component for %s", info).that(info.getComponent())
+                .isEqualTo(mDefaultAdmin);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/FancyDeviceAdminReceiver.java b/tests/unit/src/com/android/car/settings/enterprise/FancyDeviceAdminReceiver.java
new file mode 100644
index 0000000..563398a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/FancyDeviceAdminReceiver.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import android.app.admin.DeviceAdminReceiver;
+
+public final class FancyDeviceAdminReceiver extends DeviceAdminReceiver {
+
+}
diff --git a/tests/unit/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceControllerTest.java
new file mode 100644
index 0000000..8392c78
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/enterprise/WorkPolicyInfoPreferenceControllerTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2021 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.car.settings.enterprise;
+
+import static android.car.test.mocks.CarArgumentMatchers.intentFor;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+
+import org.junit.Test;
+import org.mockito.Mock;
+
+import java.util.Arrays;
+
+public final class WorkPolicyInfoPreferenceControllerTest extends BasePreferenceControllerTestCase {
+
+    @Mock
+    private ResolveInfo mResolveInfo;
+
+    @Mock
+    private Preference mPreference;
+
+    @Test
+    public void testGetPreferenceType()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+
+        assertWithMessage("preferenceType").that(controller.getPreferenceType())
+                .isEqualTo(Preference.class);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noFeature()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureDisabled();
+
+        assertAvailability(controller.getAvailabilityStatus(), UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_noAdmin() {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        // Don't need to mock anything else
+
+        assertAvailability(controller.getAvailabilityStatus(), DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_adminWithoutReceiver() {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        mockProfileOwner();
+        // Don't need to mock anything else
+
+        assertAvailability(controller.getAvailabilityStatus(), DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_adminWithReceiver()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        mockProfileOwner();
+        mockHasIntent();
+
+        assertAvailability(controller.getAvailabilityStatus(), AVAILABLE);
+    }
+
+    @Test
+    public void testUpdateStatus_noFeature()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureDisabled();
+        // Don't need to mock anything else
+
+        controller.updateState(mPreference);
+
+        verifyPreferenceIntentNotSet();
+    }
+
+    @Test
+    public void testUpdateStatus_noAdmin()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        // Don't need to mock anything else
+
+        controller.updateState(mPreference);
+
+        verifyPreferenceIntentNotSet();
+    }
+
+    @Test
+    public void testUpdateStatus_adminWithoutReceiver()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        mockProfileOwner();
+        // Don't need to mock anything else
+
+        controller.updateState(mPreference);
+
+        verifyPreferenceIntentNotSet();
+    }
+
+    @Test
+    public void testUpdateStatus_adminWithReceiver()  {
+        WorkPolicyInfoPreferenceController controller = newControllerWithFeatureEnabled();
+        mockProfileOwner();
+        mockHasIntent();
+
+        controller.updateState(mPreference);
+
+        verifyPreferenceIntentSet();
+    }
+
+    // Must create new instances on demand as the feature check is done on constructor
+    private WorkPolicyInfoPreferenceController newControllerWithFeatureDisabled() {
+        mockNoDeviceAdminFeature();
+        return newController();
+    }
+
+    // Must create new instances on demand as the feature check is done on constructor
+    private WorkPolicyInfoPreferenceController newControllerWithFeatureEnabled() {
+        mockHasDeviceAdminFeature();
+        return newController();
+    }
+
+    private WorkPolicyInfoPreferenceController newController() {
+        return new WorkPolicyInfoPreferenceController(mSpiedContext, mPreferenceKey,
+                mFragmentController, mUxRestrictions);
+    }
+
+    private void mockHasIntent() {
+        // Must use doReturn() instead of when() because it's a spy
+        doReturn(Arrays.asList(mResolveInfo)).when(mSpiedPm)
+                .queryIntentActivities(showWorkPolicyInfoIntent(), eq(/* flags= */ 0));
+    }
+
+    private Intent showWorkPolicyInfoIntent() {
+        return intentFor(Settings.ACTION_SHOW_WORK_POLICY_INFO, mDefaultAdmin.getPackageName());
+    }
+
+    private void verifyPreferenceIntentNotSet() {
+        verify(mPreference, never()).setIntent(any());
+    }
+
+    private void verifyPreferenceIntentSet() {
+        verify(mPreference).setIntent(showWorkPolicyInfoIntent());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
new file mode 100644
index 0000000..f4a429a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2021 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.car.settings.inputmethod;
+
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class EnabledKeyboardPreferenceControllerTest {
+    private static final String PLACEHOLDER_LABEL = "placeholder label";
+    private static final String PLACEHOLDER_ID = "placeholder id";
+    private static final String PLACEHOLDER_SETTINGS_ACTIVITY = "placeholder settings activity";
+    private static final String PLACEHOLDER_PACKAGE_NAME = "placeholder package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private EnabledKeyboardPreferenceController mPreferenceController;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private List<String> mPermittedList;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private DevicePolicyManager mDevicePolicyManager;
+    @Mock
+    private InputMethodManager mInputMethodManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(PLACEHOLDER_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+
+        when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDevicePolicyManager);
+        when(mContext.getSystemService(InputMethodManager.class)).thenReturn(mInputMethodManager);
+
+        mPreferenceController = new TestEnabledKeyboardPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreference);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(PLACEHOLDER_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_hasAllowedImeByOrganization() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser())
+                .thenReturn(mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser())
+                .thenReturn(mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_skipVoiceTyping() {
+        List<InputMethodInfo> infos =
+                createInputMethodInfoList(InputMethodUtil.GOOGLE_VOICE_TYPING);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceIcon() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        assertThat(preference.getIcon()).isEqualTo(
+                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceTitle() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceSummary() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        assertThat(preference.getSummary()).isEqualTo(
+                InputMethodUtil.getSummaryString(mContext, mInputMethodManager, infos.get(0)));
+    }
+
+    @Test
+    public void performClick_launchSettingsActivity() {
+        doNothing().when(mContext).startActivity(any());
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext).startActivity(captor.capture());
+        Intent intent = captor.getValue();
+        assertThat(intent).isNotNull();
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(intent.getComponent().getClassName()).isEqualTo(PLACEHOLDER_SETTINGS_ACTIVITY);
+        assertThat(intent.getComponent().getPackageName()).isEqualTo(DISALLOWED_PACKAGE_NAME);
+    }
+
+    @Test
+    public void performClick_missingSettingsActivity_noCrash() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        preference.performClick(); // if no exception occurs here, test passes
+    }
+
+    @Test
+    public void performClick_noSettingsActivity_noCrash() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                DISALLOWED_PACKAGE_NAME, /* settingsActivity= */ null);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreference.getPreference(0);
+        preference.performClick(); // if no exception occurs here, test passes
+    }
+
+    private List<InputMethodInfo> createInputMethodInfoList(String packageName) {
+        return createInputMethodInfoList(packageName, PLACEHOLDER_SETTINGS_ACTIVITY);
+    }
+
+    private List<InputMethodInfo> createInputMethodInfoList(String packageName,
+            String settingsName) {
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createMockInputMethodInfoWithSubtypes(
+                packageManager, packageName, settingsName));
+        return infos;
+    }
+
+    private InputMethodInfo createMockInputMethodInfoWithSubtypes(
+            PackageManager packageManager, String packageName, String settingsName) {
+        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName,
+                settingsName);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        when(mInputMethodManager.getEnabledInputMethodSubtypeList(any(), anyBoolean()))
+                .thenReturn(subtypes);
+
+        return mockInfo;
+    }
+
+    private static InputMethodInfo createMockInputMethodInfo(
+            PackageManager packageManager, String packageName, String settingsName) {
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.getId()).thenReturn(PLACEHOLDER_ID);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(PLACEHOLDER_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
+        when(mockInfo.getSettingsActivity()).thenReturn(settingsName);
+        return mockInfo;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtype.InputMethodSubtypeBuilder().setSubtypeId(id)
+                .setSubtypeLocale(locale).setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private static class TestEnabledKeyboardPreferenceController extends
+            EnabledKeyboardPreferenceController {
+
+        TestEnabledKeyboardPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        Intent createInputMethodSettingsIntent(String packageName, String settingsActivity) {
+            Intent intent = super.createInputMethodSettingsIntent(packageName, settingsActivity);
+            // FLAG_ACTIVITY_NEW_TASK is required to launch an activity outside of an activity
+            // context.
+            intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
+            return intent;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java b/tests/unit/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
new file mode 100644
index 0000000..5f9e998
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2021 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.graphics.drawable.Drawable;
+import android.provider.Settings;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@RunWith(AndroidJUnit4.class)
+public class InputMethodUtilTest {
+    private static final String PLACEHOLDER_PACKAGE_NAME = "placeholder package name";
+    private static final String PLACEHOLDER_LABEL = "placeholder label";
+    private static final String PLACEHOLDER_SETTINGS_ACTIVITY = "placeholder settings activity";
+    private static final String SUBTYPES_STRING =
+            "English (United States), German (Belgium), and Occitan (France)";
+    private static final String PLACEHOLDER_ENABLED_INPUT_METHODS =
+            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
+                    + ".VoiceInputMethodService:com.google.android.apps.automotive.inputmethod/"
+                    + ".InputMethodService";
+    private static final String PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT =
+            "com.google.android.apps.automotive.inputmethod/.InputMethodService";
+    private static final String PLACEHOLDER_ENABLED_INPUT_METHOD_ID =
+            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
+                    + ".VoiceInputMethodService";
+    private static final String PLACEHOLDER_DISABLED_INPUT_METHOD_ID = "disabled input method id";
+    private Context mContext;
+    private List<InputMethodInfo> mPlaceholderEnabledInputMethodsListAllDefaultable;
+    private List<InputMethodInfo> mPlaceholderEnabledInputMethodsListOneDefaultable;
+
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private InputMethodManager mInputMethodManager;
+    @Mock
+    private DevicePolicyManager mDevicePolicyManager;
+    @Mock
+    private Drawable mIcon;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = ApplicationProvider.getApplicationContext();
+
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, PLACEHOLDER_ENABLED_INPUT_METHODS);
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD, PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        mPlaceholderEnabledInputMethodsListOneDefaultable = Arrays
+                .stream(PLACEHOLDER_ENABLED_INPUT_METHODS.split(
+                        String.valueOf(InputMethodUtil.INPUT_METHOD_DELIMITER)))
+                .collect(Collectors.toList())
+                .stream().map(
+                        result -> {
+                            InputMethodInfo info = createMockInputMethodInfo(
+                                    mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+                            when(info.getId()).thenReturn(result);
+                            when(info.isDefault(mContext)).thenReturn(result.equals(
+                                    PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT));
+                            return info;
+                        })
+                .collect(Collectors.toList());
+        mPlaceholderEnabledInputMethodsListAllDefaultable = Arrays
+                .stream(PLACEHOLDER_ENABLED_INPUT_METHODS.split(String.valueOf(InputMethodUtil
+                        .INPUT_METHOD_DELIMITER)))
+                .collect(Collectors.toList())
+                .stream().map(
+                        result -> {
+                            InputMethodInfo info = createMockInputMethodInfo(
+                                    mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+                            when(info.getId()).thenReturn(result);
+                            when(info.isDefault(mContext)).thenReturn(true);
+                            return info;
+                        })
+                .collect(Collectors.toList());
+    }
+
+    @Test
+    public void getPermittedAndEnabledInputMethodList_noEnabledInputMethods_returnsNull() {
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(null);
+
+        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
+                mInputMethodManager, mDevicePolicyManager);
+
+        assertThat(results).isNull();
+    }
+
+    @Test
+    public void getPermittedAndEnabledInputMethodList_noPermittedMethods_returnsEmptyList() {
+        String secondPlaceholderPackageName = "Different package";
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(
+                mPackageManager, mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(Collections.singletonList(info));
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser())
+                .thenReturn(Collections.singletonList(secondPlaceholderPackageName));
+
+        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
+                mInputMethodManager, mDevicePolicyManager);
+
+        assertThat(results).isNotNull();
+        assertThat(results).isEmpty();
+    }
+
+    @Test
+    public void getPermittedAndEnabledInputMethodList_withGoogleTypingIME_doesNotIncludeIME() {
+        InputMethodInfo placeholderIME = createMockInputMethodInfoWithSubtypes(
+                mPackageManager, mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        InputMethodInfo googleVoiceTypingIME = createMockInputMethodInfoWithSubtypes(
+                mPackageManager, mInputMethodManager, InputMethodUtil.GOOGLE_VOICE_TYPING);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(Arrays.asList(placeholderIME, googleVoiceTypingIME));
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+
+        List<InputMethodInfo> results = InputMethodUtil.getPermittedAndEnabledInputMethodList(
+                mInputMethodManager, mDevicePolicyManager);
+
+        assertThat(results).contains(placeholderIME);
+        assertThat(results).doesNotContain(googleVoiceTypingIME);
+    }
+
+    @Test
+    public void getPackageIcon_hasApplicationIcon() throws PackageManager.NameNotFoundException {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        when(mPackageManager.getApplicationIcon(eq(info.getPackageName()))).thenReturn(mIcon);
+        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(mIcon);
+    }
+
+    @Test
+    public void getPackageIcon_noApplicationIcon() throws PackageManager.NameNotFoundException {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        when(mPackageManager.getApplicationIcon(PLACEHOLDER_PACKAGE_NAME)).thenThrow(
+                new PackageManager.NameNotFoundException());
+        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(
+                InputMethodUtil.NO_ICON);
+    }
+
+    @Test
+    public void getPackageLabel() {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        assertThat(InputMethodUtil.getPackageLabel(mPackageManager, info)).isEqualTo(
+                PLACEHOLDER_LABEL);
+    }
+
+    @Test
+    public void getSummaryString() {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, PLACEHOLDER_PACKAGE_NAME);
+        assertThat(InputMethodUtil.getSummaryString(mContext, mInputMethodManager, info)).isEqualTo(
+                SUBTYPES_STRING);
+    }
+
+    @Test
+    public void isInputMethodEnabled_isDisabled_returnsFalse() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_DISABLED_INPUT_METHOD_ID);
+
+        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
+                .isFalse();
+    }
+
+    @Test
+    public void isInputMethodEnabled_isEnabled_returnsTrue() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
+                .isTrue();
+    }
+
+    @Test
+    public void enableInputMethod_alreadyEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHODS);
+    }
+
+    @Test
+    public void enableInputMethod_noEnabledInputMethods_addsIME() {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, "");
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void enableInputMethod_someEnabledInputMethods_addsIME() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_DISABLED_INPUT_METHOD_ID);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHODS + ":"
+                        + PLACEHOLDER_DISABLED_INPUT_METHOD_ID);
+    }
+
+    @Test
+    public void disableInputMethod_notEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_DISABLED_INPUT_METHOD_ID);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mPlaceholderEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHODS);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void disableInputMethod_notDefault_removesIMEWhileDefaultRemainsSame() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mPlaceholderEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
+                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
+                splitConcatenatedIdsIntoSet(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT));
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void disableInputMethod_twoDefaultableIMEsEnabled_removesIMEAndChangesDefault() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mPlaceholderEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID);
+    }
+
+    @Test
+    public void disableInputMethod_isDefaultWithNoOtherDefaultableEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, PLACEHOLDER_PACKAGE_NAME);
+        when(info.getId()).thenReturn(PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mPlaceholderEnabledInputMethodsListOneDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
+                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
+                splitConcatenatedIdsIntoSet(PLACEHOLDER_ENABLED_INPUT_METHODS));
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                PLACEHOLDER_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    private static InputMethodInfo createMockInputMethodInfoWithSubtypes(
+            PackageManager packageManager, InputMethodManager inputMethodManager,
+            String packageName) {
+        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        when(inputMethodManager.getEnabledInputMethodSubtypeList(
+                eq(mockInfo), anyBoolean())).thenReturn(subtypes);
+        return mockInfo;
+    }
+
+    private static InputMethodInfo createMockInputMethodInfo(
+            PackageManager packageManager, String packageName) {
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(PLACEHOLDER_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
+        when(mockInfo.getSettingsActivity()).thenReturn(PLACEHOLDER_SETTINGS_ACTIVITY);
+        return mockInfo;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtype.InputMethodSubtypeBuilder().setSubtypeId(id).setSubtypeLocale(
+                locale).setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private Set<String> splitConcatenatedIdsIntoSet(String ids) {
+        Set<String> result = new HashSet<>();
+
+        if (ids == null || ids.isEmpty()) {
+            return result;
+        }
+
+        InputMethodUtil.sInputMethodSplitter.setString(ids);
+        while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
+            result.add(InputMethodUtil.sInputMethodSplitter.next());
+        }
+
+        return result;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
new file mode 100644
index 0000000..44cb11d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
@@ -0,0 +1,1211 @@
+/*
+ * Copyright (C) 2021 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RunWith(AndroidJUnit4.class)
+public class KeyboardManagementPreferenceControllerTest {
+    private static final String PLACEHOLDER_LABEL = "placeholder label";
+    private static final String PLACEHOLDER_SETTINGS_ACTIVITY = "placeholder settings activity";
+    private static final String PLACEHOLDER_PACKAGE_NAME = "placeholder package name";
+    private static final String PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE =
+            "placeholder id defaultable direct boot aware";
+    private static final String PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
+            "placeholder id defaultable not direct boot aware";
+    private static final String PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE =
+            "placeholder id not defaultable direct boot aware";
+    private static final String PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
+            "placeholder id not defaultable not direct boot aware";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private KeyboardManagementPreferenceController mPreferenceController;
+    private LogicalPreferenceGroup mPreferenceGroup;
+    private CarUxRestrictions mCarUxRestrictions;
+    private List<String> mPermittedList;
+    private Map<String, InputMethodInfo> mInputMethodMap;
+    private String mInitialInputMethods;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private DevicePolicyManager mDevicePolicyManager;
+    @Mock
+    private InputMethodManager mInputMethodManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mInputMethodMap = new HashMap<>();
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(PLACEHOLDER_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+        mInitialInputMethods = Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS);
+
+        when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDevicePolicyManager);
+        when(mContext.getSystemService(InputMethodManager.class)).thenReturn(mInputMethodManager);
+        when(mInputMethodManager.getInputMethodList()).thenReturn(new ArrayList<>());
+
+        mPreferenceController = new KeyboardManagementPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, mInitialInputMethods);
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_preferenceCountIs4() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
+    }
+
+    @Test
+    public void refreshUi_multiplteAllowedImeByOrganization_allPreferencesVisible() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isVisible()).isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_multipleEnabledInputMethods_allPreferencesEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_multipleEnabledInputMethods_allPreferencesChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
+                    .isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization_noPreferencesShown() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_skipVoiceTyping() {
+        List<InputMethodInfo> infos =
+                createInputMethodInfoList(InputMethodUtil.GOOGLE_VOICE_TYPING);
+        setInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceIcon() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getIcon()).isEqualTo(
+                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceTitle() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceSummary() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getSummary()).isEqualTo(
+                InputMethodUtil.getSummaryString(mContext, mInputMethodManager, infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_oneInputMethodPreferenceInView() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_preferenceNotChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_defaultable_notChecked_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_securityDialogShown() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        verify(mMockFragmentController).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_noOtherPreferenceAdded() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_inputMethodEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(getEnabledInputMethodList().get(0).getId())
+                .isEqualTo(PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_noOtherPreferenceAdded() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_inputMethodDisabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleTrue_directBootWarningShown() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+
+        verify(mMockFragmentController).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_noOtherPreferenceAdded() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_inputMethodEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(getEnabledInputMethodList().get(0).getId())
+                .isEqualTo(PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_noOtherPreferenceAdded() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceNotChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_inputMethodDisabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(new ArrayList<>());
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void performClick_toggleFalse_noOtherPreferenceAdded() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleFalse_preferenceNotChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_preferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat((mPreferenceGroup.getPreference(0)).isEnabled())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_inputMethodDisabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_notClickDefaultablePreferenceDisabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup, PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)
+                .performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceNotChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)).isChecked()).isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_notClickedDefaultablePreferenceChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        setEnabledInputMethodList(infos);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_twoDefaultable_allPreferencesEnabled() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        List<InputMethodInfo> infos2 = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setEnabledInputMethodList(infos2);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
+        }
+    }
+
+    @Test
+    public void performClick_toggleTrue_twoDefaultable_allPreferencesChecked() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setInputMethodList(infos);
+        List<InputMethodInfo> infos2 = createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        setEnabledInputMethodList(infos2);
+
+        mPreferenceController.refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mMockFragmentController).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
+                    .isTrue();
+        }
+    }
+
+    private InputMethodInfo createMockInputMethodInfo(
+            Context context, PackageManager packageManager,
+            String packageName, String id, boolean isDefaultable, boolean directBootAware) {
+        ServiceInfo mockServiceInfo = mock(ServiceInfo.class);
+        mockServiceInfo.directBootAware = directBootAware;
+
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(PLACEHOLDER_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(mockServiceInfo);
+        when(mockInfo.getSettingsActivity()).thenReturn(PLACEHOLDER_SETTINGS_ACTIVITY);
+        when(mockInfo.getId()).thenReturn(id);
+        when(mockInfo.isDefault(context)).thenReturn(isDefaultable);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        when(mInputMethodManager.getEnabledInputMethodSubtypeList(any(), anyBoolean()))
+                .thenReturn(subtypes);
+        return mockInfo;
+    }
+
+    private static Preference getPreferenceFromGroupByKey(PreferenceGroup prefGroup, String key) {
+        for (int i = 0; i < prefGroup.getPreferenceCount(); i++) {
+            Preference pref = prefGroup.getPreference(i);
+            if (pref.getKey().equals(key)) {
+                return pref;
+            }
+        }
+        return null;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtype.InputMethodSubtypeBuilder().setSubtypeId(id)
+                .setSubtypeLocale(locale).setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private List<InputMethodInfo> createInputMethodInfoList(String packageName, String... ids) {
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        List<String> idsList = Arrays.asList(ids);
+        idsList.forEach(id -> {
+            boolean defaultable;
+            boolean directBootAware;
+            switch (id) {
+                case PLACEHOLDER_ID_DEFAULTABLE_DIRECT_BOOT_AWARE:
+                    defaultable = true;
+                    directBootAware = true;
+                    break;
+                case PLACEHOLDER_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
+                    defaultable = true;
+                    directBootAware = false;
+                    break;
+                case PLACEHOLDER_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE:
+                    defaultable = false;
+                    directBootAware = true;
+                    break;
+                default: //case PLACEHOLDER_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
+                    defaultable = false;
+                    directBootAware = false;
+                    break;
+            }
+            infos.add(createMockInputMethodInfo(mContext, packageManager, packageName, id,
+                    defaultable, directBootAware));
+        });
+        return infos;
+    }
+
+    private void setInputMethodList(List<InputMethodInfo> list) {
+        when(mInputMethodManager.getInputMethodList()).thenReturn(list);
+        if (list != null && list.size() > 0) {
+            addInputMethodInfosToMap(list);
+        }
+    }
+
+    private void setEnabledInputMethodList(List<InputMethodInfo> list) {
+        if (list == null || list.size() == 0) {
+            Settings.Secure.putString(mContext.getContentResolver(),
+                    Settings.Secure.ENABLED_INPUT_METHODS, "");
+            return;
+        }
+
+        String concatenatedInputMethodIds = createInputMethodIdString(list.stream().map(
+                imi -> imi.getId()).collect(Collectors.toList()).toArray(new String[list.size()]));
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, concatenatedInputMethodIds);
+        addInputMethodInfosToMap(list);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenAnswer(
+                (Answer<List<InputMethodInfo>>) invocation -> getEnabledInputMethodList());
+    }
+
+    private List<InputMethodInfo> getEnabledInputMethodList() {
+        List<InputMethodInfo> enabledInputMethodList = new ArrayList<>();
+
+        String inputMethodIdString = Settings.Secure.getString(
+                mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS);
+        if (inputMethodIdString == null || inputMethodIdString.isEmpty()) {
+            return enabledInputMethodList;
+        }
+
+        InputMethodUtil.sInputMethodSplitter.setString(inputMethodIdString);
+        while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
+            enabledInputMethodList.add(mInputMethodMap.get(InputMethodUtil.sInputMethodSplitter
+                    .next()));
+        }
+        return enabledInputMethodList;
+    }
+
+    private String createInputMethodIdString(String... ids) {
+        int size = ids == null ? 0 : ids.length;
+
+        if (size == 1) {
+            return ids[0];
+        }
+
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < size; i++) {
+            builder.append(ids[i]);
+            if (i != size - 1) {
+                builder.append(InputMethodUtil.INPUT_METHOD_DELIMITER);
+            }
+        }
+        return builder.toString();
+    }
+
+    private void addInputMethodInfosToMap(List<InputMethodInfo> inputMethodInfos) {
+        if (mInputMethodMap == null || mInputMethodMap.size() == 0) {
+            mInputMethodMap = inputMethodInfos.stream().collect(Collectors.toMap(
+                    InputMethodInfo::getId, imi -> imi));
+            return;
+        }
+
+        inputMethodInfos.forEach(imi -> {
+            mInputMethodMap.put(imi.getId(), imi);
+        });
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
new file mode 100644
index 0000000..6e190f8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2021 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class KeyboardPreferenceControllerTest {
+    private static final String EMPTY = "";
+    private static final String PLACEHOLDER_LABEL = "placeholder label";
+    private static final String PLACEHOLDER_LABEL_1 = "placeholder label 1";
+    private static final String PLACEHOLDER_LABEL_2 = "placeholder label 2";
+    private static final String PLACEHOLDER_SETTINGS_ACTIVITY = "placeholder settings activity";
+    private static final String PLACEHOLDER_PACKAGE_NAME = "placeholder package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private KeyboardPreferenceController mPreferenceController;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private List<String> mPermittedList;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private DevicePolicyManager mDevicePolicyManager;
+    @Mock
+    private InputMethodManager mInputMethodManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(PLACEHOLDER_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+
+        when(mContext.getSystemService(DevicePolicyManager.class)).thenReturn(mDevicePolicyManager);
+        when(mContext.getSystemService(InputMethodManager.class)).thenReturn(mInputMethodManager);
+
+        mPreferenceController = new KeyboardPreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController,
+                mCarUxRestrictions);
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void refreshUi_noInputMethodInfo() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(Collections.emptyList());
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasOneInputMethodInfo() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(
+                createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME, PLACEHOLDER_LABEL));
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasTwoInputMethodInfo() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME,
+                PLACEHOLDER_LABEL));
+        infos.add(createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME,
+                PLACEHOLDER_LABEL_1));
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL_1)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasThreeInputMethodInfo() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME,
+                PLACEHOLDER_LABEL));
+        infos.add(createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME,
+                PLACEHOLDER_LABEL_1));
+        infos.add(createInputMethodInfo(packageManager, PLACEHOLDER_PACKAGE_NAME,
+                PLACEHOLDER_LABEL_2));
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL_1)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(PLACEHOLDER_LABEL_2)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_hasAllowedImeByOrganization() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, ALLOWED_PACKAGE_NAME, PLACEHOLDER_LABEL));
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(PLACEHOLDER_LABEL);
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization() {
+        when(mDevicePolicyManager.getPermittedInputMethodsForCurrentUser()).thenReturn(
+                mPermittedList);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(
+                createInputMethodInfo(packageManager, DISALLOWED_PACKAGE_NAME, PLACEHOLDER_LABEL));
+        when(mInputMethodManager.getEnabledInputMethodList()).thenReturn(infos);
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
+    }
+
+    private static InputMethodInfo createInputMethodInfo(
+            PackageManager packageManager, String packageName, String label) {
+        ResolveInfo resolveInfo = mock(ResolveInfo.class);
+        ServiceInfo serviceInfo = new ServiceInfo();
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = packageName;
+        applicationInfo.enabled = true;
+        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        serviceInfo.applicationInfo = applicationInfo;
+        serviceInfo.enabled = true;
+        serviceInfo.packageName = packageName;
+        serviceInfo.name = label;
+        serviceInfo.exported = true;
+        serviceInfo.nonLocalizedLabel = label;
+        resolveInfo.serviceInfo = serviceInfo;
+        resolveInfo.nonLocalizedLabel = label;
+        when(resolveInfo.loadLabel(packageManager)).thenReturn(label);
+        return new InputMethodInfo(resolveInfo,
+                /* isAuxIme= */ false,
+                PLACEHOLDER_SETTINGS_ACTIVITY,
+                /* subtypes= */ null,
+                /* isDefaultResId= */ 1,
+                /* forceDefault= */ false);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
new file mode 100644
index 0000000..5f7586e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2021 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RunWith(AndroidJUnit4.class)
+public class LocationServicesPreferenceControllerTest {
+    private static final int PROFILE_ID = UserHandle.USER_CURRENT;
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceCategory mPreference;
+    private LocationServicesPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarLocationSettingsInjector mSettingsInjector;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new PreferenceCategory(mContext);
+        screen.addPreference(mPreference);
+        mPreferenceController = new LocationServicesPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setSettingsInjector(mSettingsInjector);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onStart_registersBroadcastReceiver() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        ArgumentCaptor<BroadcastReceiver> captor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(captor.capture(), any());
+
+        captor.getValue().onReceive(mContext, new Intent());
+        verify(mSettingsInjector).reloadStatusMessages();
+    }
+
+    @Test
+    public void onStop_unregistersBroadcastReceiver() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        ArgumentCaptor<BroadcastReceiver> captor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(captor.capture(), any());
+
+        mPreferenceController.onStop(mLifecycleOwner);
+        verify(mContext).unregisterReceiver(captor.getValue());
+    }
+
+    @Test
+    public void updateState_addsInjectedSettingsToPreferenceCategory() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
+        doReturn(samplePrefs).when(mSettingsInjector)
+                .getInjectedSettings(any(Context.class), anyInt());
+
+        mPreferenceController.updateState(mPreference);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
+    }
+
+    @Test
+    public void updateState_updatesPreferenceSummary() {
+        Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
+        doReturn(samplePrefs).when(mSettingsInjector)
+                .getInjectedSettings(any(Context.class), anyInt());
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        String summary = "Summary";
+        samplePrefs.get(PROFILE_ID).get(0).setSummary(summary);
+
+        mPreferenceController.updateState(mPreference);
+
+        assertThat(mPreference.getPreference(0).getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void preferenceCategory_isVisibleIfThereAreInjectedSettings() {
+        doReturn(getSamplePreferences()).when(mSettingsInjector)
+                .getInjectedSettings(any(Context.class), anyInt());
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void preferenceCategory_isHiddenIfThereAreNoInjectedSettings() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    private Map<Integer, List<Preference>> getSamplePreferences() {
+        Map<Integer, List<Preference>> preferences = new ArrayMap<>();
+        preferences.put(PROFILE_ID,
+                Arrays.asList(new Preference(mContext), new Preference(mContext),
+                        new Preference(mContext)));
+        return preferences;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/location/LocationStateSwitchPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/location/LocationStateSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..41cdfb1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/location/LocationStateSwitchPreferenceControllerTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2020 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class LocationStateSwitchPreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private SwitchPreference mSwitchPreference;
+    private LocationStateSwitchPreferenceController mPreferenceController;
+    private LocationManager mLocationManager;
+    private CarUxRestrictions mCarUxRestrictions;
+    private UserHandle mUserHandle;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mLocationManager = mContext.getSystemService(LocationManager.class);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mUserHandle = UserHandle.of(UserHandle.myUserId());
+
+        mSwitchPreference = new ClickableWhileDisabledSwitchPreference(mContext);
+        mPreferenceController = new LocationStateSwitchPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void onIntentReceived_updateUi() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverArgumentCaptor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(broadcastReceiverArgumentCaptor.capture(), any());
+
+        mLocationManager.setLocationEnabledForUser(/* enabled= */ true, mUserHandle);
+        broadcastReceiverArgumentCaptor.getValue().onReceive(mContext,
+                new Intent(LocationManager.MODE_CHANGED_ACTION));
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onPreferenceClicked_locationDisabled_shouldEnable() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+
+        mSwitchPreference.performClick();
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+        assertThat(mLocationManager.isLocationEnabledForUser(mUserHandle)).isTrue();
+    }
+
+    @Test
+    public void onPreferenceClicked_locationEnabled_shouldDisable() {
+        initializePreference(/* checked= */ true, /* enabled= */ true);
+
+        mSwitchPreference.performClick();
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+        assertThat(mLocationManager.isLocationEnabledForUser(mUserHandle)).isFalse();
+    }
+
+    @Test
+    public void onPolicyChanged_enabled_setsSwitchEnabled() {
+        initializePreference(/* checked= */ false, /* enabled= */ false);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ true);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onPolicyChanged_disabled_setsSwitchDisabled() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ false);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    private void initializePreference(boolean checked, boolean enabled) {
+        mLocationManager.setLocationEnabledForUser(checked, mUserHandle);
+        mSwitchPreference.setChecked(checked);
+        mSwitchPreference.setEnabled(enabled);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..b18c817
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2021 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.car.settings.location;
+
+import static com.android.car.settings.location.RecentLocationRequestsEntryPreferenceController.INTENT_FILTER_LOCATION_MODE_CHANGED;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentLocationRequestsEntryPreferenceControllerTest {
+    private static final long TIMEOUT_MS = 5000;
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private RecentLocationRequestsEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private LocationManager mLocationManager;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mLocationManager = mContext.getSystemService(LocationManager.class);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new RecentLocationRequestsEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onStart_registersBroadcastReceiver() {
+        mPreferenceController.onStart(mLifecycleOwner);
+        verify(mContext).registerReceiver(any(BroadcastReceiver.class),
+                eq(INTENT_FILTER_LOCATION_MODE_CHANGED));
+    }
+
+    @Test
+    public void onStop_unregistersBroadcastReceiver() {
+        mPreferenceController.onStart(mLifecycleOwner);
+        ArgumentCaptor<BroadcastReceiver> captor = ArgumentCaptor.forClass(
+                BroadcastReceiver.class);
+        verify(mContext).registerReceiver(captor.capture(),
+                eq(INTENT_FILTER_LOCATION_MODE_CHANGED));
+
+        mPreferenceController.onStop(mLifecycleOwner);
+        verify(mContext).unregisterReceiver(captor.getValue());
+    }
+
+    @Test
+    public void refreshUi_locationOn_preferenceIsEnabled() {
+        setLocationEnabled(true);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_locationOff_preferenceIsDisabled() {
+        setLocationEnabled(false);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void locationModeChangedBroadcastSent_locationOff_preferenceIsDisabled() {
+        mPreferenceController.onStart(mLifecycleOwner);
+        setLocationEnabled(true);
+        mPreferenceController.refreshUi();
+        setLocationEnabled(false);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void locationModeChangedBroadcastSent_locationOn_preferenceIsEnabled() {
+        mPreferenceController.onStart(mLifecycleOwner);
+        setLocationEnabled(false);
+        mPreferenceController.refreshUi();
+        setLocationEnabled(true);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    private void setLocationEnabled(boolean enabled) {
+        CountDownLatch latch = new CountDownLatch(1);
+        BroadcastReceiver receiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                latch.countDown();
+            }
+        };
+        mContext.registerReceiver(receiver, new IntentFilter(LocationManager.MODE_CHANGED_ACTION));
+        try {
+            mLocationManager.setLocationEnabledForUser(enabled,
+                    UserHandle.of(UserHandle.myUserId()));
+            assertWithMessage("%s intent reveiced in %sms", LocationManager.MODE_CHANGED_ACTION,
+                    TIMEOUT_MS).that(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue();
+        } catch (InterruptedException e) {
+            assertThat(mLocationManager.isLocationEnabled()).isEqualTo(enabled);
+        } finally {
+            mContext.unregisterReceiver(receiver);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
new file mode 100644
index 0000000..e3e6866
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2021 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.location.RecentLocationApps;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentLocationRequestsPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private RecentLocationRequestsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private RecentLocationApps mRecentLocationApps;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new RecentLocationRequestsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setRecentLocationApps(mRecentLocationApps);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void refreshUi_noRecentRequests_messageDisplayed() {
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(Collections.emptyList());
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.location_settings_recent_requests_empty_message));
+    }
+
+    @Test
+    public void refreshUi_someRecentRequests_preferencesAddedToScreen() {
+        List<RecentLocationApps.Request> list = Arrays.asList(
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class));
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(list.size());
+    }
+
+    @Test
+    public void refreshUi_newRecentRequests_listIsUpdated() {
+        List<RecentLocationApps.Request> list1 = Arrays.asList(
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class));
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list1);
+
+        List<RecentLocationApps.Request> list2 = new ArrayList<>(list1);
+        list2.add(mock(RecentLocationApps.Request.class));
+
+        mPreferenceController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(list1.size());
+
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list2);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(list2.size());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
new file mode 100644
index 0000000..447a2b6
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2021 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.car.settings.network;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.car.settings.network.AddMobileNetworkPreferenceController.ADD_NETWORK_INTENT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.ui.preference.CarUiPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Collections;
+
+@RunWith(AndroidJUnit4.class)
+public class AddMobileNetworkPreferenceControllerTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private Preference mPreference;
+    private AddMobileNetworkPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private EuiccManager mMockEuiccManager;
+    @Mock
+    private PackageManager mMockPackageManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(EuiccManager.class)).thenReturn(mMockEuiccManager);
+        when(mContext.getPackageManager()).thenReturn(mMockPackageManager);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiPreference(mContext);
+        mPreferenceController = new AddMobileNetworkPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccDisabled_isUnsupported() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccEnabled_intentResolves_isAvailable() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+        when(mMockPackageManager.queryIntentActivities(ADD_NETWORK_INTENT, /* flags= */ 0))
+                .thenReturn(Collections.singletonList(new ResolveInfo()));
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccEnabled_intentFailsToResolve_isUnsupported() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..fecc6fa
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2021 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.car.settings.network;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.os.UserManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiPreference;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class MobileNetworkEntryPreferenceControllerTest {
+
+    private static final String TEST_NETWORK_NAME = "test network name";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private MobileNetworkEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private Network mNetwork;
+    @Mock
+    private NetworkCapabilities mNetworkCapabilities;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        // Setup to always make preference available.
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+        when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
+        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS))
+                .thenReturn(false);
+
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+        when(mConnectivityManager.getNetworkCapabilities(mNetwork))
+                .thenReturn(mNetworkCapabilities);
+        when(mConnectivityManager.getAllNetworks()).thenReturn(new Network[]{mNetwork});
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiPreference(mContext);
+        mPreferenceController = new MobileNetworkEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noMobileNetwork_unsupported() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notAdmin_disabledForUser() {
+        when(mUserManager.isAdminUser()).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasRestriction_disabledForUser() {
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS))
+                .thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasMobileNetwork_isAdmin_noRestriction_available() {
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onCreate_noSims_disabled() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onCreate_oneSim_enabled() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_oneSim_summaryIsDisplayName() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_NETWORK_NAME);
+    }
+
+    @Test
+    public void onCreate_multiSim_enabled() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_multiSim_summaryShowsCount() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
+                R.plurals.mobile_network_summary_count, 2, 2));
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_noSim_noFragmentStarted() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        verify(mFragmentController, never()).launchFragment(
+                any(Fragment.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_oneSim_startsMobileNetworkFragment() {
+        int subId = 1;
+        SubscriptionInfo info = createSubscriptionInfo(subId, /* simSlotIndex= */ 1,
+                TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+                MobileNetworkFragment.class);
+        verify(mFragmentController).launchFragment(captor.capture());
+
+        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+                -1)).isEqualTo(subId);
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_multiSim_startsMobileNetworkListFragment() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        verify(mFragmentController).launchFragment(
+                any(MobileNetworkListFragment.class));
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+            String displayName) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                simSlotIndex, displayName, /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", "mncString",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        return subInfo;
+    }
+
+}
diff --git a/tests/unit/src/com/android/car/settings/network/MobileNetworkFragmentTest.java b/tests/unit/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
new file mode 100644
index 0000000..219d751
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2021 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.ToolbarController;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+@RunWith(AndroidJUnit4.class)
+public class MobileNetworkFragmentTest {
+    private static final int SUB_ID = 1;
+    private static final String TEST_NAME = "Test Name";
+    private static SubscriptionManager sMockSubscriptionManager = mock(SubscriptionManager.class);
+
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        when(sMockSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
+                Arrays.asList(
+                        createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
+                        createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2")));
+    }
+
+    @After
+    public void tearDown() {
+        Mockito.reset(sMockSubscriptionManager);
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_startWithArgument_updateTitle() throws Throwable {
+        setUpFragmentWithSubId(SUB_ID, TEST_NAME);
+
+        ToolbarController toolbar = mActivity.getToolbar();
+        assertThat(toolbar.getTitle()).isEqualTo(TEST_NAME);
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_noArgumentProvided_updateTitle() throws Throwable {
+        setUpFragment();
+        when(sMockSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(
+                Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
+
+        ToolbarController toolbar = mActivity.getToolbar();
+        assertThat(toolbar.getTitle()).isEqualTo(TEST_NAME + "_1");
+    }
+
+    private void setUpFragment() throws Throwable {
+        String mobileNetworkFragmentTag = "mobile_network_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new TestMobileNetworkFragment(),
+                            mobileNetworkFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    private void setUpFragmentWithSubId(int subId, String name) throws Throwable {
+        SubscriptionInfo info = createSubscriptionInfo(subId, name);
+        when(sMockSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(
+                Collections.singletonList(info));
+
+        String mobileNetworkFragmentTag = "mobile_network_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, TestMobileNetworkFragment.newInstance(subId),
+                            mobileNetworkFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, String name) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                /* simSlotIndex= */ 0, /* displayName= */ name, /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        return subInfo;
+    }
+
+    public static class TestMobileNetworkFragment extends MobileNetworkFragment {
+        public static MobileNetworkFragment newInstance(int subId) {
+            MobileNetworkFragment fragment = new TestMobileNetworkFragment();
+            Bundle args = new Bundle();
+            args.putInt(ARG_NETWORK_SUB_ID, subId);
+            fragment.setArguments(args);
+            return fragment;
+        }
+
+        @Override
+        SubscriptionManager getSubscriptionManager(Context context) {
+            return sMockSubscriptionManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
new file mode 100644
index 0000000..921bea2
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2021 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class MobileNetworkListPreferenceControllerTest {
+
+    private static final int SUB_ID = 1;
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private MobileNetworkListPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private SubscriptionManager mSubscriptionManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new MobileNetworkListPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+    }
+
+    @Test
+    public void onCreate_containsElements() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onPreferenceClicked_launchesFragment() {
+        SubscriptionInfo info = createSubscriptionInfo(SUB_ID, /* simSlotIndex= */ 1,
+                /* cardString= */"", "mncString");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(mSubscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+                MobileNetworkFragment.class);
+        verify(mFragmentController).launchFragment(captor.capture());
+
+        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+                -1)).isEqualTo(SUB_ID);
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+            String cardString, String mncString) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, cardString);
+        return subInfo;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/notifications/NotificationsAppListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/notifications/NotificationsAppListPreferenceControllerTest.java
new file mode 100644
index 0000000..bd9e6e2
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/notifications/NotificationsAppListPreferenceControllerTest.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+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.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.ApplicationDetailsFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+
+@RunWith(AndroidJUnit4.class)
+public class NotificationsAppListPreferenceControllerTest {
+    private static final String PKG_NAME = "package.name";
+    private static final int UID = 1001010;
+    private static final int ID = 1;
+    private static final String LABEL = "label";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceCategory;
+    private NotificationsAppListPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArrayList<ApplicationsState.AppEntry> mAppEntryList;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private INotificationManager mMockManager;
+    @Mock
+    private NotificationChannel mMockChannel;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceCategory = new PreferenceCategory(mContext);
+        screen.addPreference(mPreferenceCategory);
+
+        mPreferenceController = new NotificationsAppListPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceCategory);
+
+        mPreferenceController.mNotificationManager = mMockManager;
+
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = PKG_NAME;
+        applicationInfo.uid = UID;
+        applicationInfo.sourceDir = "";
+        ApplicationsState.AppEntry appEntry =
+                new ApplicationsState.AppEntry(mContext, applicationInfo, ID);
+        appEntry.label = LABEL;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+
+        mAppEntryList = new ArrayList<>();
+        mAppEntryList.add(appEntry);
+    }
+
+    @Test
+    public void onCreate_createsPreference() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        assertThat(preference.getTitle()).isEqualTo(LABEL);
+        assertThat(preference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void onCreate_notificationEnabled_isChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        assertThat(preference.isSecondaryActionChecked()).isTrue();
+    }
+
+    @Test
+    public void onCreate_notificationDisabled_isNotChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        assertThat(preference.isSecondaryActionChecked()).isFalse();
+    }
+
+    @Test
+    public void toggle_setEnable_enablingNotification() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        preference.performSecondaryActionClick();
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, true);
+    }
+
+    @Test
+    public void toggle_setDisable_disablingNotification() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        preference.performSecondaryActionClick();
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, false);
+    }
+
+    @Test
+    public void toggle_onlyHasDefaultChannel_updateChannel() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(true);
+        when(mMockManager
+                .getNotificationChannelForPackage(
+                        PKG_NAME, UID, NotificationChannel.DEFAULT_CHANNEL_ID, null, true))
+                .thenReturn(mMockChannel);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+
+        preference.performSecondaryActionClick();
+
+        verify(mMockManager).updateNotificationChannelForPackage(PKG_NAME, UID, mMockChannel);
+    }
+
+    @Test
+    @UiThreadTest
+    public void clickPreference_shouldOpenApplicationDetailsFragment() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onDataLoaded(mAppEntryList);
+
+        CarUiTwoActionSwitchPreference preference = (CarUiTwoActionSwitchPreference)
+                mPreferenceCategory.getPreference(0);
+        preference.performClick();
+
+        verify(mFragmentController).launchFragment(any(ApplicationDetailsFragment.class));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceControllerTest.java
new file mode 100644
index 0000000..56bcfd8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/notifications/RecentNotificationsAppsPreferenceControllerTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2021 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.car.settings.notifications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.after;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.INotificationManager;
+import android.app.usage.IUsageStatsManager;
+import android.app.usage.UsageEvents;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Parcel;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RecentNotificationsAppsPreferenceControllerTest {
+    private static final int TIMEOUT = 5000;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceCategory;
+    private RecentNotificationsAppsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private int mMaxEntryCount;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private INotificationManager mMockManager;
+    @Mock
+    private ApplicationsState mMockApplicationsState;
+    @Mock
+    private IUsageStatsManager mMockUsageStatsManager;
+    @Mock
+    private ApplicationInfo mApplicationInfo;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceCategory = new PreferenceCategory(mContext);
+        screen.addPreference(mPreferenceCategory);
+
+        mPreferenceController = new RecentNotificationsAppsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceCategory);
+
+        mPreferenceController.mNotificationManager = mMockManager;
+        mPreferenceController.mUsageStatsManager = mMockUsageStatsManager;
+        mPreferenceController.setApplicationsState(mMockApplicationsState);
+
+        mMaxEntryCount = mContext.getResources().getInteger(
+                R.integer.recent_notifications_apps_list_count);
+    }
+
+    @Test
+    public void noEvents_noPreferences() throws Exception {
+        when(mMockUsageStatsManager.queryEventsForUser(anyLong(),
+                anyLong(), anyInt(), anyString())).thenReturn(null);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void areEvents_showValidRecents() throws Exception {
+        List<UsageEvents.Event> events = new ArrayList<>();
+        UsageEvents.Event app1 = createUsageEvent("a", System.currentTimeMillis());
+        UsageEvents.Event app2 = createUsageEvent("com.android.settings",
+                System.currentTimeMillis());
+        UsageEvents.Event app3 = createUsageEvent("pkg.class2",
+                System.currentTimeMillis() - 1000);
+
+        events.add(app1);
+        events.add(app2);
+        events.add(app3);
+
+        ApplicationsState.AppEntry app1Entry = createAppEntry("app 1");
+        ApplicationsState.AppEntry app2Entry = createAppEntry("app 2");
+
+        // app1, app2 are valid apps. app3 is invalid.
+        when(mMockApplicationsState.getEntry(app1.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app1Entry);
+        when(mMockApplicationsState.getEntry(app2.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app2Entry);
+        when(mMockApplicationsState.getEntry(app3.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(null);
+
+        UsageEvents usageEvents = getUsageEvents(
+                new String[] {app1.getPackageName(), app2.getPackageName(), app3.getPackageName()},
+                events);
+        when(mMockUsageStatsManager.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString()))
+                .thenReturn(usageEvents);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        // Only add app1 & app2. app3 skipped because it's invalid app.
+        verify(mMockApplicationsState, after(TIMEOUT).times(2))
+                .getEntry(eq(app1.getPackageName()), anyInt());
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo(app1Entry.label);
+        assertThat(mPreferenceCategory.getPreference(1).getTitle()).isEqualTo(app2Entry.label);
+    }
+
+    @Test
+    public void areEvents_showMaximumRecents() throws Exception {
+        List<UsageEvents.Event> events = new ArrayList<>();
+        UsageEvents.Event app1 = createUsageEvent("a", System.currentTimeMillis());
+        UsageEvents.Event app2 = createUsageEvent("com.android.settings",
+                System.currentTimeMillis());
+        UsageEvents.Event app3 = createUsageEvent("pkg.class2",
+                System.currentTimeMillis() - 1000);
+        UsageEvents.Event app4 = createUsageEvent("pkg.class3",
+                System.currentTimeMillis() - 1000);
+
+        events.add(app1);
+        events.add(app2);
+        events.add(app3);
+        events.add(app4);
+
+        ApplicationsState.AppEntry app1Entry = createAppEntry("app 1");
+        ApplicationsState.AppEntry app2Entry = createAppEntry("app 2");
+        ApplicationsState.AppEntry app3Entry = createAppEntry("app 3");
+        ApplicationsState.AppEntry app4Entry = createAppEntry("app 4");
+
+        // Four valid apps found
+        when(mMockApplicationsState.getEntry(app1.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app1Entry);
+        when(mMockApplicationsState.getEntry(app2.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app2Entry);
+        when(mMockApplicationsState.getEntry(app3.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app3Entry);
+        when(mMockApplicationsState.getEntry(app4.getPackageName(), UserHandle.myUserId()))
+                .thenReturn(app4Entry);
+
+        UsageEvents usageEvents = getUsageEvents(
+                new String[] {app1.getPackageName(), app2.getPackageName(), app3.getPackageName(),
+                app4.getPackageName()}, events);
+        when(mMockUsageStatsManager.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString()))
+                .thenReturn(usageEvents);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        // Only max allowed apps displayed
+        verify(mMockApplicationsState, after(TIMEOUT).times(2))
+                .getEntry(eq(app1.getPackageName()), anyInt());
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(mMaxEntryCount);
+        assertThat(mPreferenceCategory.getPreference(0).getTitle()).isEqualTo(app1Entry.label);
+        assertThat(mPreferenceCategory.getPreference(1).getTitle()).isEqualTo(app2Entry.label);
+        assertThat(mPreferenceCategory.getPreference(2).getTitle()).isEqualTo(app3Entry.label);
+    }
+
+    private UsageEvents getUsageEvents(String[] pkgs, List<UsageEvents.Event> events) {
+        UsageEvents usageEvents = new UsageEvents(events, pkgs);
+        Parcel parcel = Parcel.obtain();
+        parcel.setDataPosition(0);
+        usageEvents.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        return UsageEvents.CREATOR.createFromParcel(parcel);
+    }
+
+    private UsageEvents.Event createUsageEvent(String packageName, long timestamp) {
+        UsageEvents.Event app = new UsageEvents.Event();
+        app.mEventType = UsageEvents.Event.NOTIFICATION_INTERRUPTION;
+        app.mPackage = packageName;
+        app.mTimeStamp = timestamp;
+        return app;
+    }
+
+    private ApplicationsState.AppEntry createAppEntry(String label) {
+        ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
+        appEntry.info = mApplicationInfo;
+        appEntry.label = label;
+        return appEntry;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/privacy/LocationTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/privacy/LocationTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..419f5d8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/privacy/LocationTogglePreferenceControllerTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.os.UserHandle;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class LocationTogglePreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private CarUiTwoActionSwitchPreference mSwitchPreference;
+    private LocationTogglePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private UserHandle mUserHandle;
+    private LocationManager mLocationManager;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Captor
+    private ArgumentCaptor<BroadcastReceiver> mListener;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mLocationManager = mContext.getSystemService(LocationManager.class);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mUserHandle = UserHandle.of(UserHandle.myUserId());
+
+        mSwitchPreference = new CarUiTwoActionSwitchPreference(mContext);
+        mPreferenceController = new LocationTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void onPreferenceClicked_clickLocationEnabled_shouldDisableLocation() {
+        initializePreference(/* isLocationEnabled= */ true);
+
+        mSwitchPreference.performSecondaryActionClick();
+
+        assertThat(mLocationManager.isLocationEnabledForUser(mUserHandle)).isFalse();
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceClicked_clickMicDisabled_shouldEnableLocation() {
+        initializePreference(/* isLocationEnabled= */ false);
+
+        mSwitchPreference.performSecondaryActionClick();
+
+        assertThat(mLocationManager.isLocationEnabledForUser(mUserHandle)).isTrue();
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isTrue();
+    }
+
+    @Test
+    public void onListenerUpdate_locationDisabled_shouldUpdateChecked() {
+        initializePreference(/* isLocationEnabled= */ false);
+
+        mLocationManager.setLocationEnabledForUser(true, mUserHandle);
+        mListener.getValue().onReceive(mContext, new Intent(LocationManager.MODE_CHANGED_ACTION));
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isTrue();
+    }
+
+    @Test
+    public void onListenerUpdate_locationEnabled_shouldUpdateChecked() {
+        initializePreference(/* isLocationEnabled= */ true);
+
+        mLocationManager.setLocationEnabledForUser(false, mUserHandle);
+        mListener.getValue().onReceive(mContext, new Intent(LocationManager.MODE_CHANGED_ACTION));
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isFalse();
+    }
+
+    private void initializePreference(boolean isLocationEnabled) {
+        mLocationManager.setLocationEnabledForUser(isLocationEnabled, mUserHandle);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        verify(mContext).registerReceiver(mListener.capture(),
+                eq(LocationTogglePreferenceController.INTENT_FILTER_LOCATION_MODE_CHANGED));
+    }}
diff --git a/tests/unit/src/com/android/car/settings/privacy/MuteMicTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/privacy/MuteMicTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..a735f83
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/privacy/MuteMicTogglePreferenceControllerTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2021 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.car.settings.privacy;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.hardware.SensorPrivacyManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class MuteMicTogglePreferenceControllerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private CarUiTwoActionSwitchPreference mSwitchPreference;
+    private MuteMicTogglePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private SensorPrivacyManager mMockSensorPrivacyManager;
+    @Captor
+    private ArgumentCaptor<SensorPrivacyManager.OnSensorPrivacyChangedListener> mListener;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+        setMicMuteFeatureAvailable(true);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSwitchPreference = new CarUiTwoActionSwitchPreference(mContext);
+        mPreferenceController = new MuteMicTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions,
+                mMockSensorPrivacyManager);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void micMuteUnavailable_preferenceIsHidden() {
+        setMicMuteFeatureAvailable(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void micMuteAvailable_preferenceIsShown() {
+        setMicMuteFeatureAvailable(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onPreferenceClicked_clickMicEnabled_shouldSetPrivacySensor() {
+        initializePreference(/* isMicEnabled= */ true);
+
+        mSwitchPreference.performSecondaryActionClick();
+
+        verify(mMockSensorPrivacyManager).setSensorPrivacyForProfileGroup(
+                eq(SensorPrivacyManager.Sources.SETTINGS),
+                eq(SensorPrivacyManager.Sensors.MICROPHONE),
+                eq(true));
+        setIsSensorPrivacyEnabled(true);
+
+        mListener.getValue().onSensorPrivacyChanged(SensorPrivacyManager.Sensors.MICROPHONE, true);
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceClicked_clickMicDisabled_shouldClearPrivacySensor() {
+        initializePreference(/* isMicEnabled= */ false);
+
+        mSwitchPreference.performSecondaryActionClick();
+
+        verify(mMockSensorPrivacyManager).setSensorPrivacyForProfileGroup(
+                eq(SensorPrivacyManager.Sources.SETTINGS),
+                eq(SensorPrivacyManager.Sensors.MICROPHONE),
+                eq(false));
+        setIsSensorPrivacyEnabled(false);
+        mListener.getValue().onSensorPrivacyChanged(SensorPrivacyManager.Sensors.MICROPHONE, false);
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isTrue();
+    }
+
+    @Test
+    public void onListenerUpdate_micDisabled_shouldUpdateChecked() {
+        initializePreference(/* isMicEnabled= */ false);
+
+        setIsSensorPrivacyEnabled(false);
+        mListener.getValue().onSensorPrivacyChanged(SensorPrivacyManager.Sensors.MICROPHONE, false);
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isTrue();
+    }
+
+    @Test
+    public void onListenerUpdate_micEnabled_shouldUpdateChecked() {
+        initializePreference(/* isMicEnabled= */ true);
+
+        setIsSensorPrivacyEnabled(true);
+        mListener.getValue().onSensorPrivacyChanged(SensorPrivacyManager.Sensors.MICROPHONE, true);
+
+        assertThat(mSwitchPreference.isSecondaryActionChecked()).isFalse();
+    }
+
+    private void initializePreference(boolean isMicEnabled) {
+        setIsSensorPrivacyEnabled(!isMicEnabled);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        verify(mMockSensorPrivacyManager).addSensorPrivacyListener(
+                eq(SensorPrivacyManager.Sensors.MICROPHONE), mListener.capture());
+    }
+
+    private void setIsSensorPrivacyEnabled(boolean isMuted) {
+        when(mMockSensorPrivacyManager.isSensorPrivacyEnabled(
+                eq(SensorPrivacyManager.Sensors.MICROPHONE))).thenReturn(isMuted);
+    }
+
+    private void setMicMuteFeatureAvailable(boolean isAvailable) {
+        when(mMockSensorPrivacyManager
+                .supportsSensorToggle(eq(SensorPrivacyManager.Sensors.MICROPHONE)))
+                .thenReturn(isAvailable);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/AddProfileHandlerTest.java b/tests/unit/src/com/android/car/settings/profiles/AddProfileHandlerTest.java
new file mode 100644
index 0000000..8cef5df
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/AddProfileHandlerTest.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.android.car.settings.profiles.AddProfileHandler.CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.user.CarUserManager;
+import android.car.user.UserCreationResult;
+import android.car.util.concurrent.AndroidAsyncFuture;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.internal.infra.AndroidFuture;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+@RunWith(AndroidJUnit4.class)
+public class AddProfileHandlerTest {
+    private static final int ADD_PROFILE_TASK_TIMEOUT = 10; // in seconds
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private AddProfileHandler mAddProfileHandler;
+    private LifecycleOwner mLifecycleOwner;
+    private TestAddProfilePreferenceController mPreferenceController;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private CarUserManager mCarUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreferenceController = new TestAddProfilePreferenceController(mContext,
+                "key", mMockFragmentController, mCarUxRestrictions);
+        mPreference = new Preference(mContext);
+        mAddProfileHandler = new AddProfileHandler(mContext,
+                mMockFragmentController, mPreferenceController);
+        mAddProfileHandler.setCarUserManager(mCarUserManager);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void userRestricted_canNotAddProfile() {
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)).thenReturn(true);
+
+        assertThat(mAddProfileHandler.canAddProfiles(mUserManager)).isFalse();
+    }
+
+    @Test
+    public void userNotRestricted_canAddProfile() {
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)).thenReturn(false);
+
+        assertThat(mAddProfileHandler.canAddProfiles(mUserManager)).isTrue();
+    }
+
+    /* Test that onCreateNewProfileConfirmed invokes a creation of a new non-admin. */
+    @Test
+    public void newProfileConfirmed_invokesCreateNewUser()
+            throws ExecutionException, InterruptedException, TimeoutException {
+        AndroidFuture<UserCreationResult> future = new AndroidFuture<>();
+        future.complete(new UserCreationResult(UserCreationResult.STATUS_SUCCESSFUL,
+                /* user= */ null, /* errorMessage= */ null));
+        when(mCarUserManager.createUser(anyString(), anyInt()))
+                .thenReturn(new AndroidAsyncFuture<>(future));
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mAddProfileHandler.mConfirmCreateNewProfileListener.onConfirm(/* arguments= */ null);
+        // wait for async task
+        mAddProfileHandler.mAddNewProfileTask.get(ADD_PROFILE_TASK_TIMEOUT, TimeUnit.SECONDS);
+        verify(mCarUserManager).createUser(
+                ResourceTestUtils.getString(mContext, "user_new_user_name"), /* flags= */ 0);
+    }
+
+    /* Test that if profile can add other profiles, clicking on the button creates a dialog to
+    confirm. */
+    @Test
+    public void testCallOnClick_showAddProfileDialog() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mAddProfileHandler.showAddProfileDialog();
+
+        verify(mMockFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(CONFIRM_CREATE_NEW_PROFILE_DIALOG_TAG));
+    }
+
+    private class TestAddProfilePreferenceController
+            extends PreferenceController<Preference> {
+
+        TestAddProfilePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/AddProfilePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/AddProfilePreferenceControllerTest.java
new file mode 100644
index 0000000..bb09c45
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/AddProfilePreferenceControllerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2020 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.car.settings.profiles;
+
+import static com.android.car.settings.profiles.AddProfilePreferenceController.MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AddProfilePreferenceControllerTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private AddProfilePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new AddProfilePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setUserManager(mUserManager);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_userInDemoMode_showsExitRetailModeButton() {
+        when(mUserManager.isDemoUser()).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getTitle()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "exit_retail_button_text"));
+    }
+
+    @Test
+    public void onCreate_userCanAddNewProfile_showsAddProfileButton() {
+        when(mUserManager.isDemoUser()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getTitle()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "add_profile_text"));
+    }
+
+    @Test
+    public void onCreate_userRestrictedFromAddingNewProfileAndNotInDemo_doesNotShowActionButton() {
+        when(mUserManager.isDemoUser()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    /* Test that if the max num of profiles is reached, clicking on the button informs user of
+    that. */
+    @Test
+    public void testCallOnClick_profileLimitReached_showErrorDialog() {
+        when(mUserManager.isDemoUser()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)).thenReturn(false);
+        when(mUserManager.canAddMoreUsers()).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(MAX_PROFILES_LIMIT_REACHED_DIALOG_TAG));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceControllerTest.java
new file mode 100644
index 0000000..a65dfee
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/ChooseNewAdminPreferenceControllerTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class ChooseNewAdminPreferenceControllerTest {
+    private static final UserInfo TEST_ADMIN_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ChooseNewAdminPreferenceController mController;
+    private ConfirmationDialogFragment mDialog;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mProfileHelper;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mDialog = new ConfirmationDialogFragment.Builder(mContext).build();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(ProfileHelper.class, withSettings().lenient())
+                .mockStatic(android.car.userlib.UserHelper.class)
+                .startMocking();
+        when(ProfileHelper.getInstance(any(Context.class))).thenReturn(mProfileHelper);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreference);
+        mController = new ChooseNewAdminPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mController.setAdminInfo(TEST_ADMIN_USER);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+    }
+
+    @After
+    @UiThreadTest
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
+        when(mFragmentController.findDialogByTag(
+                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mDialog.getConfirmListener()).isNotNull();
+    }
+
+    @Test
+    public void testCheckInitialized_noAdminInfoSet_throwsError() {
+        ChooseNewAdminPreferenceController controller = new ChooseNewAdminPreferenceController(
+                mContext, /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        assertThrows(IllegalStateException.class,
+                () -> PreferenceControllerTestUtil.assignPreference(controller, mPreference));
+    }
+
+    @Test
+    public void testUserClicked_opensDialog() {
+        mController.profileClicked(/* userToMakeAdmin= */ TEST_OTHER_USER);
+
+        verify(mFragmentController).showDialog(any(), eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_grantAdminCalled() {
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        ExtendedMockito.verify(() -> android.car.userlib.UserHelper.grantAdminPermissions(mContext,
+                TEST_OTHER_USER));
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_removeUserCalled() {
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mProfileHelper).removeProfile(any(), eq(TEST_ADMIN_USER));
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_success_noErrorDialog() {
+        when(mProfileHelper.removeProfile(any(), eq(TEST_ADMIN_USER)))
+                .thenReturn(ProfileHelper.REMOVE_PROFILE_RESULT_SUCCESS);
+
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mFragmentController, never()).showDialog(any(), any());
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_failure_errorDialog() {
+        when(mProfileHelper.removeProfile(any(), eq(TEST_ADMIN_USER)))
+                .thenReturn(ProfileHelper.REMOVE_PROFILE_RESULT_FAILED);
+
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mFragmentController).showDialog(any(), any());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/DemoProfileDialogHandlerTest.java b/tests/unit/src/com/android/car/settings/profiles/DemoProfileDialogHandlerTest.java
new file mode 100644
index 0000000..831eb9e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/DemoProfileDialogHandlerTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.android.car.settings.profiles.DemoProfileDialogHandler.CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class DemoProfileDialogHandlerTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private DemoProfileDialogHandler mDemoProfileDialogHandler;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mDemoProfileDialogHandler = new DemoProfileDialogHandler(mContext,
+                mMockFragmentController);
+    }
+
+    @Test
+    public void testCallOnClick_demoUser_exitRetailMode() {
+        mDemoProfileDialogHandler.showExitRetailDialog();
+
+        verify(mMockFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(CONFIRM_EXIT_RETAIL_MODE_DIALOG_TAG));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/EditProfileNameFragmentTest.java b/tests/unit/src/com/android/car/settings/profiles/EditProfileNameFragmentTest.java
new file mode 100644
index 0000000..fe0afb9
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/EditProfileNameFragmentTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.widget.EditText;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.MenuItem;
+
+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;
+
+@RunWith(AndroidJUnit4.class)
+public class EditProfileNameFragmentTest {
+
+    private EditProfileNameFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+
+    @Mock
+    private UserManager mUserManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+    }
+
+    /**
+     * Tests that user name of the profile in question is displayed in the TextInputEditTest field.
+     */
+    @Test
+    public void testUserNameDisplayedInDetails() throws Throwable {
+        String testUserName = "test_user";
+        UserInfo testUser = new UserInfo(/* id= */ 10, testUserName, /* flags= */ 0);
+        setUpFragment(testUser);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        EditText userNameEditText = mActivity.findViewById(R.id.profile_name_text_edit);
+        assertThat(userNameEditText.getText().toString()).isEqualTo(testUserName);
+    }
+
+    /**
+     * Tests that clicking OK saves the new name for the user.
+     */
+    @Test
+    @UiThreadTest
+    public void testClickingOkSavesNewUserName() throws Throwable {
+        int userId = 10;
+        UserInfo testUser = new UserInfo(userId, "user_name", /* flags= */ 0);
+        setUpFragment(testUser);
+        EditText userNameEditText = mActivity.findViewById(R.id.profile_name_text_edit);
+        MenuItem okButton = mFragment.getToolbarMenuItems().get(0);
+
+        String newUserName = "new_user_name";
+        userNameEditText.requestFocus();
+        userNameEditText.setText(newUserName);
+        assertThat(okButton.isEnabled()).isTrue();
+        okButton.performClick();
+
+        verify(mUserManager).setUserName(userId, newUserName);
+    }
+
+    @Test
+    @UiThreadTest
+    public void testEmptyUsernameCannotBeSaved() throws Throwable {
+        UserInfo testUser = new UserInfo(/* id= */ 10, "user_name", /* flags= */ 0);
+        setUpFragment(testUser);
+        EditText userNameEditText = mActivity.findViewById(R.id.profile_name_text_edit);
+        MenuItem okButton = mFragment.getToolbarMenuItems().get(0);
+
+        userNameEditText.requestFocus();
+        userNameEditText.setText("");
+
+        assertThat(okButton.isEnabled()).isFalse();
+    }
+
+    private void setUpFragment(UserInfo userInfo) throws Throwable {
+        String editProfileFragment = "edit_profile_fragment";
+        mFragment = EditProfileNameFragment.newInstance(userInfo);
+        mFragment.mUserManager = mUserManager;
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, mFragment, editProfileFragment)
+                    .commitNow();
+        });
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceControllerTest.java
new file mode 100644
index 0000000..997c568
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsActionButtonsPreferenceControllerTest.java
@@ -0,0 +1,405 @@
+/*
+ * Copyright (C) 2020 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.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+import static com.android.car.settings.profiles.ProfileDetailsActionButtonsPreferenceController.MAKE_ADMIN_DIALOG_TAG;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ActionButtonInfo;
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class ProfileDetailsActionButtonsPreferenceControllerTest {
+    private static final String TEST_PROFILE_NAME = "Test Profile Name";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ActionButtonsPreference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ProfileDetailsActionButtonsPreferenceController mPreferenceController;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private RemoveProfileHandler mRemoveProfileHandler;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new ActionButtonsPreference(mContext);
+        mPreferenceController = new ProfileDetailsActionButtonsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions,
+                mMockProfileHelper, mMockUserManager, mRemoveProfileHandler);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onStart_userIsViewingSelf_renameButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getRenameButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_userIsNotViewingSelf_renameButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getRenameButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_isAdminViewingNonAdmin_makeAdminButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getMakeAdminButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_isAdminViewingAdmin_makeAdminButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getMakeAdminButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_isAdminViewingSelf_makeManageOtherProfilesButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        List<UserInfo> otherUsers = new ArrayList<>();
+        otherUsers.add(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockProfileHelper.getAllLivingProfiles(any())).thenReturn(otherUsers);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getProfilesButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_isAdminViewingOther_makeManageOtherProfilesButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        List<UserInfo> otherUsers = new ArrayList<>();
+        otherUsers.add(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockProfileHelper.getAllLivingProfiles(any())).thenReturn(otherUsers);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getProfilesButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_isNonAdmin_makeManageOtherProfilesButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        List<UserInfo> otherUsers = new ArrayList<>();
+        otherUsers.add(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+        when(mMockProfileHelper.getAllLivingProfiles(any())).thenReturn(otherUsers);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getProfilesButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_isOnlyProfile_makeAddAProfileButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        List<UserInfo> otherUsers = new ArrayList<>();
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockProfileHelper.getAllLivingProfiles(any())).thenReturn(otherUsers);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getProfilesButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_profileIsRemovable_deleteButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getDeleteButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_profileIsNotRemovable_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER))
+                .thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getDeleteButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_userIsViewingSelf_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getDeleteButton().isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_userIsNotViewingSelf_deleteButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        assertThat(getDeleteButton().isVisible()).isTrue();
+    }
+
+    @Test
+    public void onCreate_hasPreviousDeleteDialog_dialogListenerSet() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        verify(mRemoveProfileHandler).resetListeners();
+    }
+
+    @Test
+    public void onRenameButtonClicked_launchEditProfileNameFragment() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        getRenameButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).launchFragment(any(EditProfileNameFragment.class));
+    }
+
+    @Test
+    public void onMakeAdminButtonClicked_showsConfirmationDialog() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        getMakeAdminButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(MAKE_ADMIN_DIALOG_TAG));
+    }
+
+    @Test
+    public void onDeleteButtonClicked_showsConfirmationDialog() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        getDeleteButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mRemoveProfileHandler).showConfirmRemoveProfileDialog();
+    }
+
+    @Test
+    public void onMakeAdminConfirmed_makeProfileAdmin() {
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                android.car.userlib.UserHelper.class).startMocking();
+
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Bundle arguments = new Bundle();
+        arguments.putParcelable(ProfilesDialogProvider.KEY_PROFILE_TO_MAKE_ADMIN, userInfo);
+        mPreferenceController.mMakeAdminConfirmListener.onConfirm(arguments);
+
+        ExtendedMockito.verify(
+                () -> android.car.userlib.UserHelper.grantAdminPermissions(mContext, userInfo));
+    }
+
+    @Test
+    public void onMakeAdminConfirmed_goBack() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        Bundle arguments = new Bundle();
+        arguments.putParcelable(ProfilesDialogProvider.KEY_PROFILE_TO_MAKE_ADMIN, userInfo);
+        mPreferenceController.mMakeAdminConfirmListener.onConfirm(arguments);
+
+        verify(mFragmentController).goBack();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onManageOtherProfilesButtonClicked_launchProfilesListFragment() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        List<UserInfo> otherUsers = new ArrayList<>();
+        otherUsers.add(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockProfileHelper.getAllLivingProfiles(any())).thenReturn(otherUsers);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        getProfilesButton().getOnClickListener().onClick(/* view= */ null);
+
+        verify(mFragmentController).launchFragment(any(ProfilesListFragment.class));
+    }
+
+    private ActionButtonInfo getRenameButton() {
+        return mPreference.getButton(ActionButtons.BUTTON1);
+    }
+
+    private ActionButtonInfo getMakeAdminButton() {
+        return mPreference.getButton(ActionButtons.BUTTON2);
+    }
+
+    private ActionButtonInfo getProfilesButton() {
+        return mPreference.getButton(ActionButtons.BUTTON3);
+    }
+
+    private ActionButtonInfo getDeleteButton() {
+        return mPreference.getButton(ActionButtons.BUTTON4);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceControllerTest.java
new file mode 100644
index 0000000..299dd8d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsDeletePreferenceControllerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ProfileDetailsDeletePreferenceControllerTest {
+    private static final String TEST_PROFILE_NAME = "Test Profile Name";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ProfileDetailsDeletePreferenceController mPreferenceController;
+    private RemoveProfileHandler mRemoveProfileHandler;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mRemoveProfileHandler = new RemoveProfileHandler(
+                mContext, mMockProfileHelper, mMockUserManager, mMockFragmentController);
+        mPreferenceController = new ProfileDetailsDeletePreferenceController(mContext,
+                /* preferenceKey= */ "key", mMockFragmentController, mCarUxRestrictions,
+                mMockProfileHelper, mRemoveProfileHandler);
+    }
+
+    @Test
+    public void onCreate_userNotRestricted_deleteButtonShown() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onCreate_userRestricted_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER))
+                .thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onCreate_userIsViewingSelf_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 0, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onCreate_userIsNotViewingSelf_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 0, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mRemoveProfileHandler.canRemoveProfile(userInfo)).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onCreate_isDemoUser_deleteButtonHidden() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        when(mMockUserManager.isDemoUser()).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceControllerTest.java
new file mode 100644
index 0000000..f227ec5
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/ProfileDetailsHeaderPreferenceControllerTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2020 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.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ProfileDetailsHeaderPreferenceControllerTest {
+    private static final String TEST_PROFILE_NAME = "Test Profile Name";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ProfileDetailsHeaderPreferenceController mPreferenceController;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new ProfileDetailsHeaderPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.setProfileHelper(mMockProfileHelper);
+    }
+
+    @Test
+    public void onCreate_elementHasTitle() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, /* flags= */ 0);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getTitle()).isNotNull();
+    }
+
+    @Test
+    public void onCreate_profileNotSetup_setsSummary() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, /* flags= */ 0);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "user_summary_not_set_up"));
+    }
+
+    @Test
+    public void onCreate_profileSetup_noSummary() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void onCreate_isAdmin_notCurrentProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "user_admin"));
+    }
+
+    @Test
+    public void onCreate_isAdmin_currentProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mPreferenceController.setUserInfo(userInfo);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "signed_in_admin_user"));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/ProfilesEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/profiles/ProfilesEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..b39ffcf
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/ProfilesEntryPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static com.android.car.settings.common.TopLevelMenuFragment.FRAGMENT_MENU_PREFERENCE_KEY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ProfilesEntryPreferenceControllerTest {
+    private static final String PREFERENCE_KEY = "key";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private Preference mPreference;
+    private ProfilesEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new ProfilesEntryPreferenceController(mContext,
+                PREFERENCE_KEY, mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    @UiThreadTest
+    public void handlePreferenceClicked_returnsTrue() {
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void handlePreferenceClicked_launchesProfileDetailsFragment() {
+        mPreferenceController.handlePreferenceClicked(mPreference);
+        verify(mFragmentController).launchFragment(any(ProfileDetailsFragment.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void handlePreferenceClicked_fragmentHasKeyArgument() {
+        mPreferenceController.handlePreferenceClicked(mPreference);
+        ArgumentCaptor<Fragment> fragmentArgumentCaptor = ArgumentCaptor.forClass(Fragment.class);
+        verify(mFragmentController).launchFragment(fragmentArgumentCaptor.capture());
+
+        Fragment fragment = fragmentArgumentCaptor.getValue();
+        assertThat(fragment.getArguments().getString(FRAGMENT_MENU_PREFERENCE_KEY)).isEqualTo(
+                PREFERENCE_KEY);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/profiles/RemoveProfileHandlerTest.java b/tests/unit/src/com/android/car/settings/profiles/RemoveProfileHandlerTest.java
new file mode 100644
index 0000000..6bd0552
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/profiles/RemoveProfileHandlerTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2021 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.car.settings.profiles;
+
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.android.car.settings.profiles.ProfilesDialogProvider.ANY_PROFILE;
+import static com.android.car.settings.profiles.ProfilesDialogProvider.KEY_PROFILE_TYPE;
+import static com.android.car.settings.profiles.ProfilesDialogProvider.LAST_ADMIN;
+import static com.android.car.settings.profiles.RemoveProfileHandler.REMOVE_PROFILE_DIALOG_TAG;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.UserManager;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class RemoveProfileHandlerTest {
+    private static final String TEST_PROFILE_NAME = "Test Profile Name";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private RemoveProfileHandler mRemoveProfileHandler;
+
+    @Mock
+    private FragmentController mMockFragmentController;
+    @Mock
+    private ProfileHelper mMockProfileHelper;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mRemoveProfileHandler = new RemoveProfileHandler(
+                mContext, mMockProfileHelper, mMockUserManager, mMockFragmentController);
+    }
+
+    @Test
+    public void userNotRestricted_canRemoveProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        assertThat(mRemoveProfileHandler.canRemoveProfile(userInfo)).isTrue();
+    }
+
+    @Test
+    public void userRestricted_cannotRemoveProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER))
+                .thenReturn(true);
+
+        assertThat(mRemoveProfileHandler.canRemoveProfile(userInfo)).isFalse();
+    }
+
+    @Test
+    public void viewingSystemUser_cannotRemoveProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 0, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        assertThat(mRemoveProfileHandler.canRemoveProfile(userInfo)).isFalse();
+    }
+
+    @Test
+    public void isDemoUser_cannotRemoveProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockUserManager.isDemoUser()).thenReturn(true);
+        assertThat(mRemoveProfileHandler.canRemoveProfile(userInfo)).isFalse();
+    }
+
+    @Test
+    public void hasPreviousDeleteDialog_dialogListenerSet() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        ConfirmationDialogFragment dialog = new ConfirmationDialogFragment.Builder(
+                mContext).build();
+        when(mMockFragmentController.findDialogByTag(REMOVE_PROFILE_DIALOG_TAG)).thenReturn(dialog);
+
+        mRemoveProfileHandler.resetListeners();
+
+        assertThat(dialog.getConfirmListener()).isNotNull();
+    }
+
+    @Test
+    public void showConfirmRemoveProfileDialog_showsConfirmationDialog() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+
+        mRemoveProfileHandler.showConfirmRemoveProfileDialog();
+
+        verify(mMockFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(REMOVE_PROFILE_DIALOG_TAG));
+    }
+
+    @Test
+    public void onDeleteConfirmed_removeProfile() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+
+        Bundle arguments = new Bundle();
+        arguments.putString(KEY_PROFILE_TYPE, ANY_PROFILE);
+        mRemoveProfileHandler.mRemoveConfirmListener.onConfirm(arguments);
+
+        verify(mMockProfileHelper).removeProfile(mContext, userInfo);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDeleteConfirmed_lastAdmin_launchChooseNewAdminFragment() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_PROFILE_NAME, FLAG_INITIALIZED);
+        mRemoveProfileHandler.setUserInfo(userInfo);
+        when(mMockProfileHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+
+        Bundle arguments = new Bundle();
+        arguments.putString(KEY_PROFILE_TYPE, LAST_ADMIN);
+        mRemoveProfileHandler.mRemoveConfirmListener.onConfirm(arguments);
+
+        verify(mMockFragmentController).launchFragment(any(ChooseNewAdminFragment.class));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java b/tests/unit/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
new file mode 100644
index 0000000..7876d03
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for ChooseLockPatternFragment class.
+ */
+@RunWith(AndroidJUnit4.class)
+public class ChooseLockPatternFragmentTest {
+    private ChooseLockPatternFragment mFragment;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+    }
+
+    /**
+     * A test to verify that onComplete is called when save worker succeeds
+     */
+    @Test
+    public void testOnCompleteIsCalledWhenSaveWorkerSucceeds() {
+        ChooseLockPatternFragment spyFragment = spy(mFragment);
+        doNothing().when(spyFragment).onComplete();
+
+        spyFragment.onChosenLockSaveFinished(true);
+
+        verify(spyFragment).onComplete();
+    }
+
+    /**
+     * A test to verify that the UI stage is updated when save worker fails
+     */
+    @Test
+    public void testStageIsUpdatedWhenSaveWorkerFails() {
+        ChooseLockPatternFragment spyFragment = spy(mFragment);
+        doNothing().when(spyFragment).updateStage(ChooseLockPatternFragment.Stage.SaveFailure);
+
+        spyFragment.onChosenLockSaveFinished(false);
+
+        verify(spyFragment, never()).onComplete();
+        verify(spyFragment).updateStage(ChooseLockPatternFragment.Stage.SaveFailure);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String chooseLockPatternFragmentTag = "choose_lock_pattern_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(
+                            R.id.fragment_container, new ChooseLockPatternFragment(),
+                            chooseLockPatternFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ChooseLockPatternFragment) mFragmentManager
+                .findFragmentByTag(chooseLockPatternFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java b/tests/unit/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
new file mode 100644
index 0000000..16b7c08
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for ChooseLockPinPasswordFragment class.
+ */
+@RunWith(AndroidJUnit4.class)
+public class ChooseLockPinPasswordFragmentTest {
+    private ChooseLockPinPasswordFragment mFragment;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+    }
+
+    /**
+     * A test to verify that onComplete is called is finished when save worker succeeds
+     */
+    @Test
+    public void testOnCompleteIsCalledWhenSaveWorkerSucceeds() {
+        ChooseLockPinPasswordFragment spyFragment = spy(mFragment);
+        doNothing().when(spyFragment).onComplete();
+
+        spyFragment.onChosenLockSaveFinished(true);
+
+        verify(spyFragment).onComplete();
+    }
+
+    /**
+     * A test to verify that the UI stage is updated when save worker fails
+     */
+    @Test
+    public void testStageIsUpdatedWhenSaveWorkerFails() {
+        ChooseLockPinPasswordFragment spyFragment = spy(mFragment);
+        doNothing().when(spyFragment).updateStage(ChooseLockPinPasswordFragment.Stage.SaveFailure);
+
+        spyFragment.onChosenLockSaveFinished(false);
+
+        verify(spyFragment, never()).onComplete();
+        verify(spyFragment).updateStage(ChooseLockPinPasswordFragment.Stage.SaveFailure);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String chooseLockPinPasswordFragmentTag = "choose_lock_pin_password_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(
+                            R.id.fragment_container, new ChooseLockPinPasswordFragment(),
+                            chooseLockPinPasswordFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ChooseLockPinPasswordFragment) mFragmentManager
+                .findFragmentByTag(chooseLockPinPasswordFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/security/ChooseLockTypePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/security/ChooseLockTypePreferenceControllerTest.java
new file mode 100644
index 0000000..0fd67a9
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/security/ChooseLockTypePreferenceControllerTest.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+import static com.android.car.settings.security.ChooseLockTypePreferenceController.LOCK_CHECK;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN;
+import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionTextPreference;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockscreenCredential;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ChooseLockTypePreferenceControllerTest {
+
+    private static final LockscreenCredential TEST_LOCKSCREEN_CREDENTIAL =
+            LockscreenCredential.createPin("1234");
+    private static final int TEST_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private ChooseLockTypePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private LockPatternUtils mLockPatternUtils;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiTwoActionTextPreference(mContext);
+        mPreferenceController = new ChooseLockTypePreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions, mUserManager,
+                mLockPatternUtils);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+
+        when(mUserManager.isGuestUser()).thenReturn(false);
+        when(mLockPatternUtils.getCredentialTypeForUser(anyInt())).thenReturn(CREDENTIAL_TYPE_NONE);
+    }
+
+    @Test
+    public void preferenceClicked_screenLockActivityLaunched() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mFragmentController).startActivityForResult(intentArgumentCaptor.capture(),
+                eq(LOCK_CHECK), any());
+
+        Intent intent = intentArgumentCaptor.getValue();
+        assertThat(intent.getComponent().getClassName()).isEqualTo(
+                VerifyLockChangeActivity.class.getName());
+    }
+
+    @Test
+    public void activityResult_resultNotOk_fragmentNotLaunched() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.processActivityResult(LOCK_CHECK,
+                Activity.RESULT_CANCELED, /* data= */ null);
+
+        verify(mFragmentController, never()).launchFragment(any());
+    }
+
+    @Test
+    @UiThreadTest
+    public void activityResult_resultOk_fragmentLaunched() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.processActivityResult(LOCK_CHECK,
+                Activity.RESULT_OK, /* data= */ null);
+
+        verify(mFragmentController).launchFragment(any(ChooseLockTypeFragment.class));
+    }
+
+    @Test
+    @UiThreadTest
+    public void activityResult_resultOk_currentScreenLockSet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.processActivityResult(LOCK_CHECK,
+                Activity.RESULT_OK, createDataBundle());
+
+        ArgumentCaptor<Fragment> fragmentArgumentCaptor = ArgumentCaptor.forClass(Fragment.class);
+        verify(mFragmentController).launchFragment(fragmentArgumentCaptor.capture());
+
+        Fragment fragment = fragmentArgumentCaptor.getValue();
+        assertThat((LockscreenCredential) fragment.getArguments().getParcelable(
+                PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK)).isEqualTo(TEST_LOCKSCREEN_CREDENTIAL);
+    }
+
+    @Test
+    @UiThreadTest
+    public void activityResult_resultOk_passwordQualitySet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.processActivityResult(LOCK_CHECK,
+                Activity.RESULT_OK, createDataBundle());
+
+        ArgumentCaptor<Fragment> fragmentArgumentCaptor = ArgumentCaptor.forClass(Fragment.class);
+        verify(mFragmentController).launchFragment(fragmentArgumentCaptor.capture());
+
+        Fragment fragment = fragmentArgumentCaptor.getValue();
+        assertThat(fragment.getArguments().getInt(
+                PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY)).isEqualTo(TEST_PASSWORD_QUALITY);
+    }
+
+    @Test
+    public void isNotGuestUser_isAvailable() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void isGuestUser_isNotAvailable() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void lockTypeNone_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "security_lock_none"));
+    }
+
+    @Test
+    public void lockTypePattern_setsSummary() {
+        when(mLockPatternUtils.getCredentialTypeForUser(anyInt()))
+                .thenReturn(CREDENTIAL_TYPE_PATTERN);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "security_lock_pattern"));
+    }
+
+    @Test
+    public void lockTypePin_setsSummary() {
+        when(mLockPatternUtils.getCredentialTypeForUser(anyInt())).thenReturn(CREDENTIAL_TYPE_PIN);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "security_lock_pin"));
+    }
+
+    @Test
+    public void lockTypePassword_setsSummary() {
+        when(mLockPatternUtils.getCredentialTypeForUser(anyInt()))
+                .thenReturn(CREDENTIAL_TYPE_PASSWORD);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "security_lock_password"));
+    }
+
+    private Intent createDataBundle() {
+        Intent intent = new Intent();
+        intent.putExtra(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, TEST_LOCKSCREEN_CREDENTIAL);
+        intent.putExtra(PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, TEST_PASSWORD_QUALITY);
+        return intent;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java b/tests/unit/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
new file mode 100644
index 0000000..5add2d8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.view.View;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.TestSettingsScreenLockActivity;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for ConfirmLockPinPasswordFragment class.
+ */
+@RunWith(AndroidJUnit4.class)
+public class ConfirmLockPinPasswordFragmentTest {
+    private ConfirmLockPinPasswordFragment mFragment;
+    private FragmentManager mFragmentManager;
+
+    @Rule
+    public ActivityTestRule<TestSettingsScreenLockActivity> mActivityTestRule =
+            new ActivityTestRule<>(TestSettingsScreenLockActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+    }
+
+    /**
+     * A test to verify that the Enter key is re-enabled when verification fails.
+     */
+    @Test
+    public void testEnterKeyIsEnabledWhenCheckFails() throws Throwable {
+        View enterKey = mFragment.getView().findViewById(R.id.key_enter);
+        mActivityTestRule.runOnUiThread(() -> {
+            enterKey.setEnabled(false);
+            mFragment.onCheckCompleted(false, 0);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        assertThat(enterKey.isEnabled()).isTrue();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String confirmLockPinPasswordFragmentTag = "confirm_lock_pin_password_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(
+                            R.id.fragment_container,
+                            ConfirmLockPinPasswordFragment.newPinInstance(),
+                            confirmLockPinPasswordFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ConfirmLockPinPasswordFragment) mFragmentManager
+                .findFragmentByTag(confirmLockPinPasswordFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
new file mode 100644
index 0000000..ec0952e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2021 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.car.settings.security;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+import static com.android.car.settings.security.LockTypeBasePreferenceController.CHOOSE_LOCK_REQUEST;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionTextPreference;
+import com.android.internal.widget.LockscreenCredential;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class LockTypeBasePreferenceControllerTest {
+    private static final int MATCHING_PASSWORD_QUALITY =
+            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+    private static final int NON_MATCHING_PASSWORD_QUALITY =
+            DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+    private static final LockscreenCredential NONE_LOCKSCREEN_CREDENTIAL =
+            LockscreenCredential.createNone();
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private LockTypeBasePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new CarUiTwoActionTextPreference(mContext);
+        mPreferenceController = new TestLockTypeBasePreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        mPreference.getExtras().putParcelable(
+                PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, NONE_LOCKSCREEN_CREDENTIAL);
+        mPreference.getExtras().putInt(
+                PasswordHelper.EXTRA_CURRENT_PASSWORD_QUALITY, NON_MATCHING_PASSWORD_QUALITY);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mMockUserManager.isGuestUser()).thenReturn(false);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_returnsTrue() {
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_launchesIntent() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+        verify(mFragmentController).startActivityForResult(any(Intent.class),
+                eq(CHOOSE_LOCK_REQUEST), any(ActivityResultCallback.class));
+    }
+
+    @Test
+    public void testRefreshUi_isCurrentLock() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.setCurrentPasswordQuality(MATCHING_PASSWORD_QUALITY);
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "current_screen_lock"));
+    }
+
+    @Test
+    public void testRefreshUi_isNotCurrentLock() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.setCurrentPasswordQuality(NON_MATCHING_PASSWORD_QUALITY);
+        mPreferenceController.refreshUi();
+        assertThat(mPreference.getSummary()).isNotEqualTo(
+                ResourceTestUtils.getString(mContext, "current_screen_lock"));
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_guestUser() {
+        when(mMockUserManager.isGuestUser()).thenReturn(true);
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_otherUser() {
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void testControllerPassword_isSet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreferenceController.getCurrentPassword()).isEqualTo(
+                NONE_LOCKSCREEN_CREDENTIAL);
+    }
+
+    @Test
+    public void testControllerPasswordQuality_isSet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreferenceController.getCurrentPasswordQuality()).isEqualTo(
+                NON_MATCHING_PASSWORD_QUALITY);
+    }
+
+    private class TestLockTypeBasePreferenceController extends LockTypeBasePreferenceController {
+
+        TestLockTypeBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+            mUserManager = mMockUserManager;
+        }
+
+        @Override
+        protected Intent activityToOpen() {
+            return new Intent();
+        }
+
+        @Override
+        protected int[] allowedPasswordQualities() {
+            return new int[]{MATCHING_PASSWORD_QUALITY};
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
new file mode 100644
index 0000000..1d233a7
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2021 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.car.settings.sound;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.media.CarAudioManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.common.SeekBarPreference;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class VolumeSettingsPreferenceControllerTest {
+
+    private static final int ZONE_ID = 1;
+    private static final int GROUP_ID = 0;
+    private static final int TEST_MIN_VOLUME = 0;
+    private static final int TEST_VOLUME = 40;
+    private static final int TEST_NEW_VOLUME = 80;
+    private static final int TEST_MAX_VOLUME = 100;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private VolumeSettingsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Car mCar;
+    @Mock
+    private CarAudioManager mCarAudioManager;
+    @Mock
+    private VolumeSettingsRingtoneManager mRingtoneManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mCar.getCarManager(Car.AUDIO_SERVICE)).thenReturn(mCarAudioManager);
+        when(mCarAudioManager.getVolumeGroupCount()).thenReturn(1);
+        when(mCarAudioManager.getUsagesForVolumeGroupId(GROUP_ID)).thenReturn(new int[]{1, 2});
+        when(mCarAudioManager.getGroupMinVolume(GROUP_ID)).thenReturn(TEST_MIN_VOLUME);
+        when(mCarAudioManager.getGroupVolume(GROUP_ID)).thenReturn(TEST_VOLUME);
+        when(mCarAudioManager.getGroupMaxVolume(GROUP_ID)).thenReturn(TEST_MAX_VOLUME);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new TestVolumeSettingsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions, mCar, mRingtoneManager);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+    }
+
+    @Test
+    public void testRefreshUi_serviceNotStarted() {
+        mPreferenceController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testRefreshUi_serviceStarted() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onServiceConnected_registersVolumeCallback() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+
+        verify(mCarAudioManager).registerCarVolumeCallback(
+                mPreferenceController.mVolumeChangeCallback);
+    }
+
+    @Test
+    public void testRefreshUi_serviceStarted_multipleCalls() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        // Calling this multiple times shouldn't increase the number of elements.
+        mPreferenceController.refreshUi();
+        mPreferenceController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testRefreshUi_createdPreferenceHasMinMax() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.getMin()).isEqualTo(TEST_MIN_VOLUME);
+        assertThat(preference.getValue()).isEqualTo(TEST_VOLUME);
+        assertThat(preference.getMax()).isEqualTo(TEST_MAX_VOLUME);
+    }
+
+    @Test
+    public void testOnPreferenceChange_ringtonePlays() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
+        verify(mRingtoneManager).playAudioFeedback(anyInt(), anyInt());
+    }
+
+    @Test
+    public void testOnPreferenceChange_audioManagerSet() throws CarNotConnectedException {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
+        verify(mCarAudioManager).setGroupVolume(GROUP_ID, TEST_NEW_VOLUME, 0);
+    }
+
+    @Test
+    public void onGroupVolumeChanged_sameValue_doesNotUpdateVolumeSeekbar() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        SeekBarPreference preference = spy((SeekBarPreference) mPreferenceGroup.getPreference(0));
+        mPreferenceController.mVolumeChangeCallback.onGroupVolumeChanged(ZONE_ID,
+                GROUP_ID, /* flags= */ 0);
+
+        verify(preference, never()).setValue(any(Integer.class));
+    }
+
+    @Test
+    public void onGroupVolumeChanged_differentValue_updatesVolumeSeekbar() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+        when(mCarAudioManager.getGroupVolume(GROUP_ID)).thenReturn(TEST_NEW_VOLUME);
+        mPreferenceController.mVolumeChangeCallback.onGroupVolumeChanged(ZONE_ID,
+                GROUP_ID, /* flags= */ 0);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.getValue()).isEqualTo(TEST_NEW_VOLUME);
+    }
+
+    private static class TestVolumeSettingsPreferenceController extends
+            VolumeSettingsPreferenceController {
+
+        TestVolumeSettingsPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions, Car car,
+                VolumeSettingsRingtoneManager ringtoneManager) {
+            super(context, preferenceKey, fragmentController, uxRestrictions, car, ringtoneManager);
+        }
+
+        @Override
+        public int carVolumeItemsXml() {
+            return R.xml.test_car_volume_items;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/AboutSettingsEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/AboutSettingsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..c09504d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/AboutSettingsEntryPreferenceControllerTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AboutSettingsEntryPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private AboutSettingsEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new AboutSettingsEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.about_summary, Build.VERSION.RELEASE));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..640b289
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class BluetoothMacAddressPreferenceControllerTest {
+    private static final String TEST_ADDRESS = "address";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private BluetoothMacAddressPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private PackageManager mMockPm;
+    @Mock
+    private BluetoothAdapter mMockBluetoothAdapter;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+        when(mMockBluetoothAdapter.getAddress()).thenReturn(TEST_ADDRESS);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new BluetoothMacAddressPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions, mMockBluetoothAdapter);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsAddress() {
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_ADDRESS);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureBluetooth_unsupportedOnDevice() {
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+                UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_enableDefaultAdapter_availableForViewing() {
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+                AVAILABLE_FOR_VIEWING);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..9c95aa6
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.development.DevelopmentSettingsUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class BuildNumberPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private BuildNumberPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private Toast mMockToast;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .mockStatic(Toast.class, withSettings().lenient())
+                .startMocking();
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(false);
+        when(Toast.makeText(any(), anyString(), anyInt())).thenReturn(mMockToast);
+
+        // By default device is provisioned.
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 1);
+
+        // By default development settings is disabled.
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new BuildNumberPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        mPreferenceController.onResume(mLifecycleOwner);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_notProvisioned_returnFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0);
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_nonAdmin_returnFalse() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ false);
+
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_demoUser_returnsFalse() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_adminUser_returnsTrue() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+
+        assertThat(mPreferenceController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_firstClick_noToast() {
+        mPreference.performClick();
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(), anyString(), anyInt()), never());
+        verify(mMockToast, never()).show();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_someClicks_showToast() {
+        for (int i = 0; i < getTapsToShowToast(); i++) {
+            mPreference.performClick();
+        }
+
+        int remainingClicks = getTapsToBecomeDeveloper() - getTapsToShowToast();
+        assertToastShown(mContext.getResources().getQuantityString(R.plurals.show_dev_countdown,
+                remainingClicks, remainingClicks));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_showDevEnabledToast() {
+        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
+            mPreference.performClick();
+        }
+        assertToastShown(mContext.getString(R.string.show_dev_on));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_devSettingsEnabled() {
+        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
+            mPreference.performClick();
+        }
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mMockUserManager)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_extraClicks_noAlreadyDevToast() {
+        int extraClicks = 100;
+        for (int i = 0; i < getTapsToBecomeDeveloper() + extraClicks; i++) {
+            mPreference.performClick();
+        }
+        String alreadyDevString = mContext.getString(R.string.show_dev_already);
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(), eq(alreadyDevString), anyInt()), never());
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsEnabled_click_showAlreadyDevToast() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        mPreferenceController.onPause(mLifecycleOwner);
+        mPreferenceController.onResume(mLifecycleOwner);
+        mPreference.performClick();
+        assertToastShown(mContext.getString(R.string.show_dev_already));
+    }
+
+    private void assertToastShown(String toastText) {
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(), eq(toastText), anyInt()));
+        verify(mMockToast, atLeastOnce()).show();
+    }
+
+    private void switchToUser(boolean isAdmin, boolean isDemo) {
+        when(mMockUserManager.isAdminUser()).thenReturn(isAdmin);
+        when(mMockUserManager.isDemoUser()).thenReturn(isDemo);
+        when(UserManager.isDeviceInDemoMode(mContext)).thenReturn(isDemo);
+    }
+
+    private int getTapsToBecomeDeveloper() {
+        return mContext.getResources().getInteger(R.integer.enable_developer_settings_click_count);
+    }
+
+    private int getTapsToShowToast() {
+        return mContext.getResources().getInteger(
+                R.integer.enable_developer_settings_clicks_to_show_toast_count);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..0bb52ce
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.development.DevelopmentSettingsUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class DeveloperOptionsEntryPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private DeveloperOptionsEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .startMocking();
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(false);
+        doNothing().when(mContext).startActivity(any());
+
+        mPreference = new Preference(mContext);
+        mPreference.setIntent(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
+        mPreferenceController = new DeveloperOptionsEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsEnabled_isAvailable() {
+        setDeveloperOptionsEnabled(true);
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsDisabled_isUnavailable() {
+        setDeveloperOptionsEnabled(false);
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+                CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsEnabled_hasUserRestriction_isUnavailable() {
+        setDeveloperOptionsEnabled(true);
+        when(mMockUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(true);
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+                CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void performClick_startsActivity() {
+        setDeveloperOptionsEnabled(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreference.performClick();
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext).startActivity(captor.capture());
+
+        Intent intent = captor.getValue();
+        assertThat(intent.getAction()).isEqualTo(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);
+    }
+
+    private void setDeveloperOptionsEnabled(boolean enabled) {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, enabled ? 1 : 0);
+        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, enabled);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/DualPaneFactoryResetFragmentTest.java b/tests/unit/src/com/android/car/settings/system/DualPaneFactoryResetFragmentTest.java
new file mode 100644
index 0000000..621f673
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/DualPaneFactoryResetFragmentTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.car.settings.system.FactoryResetFragment.CHECK_LOCK_REQUEST_CODE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.fragment.app.Fragment;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.DualPaneTestActivity;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+public class DualPaneFactoryResetFragmentTest
+        extends FactoryResetFragmentTestCase<DualPaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<DualPaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(DualPaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<DualPaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void processActivityResult_resultOk_launchesFactoryResetConfirmFragment()
+            throws Throwable {
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_OK, /* data= */ null);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        Fragment launchedFragment = mFragmentManager.findFragmentById(R.id.fragment_container);
+
+        assertThat(launchedFragment).isInstanceOf(FactoryResetConfirmFragment.class);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetAccountsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/FactoryResetAccountsPreferenceControllerTest.java
new file mode 100644
index 0000000..61ee362
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetAccountsPreferenceControllerTest.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+import org.mockito.stubbing.Answer;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** Unit test for {@link FactoryResetAccountsPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class FactoryResetAccountsPreferenceControllerTest {
+    private final int mUserId = UserHandle.myUserId();
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreference;
+    private FactoryResetAccountsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    private Map<Integer, List<AuthenticatorDescription>> mAuthenticatorDescriptionMap;
+    private Map<Integer, List<Account>> mAccountMap;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private AccountManager mMockAccountManager;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mAuthenticatorDescriptionMap = new HashMap<>();
+        mAccountMap = new HashMap<>();
+        mAuthenticatorDescriptionMap.put(mUserId, new ArrayList<>());
+        mAccountMap.put(mUserId, new ArrayList<>());
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(AccountManager.class, withSettings().lenient())
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .startMocking();
+        when(AccountManager.get(mContext)).thenReturn(mMockAccountManager);
+        updateAccountManagerMocks();
+        when(UserManager.get(mContext)).thenCallRealMethod();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = new PreferenceCategory(mContext);
+        screen.addPreference(mPreference);
+        mPreferenceController = new FactoryResetAccountsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    @UiThreadTest
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_addsTitlePreference() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreference.getPreference(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.factory_reset_accounts));
+    }
+
+    @Test
+    public void refreshUi_accountsPresent_showsGroup() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        addAccountAndDescription(mUserId, "accountName");
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noAccountsPresent_hidesGroup() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_multipleProfiles_showsAllAccounts() {
+        int profileId1 = 112;
+        int profileId2 = 113;
+        List<UserInfo> profiles = new ArrayList<>();
+        profiles.add(new UserInfo(profileId1, String.valueOf(profileId1), 0));
+        profiles.add(new UserInfo(profileId2, String.valueOf(profileId2), 0));
+        String accountName1 = "accountName1";
+        addAccountAndDescription(profileId1, accountName1);
+        String accountName2 = "accountName2";
+        addAccountAndDescription(profileId2, accountName2);
+
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+        when(mMockUserManager.getProfiles(mUserId)).thenReturn(profiles);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        mPreferenceController.refreshUi();
+
+        // Title + two profiles with one account each.
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(3);
+        assertThat(mPreference.getPreference(1).getTitle()).isEqualTo(accountName1);
+        assertThat(mPreference.getPreference(2).getTitle()).isEqualTo(accountName2);
+    }
+
+    @Test
+    public void refreshUi_missingAccountDescription_skipsAccount() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        addAccountAndDescription(mUserId, "account name with desc");
+        String accountNameNoDesc = "account name no desc";
+        addAccount(mUserId, accountNameNoDesc);
+
+        mPreferenceController.refreshUi();
+
+        // Title + one account with valid description.
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+        assertThat(mPreference.getPreference(1).getTitle()).isNotEqualTo(accountNameNoDesc);
+    }
+
+    @Test
+    public void refreshUi_accountAdded_addsPreferenceToGroup() {
+        addAccountAndDescription(mUserId, "accountName");
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        String addedAccountName = "added account name";
+        addAccountAndDescription(mUserId, addedAccountName);
+        mPreferenceController.refreshUi();
+
+        // Title + one already present account + one newly added account.
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(3);
+        assertThat(mPreference.getPreference(2).getTitle()).isEqualTo(addedAccountName);
+    }
+
+    @Test
+    public void refreshUi_accountRemoved_removesPreferenceFromGroup() {
+        String accountNameToRemove = "account name to remove";
+        addAccountAndDescription(mUserId, accountNameToRemove);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
+
+        clearAllAccounts();
+        mPreferenceController.refreshUi();
+
+        // Title only, all accounts removed.
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreference.getPreference(0).getTitle()).isNotEqualTo(accountNameToRemove);
+    }
+
+    private void addAccountAndDescription(int profileId, String accountName) {
+        addDescription(profileId, accountName);
+        addAccount(profileId, accountName);
+    }
+
+    private void addAccount(int profileId, String accountName) {
+        String type = accountName + "_type";
+        if (!mAccountMap.containsKey(profileId)) {
+            mAccountMap.put(profileId, new ArrayList<>());
+        }
+        mAccountMap.get(profileId).add(new Account(accountName, type));
+        updateAccountManagerMocks();
+    }
+
+    private void addDescription(int profileId, String accountName) {
+        String type = accountName + "_type";
+        if (!mAuthenticatorDescriptionMap.containsKey(profileId)) {
+            mAuthenticatorDescriptionMap.put(profileId, new ArrayList<>());
+        }
+        mAuthenticatorDescriptionMap.get(profileId).add(
+                new AuthenticatorDescription(type, "packageName",
+                        /* labelId= */ 0, /* iconId= */ 0, /* smallIconId= */ 0, /* prefId= */ 0));
+        updateAccountManagerMocks();
+    }
+
+    private void clearAllAccounts() {
+        mAuthenticatorDescriptionMap.clear();
+        mAccountMap.clear();
+        updateAccountManagerMocks();
+    }
+
+    private void updateAccountManagerMocks() {
+        when(mMockAccountManager.getAuthenticatorTypesAsUser(anyInt())).then(
+                (Answer<AuthenticatorDescription[]>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    int profileId = (Integer) args[0];
+                    return mAuthenticatorDescriptionMap.containsKey(profileId)
+                            ? mAuthenticatorDescriptionMap.get(profileId).toArray(
+                            new AuthenticatorDescription[0])
+                            : new AuthenticatorDescription[0];
+                });
+        when(mMockAccountManager.getAccountsAsUser(anyInt())).then(
+                (Answer<Account[]>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    int profileId = (Integer) args[0];
+                    return mAccountMap.containsKey(profileId)
+                            ? mAccountMap.get(profileId).toArray(new Account[0])
+                            : new Account[0];
+                });
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetConfirmFragmentTest.java b/tests/unit/src/com/android/car/settings/system/FactoryResetConfirmFragmentTest.java
new file mode 100644
index 0000000..59bdebc
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetConfirmFragmentTest.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doNothing;
+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;
+
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.provider.Settings;
+import android.service.oemlock.OemLockManager;
+import android.service.persistentdata.PersistentDataBlockManager;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.PollingCheck;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class FactoryResetConfirmFragmentTest {
+
+    private final Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private FactoryResetConfirmFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MenuItem mResetButton;
+
+    private int mDeviceProvisioned;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Mock
+    private PersistentDataBlockManager mPersistentDataBlockManager;
+    @Mock
+    private OemLockManager mOemLockManager;
+    @Mock
+    private FragmentActivity mMockActivity;
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivity.getSupportFragmentManager();
+        mDeviceProvisioned = Settings.Global.getInt(
+                mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0);
+        // Default to not provisioned.
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                0);
+
+        setUpFragment();
+        when(mFragment.requireContext()).thenReturn(mContext);
+        when(mContext.getSystemService(PersistentDataBlockManager.class))
+                .thenReturn(mPersistentDataBlockManager);
+        when(mContext.getSystemService(OemLockManager.class)).thenReturn(mOemLockManager);
+        when(mFragment.requireActivity()).thenReturn(mMockActivity);
+        when(mFragment.getActivity()).thenReturn(mMockActivity);
+        mResetButton = mActivity.getToolbar().getMenuItems().get(0);
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                mDeviceProvisioned);
+    }
+
+    @Test
+    public void confirmClicked_sendsResetIntent() throws Throwable {
+        triggerFactoryResetConfirmButton();
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+        assertThat(resetIntent.getPackage()).isEqualTo("android");
+        assertThat(resetIntent.getFlags() & Intent.FLAG_RECEIVER_FOREGROUND).isEqualTo(
+                Intent.FLAG_RECEIVER_FOREGROUND);
+        assertThat(resetIntent.getExtras().getString(Intent.EXTRA_REASON)).isEqualTo(
+                "MasterClearConfirm");
+    }
+
+    @Test
+    public void confirmClicked_resetEsimFalse_resetIntentReflectsChoice() throws Throwable {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
+                mContext.getString(R.string.pk_factory_reset_reset_esim), false).commit();
+
+        triggerFactoryResetConfirmButton();
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getExtras().getBoolean(Intent.EXTRA_WIPE_ESIMS)).isEqualTo(false);
+    }
+
+    @Test
+    public void confirmClicked_pdbManagerNull_sendsResetIntent() throws Throwable {
+        when(mContext.getSystemService(PersistentDataBlockManager.class)).thenReturn(null);
+
+        triggerFactoryResetConfirmButton();
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_oemUnlockAllowed_doesNotWipePdb() throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
+
+        triggerFactoryResetConfirmButton();
+
+        verify(mPersistentDataBlockManager, never()).wipe();
+    }
+
+    @Test
+    public void confirmClicked_oemUnlockAllowed_sendsResetIntent() throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
+
+        triggerFactoryResetConfirmButton();
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_notProvisioned_doesNotWipePdb() throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+
+        triggerFactoryResetConfirmButton();
+
+        verify(mPersistentDataBlockManager, never()).wipe();
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_notProvisioned_sendsResetIntent()
+            throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+
+        triggerFactoryResetConfirmButton();
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_provisioned_wipesPdb() throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+
+        triggerFactoryResetConfirmButton();
+        // wait for async task
+        PollingCheck.waitFor(
+                () -> mFragment.mPersistentDataWipeTask.getStatus() == AsyncTask.Status.FINISHED);
+
+        verify(mPersistentDataBlockManager).wipe();
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_provisioned_sendsResetIntent() throws Throwable {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+
+        triggerFactoryResetConfirmButton();
+        // wait for async task
+        PollingCheck.waitFor(
+                () -> mFragment.mPersistentDataWipeTask.getStatus() == AsyncTask.Status.FINISHED);
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mMockActivity).sendBroadcast(argumentCaptor.capture());
+        Intent resetIntent = argumentCaptor.getValue();
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String factoryResetConfirmFragmentTag = "factory_reset_confirm_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(
+                            R.id.fragment_container, new TestFactoryResetConfirmFragment(),
+                            factoryResetConfirmFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (FactoryResetConfirmFragment)
+                mFragmentManager.findFragmentByTag(factoryResetConfirmFragmentTag);
+        ExtendedMockito.spyOn(mFragment);
+    }
+
+    private void triggerFactoryResetConfirmButton() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> mResetButton.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    public static class TestFactoryResetConfirmFragment extends FactoryResetConfirmFragment {
+        @Override
+        ProgressDialog getProgressDialog() {
+            ProgressDialog dialog = mock(ProgressDialog.class);
+            doNothing().when(dialog).show();
+            doNothing().when(dialog).hide();
+            return dialog;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/FactoryResetEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..cd7df7d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetEntryPreferenceControllerTest.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_FACTORY_RESET;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
+import static com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment.DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ClickableWhileDisabledPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.enterprise.ActionDisabledByAdminDialogFragment;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+/** Unit test for {@link FactoryResetEntryPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class FactoryResetEntryPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ClickableWhileDisabledPreference mPreference;
+    private FactoryResetEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+    private int mDefaultDemoMode;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private Toast mMockToast;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mDefaultDemoMode = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_DEMO_MODE, 0);
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .mockStatic(Toast.class, withSettings().lenient())
+                .startMocking();
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+        when(Toast.makeText(any(), anyString(), anyInt())).thenReturn(mMockToast);
+
+        mPreference = new ClickableWhileDisabledPreference(mContext);
+        mPreferenceController = new FactoryResetEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE,
+                mDefaultDemoMode);
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE_FOR_VIEWING);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_unrestricted_available() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_baseRestricted_notDpmRestricted_disabledForUser() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE_FOR_VIEWING);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_baseRestricted_dpmRestricted_available() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE_FOR_VIEWING);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_notBaseRestricted_dpmRestricted_available() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_demoMode_demoUser_available() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_demoMode_demoUser_baseRestricted_disabledForUser() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE_FOR_VIEWING);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_demoMode_demoUser_dpmRestricted_available() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_showsBlockedToast_nonAdminUser() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingBlockedToast();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_triggersAction_adminUser_unrestricted() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertNoToastAndNoDialog();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_showsBlockedToast_adminUser_baseRestricted_notDpmRestricted() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingBlockedToast();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_showsBlockedToast_adminUser_baseRestricted_dpmRestricted() {
+        switchToUser(/* isAdmin= */ true, /* isDemo= */ false);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingBlockedToast();
+    }
+
+    @Test
+    public void performClick_showsBlockedDialog_adminUser_notBaseRestricted_dpmRestricted() {
+        switchToUser(/* isAdmin= */ true, /* false= */ false);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingDisabledByAdminDialog();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_triggersAction_demoUser_unrestricted() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertNoToastAndNoDialog();
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_showsBlockedToast_demoUser_baseRestricted() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        addBaseUserRestriction(DISALLOW_FACTORY_RESET);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingBlockedToast();
+    }
+
+    @Test
+    public void performClick_showsBlockedDialog_demoUser_dpmRestricted() {
+        switchToUser(/* isAdmin= */ false, /* isDemo= */ true);
+        addUserRestriction(DISALLOW_FACTORY_RESET);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreference.performClick();
+
+        assertShowingDisabledByAdminDialog();
+    }
+
+    private void switchToUser(boolean isAdmin, boolean isDemo) {
+        when(mMockUserManager.isAdminUser()).thenReturn(isAdmin);
+        when(mMockUserManager.isDemoUser()).thenReturn(isDemo);
+        when(UserManager.isDeviceInDemoMode(mContext)).thenReturn(isDemo);
+    }
+
+    private void addBaseUserRestriction(String restriction) {
+        when(mMockUserManager.hasBaseUserRestriction(
+                restriction, UserHandle.of(mContext.getUserId()))).thenReturn(true);
+    }
+
+    private void addUserRestriction(String restriction) {
+        when(mMockUserManager.hasUserRestriction(restriction)).thenReturn(true);
+    }
+
+    private void assertShowingBlockedToast() {
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(),
+                        eq(mContext.getResources().getString(R.string.action_unavailable)),
+                        anyInt()));
+        verify(mMockToast).show();
+    }
+
+    private void assertShowingDisabledByAdminDialog() {
+        verify(mFragmentController).showDialog(any(ActionDisabledByAdminDialogFragment.class),
+                eq(DISABLED_BY_ADMIN_CONFIRM_DIALOG_TAG));
+    }
+
+    private void assertNoToastAndNoDialog() {
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(), anyString(), anyInt()), never());
+        verify(mMockToast, never()).show();
+        verify(mFragmentController, never())
+                .showDialog(any(ActionDisabledByAdminDialogFragment.class), anyString());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetEsimPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/FactoryResetEsimPreferenceControllerTest.java
new file mode 100644
index 0000000..f57c3bb
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetEsimPreferenceControllerTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.car.settings.system.FactoryResetEsimPreferenceController.KEY_SHOW_ESIM_RESET_CHECKBOX;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.SystemProperties;
+import android.provider.Settings;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+/** Unit test for {@link FactoryResetEsimPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class FactoryResetEsimPreferenceControllerTest {
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private SwitchPreference mPreference;
+    private FactoryResetEsimPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    // Store value for reset after test run
+    private int mEuiccProvisioned;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private EuiccManager mMockEuiccManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // store before value
+        mEuiccProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.EUICC_PROVISIONED, 0);
+
+        when(mContext.getSystemService(Context.EUICC_SERVICE)).thenReturn(mMockEuiccManager);
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
+        // mocking SystemProperties since we can't set them here
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                SystemProperties.class, withSettings().lenient()).startMocking();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceController = new FactoryResetEsimPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+        // put back previous value
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED,
+                mEuiccProvisioned);
+    }
+
+    @Test
+    public void getAvailabilityStatus_showEsimPropertyTrue_available() {
+        ExtendedMockito.when(SystemProperties.get(eq(KEY_SHOW_ESIM_RESET_CHECKBOX), anyString()))
+                .thenReturn(Boolean.TRUE.toString());
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_showEsimPropertyFalse_unsupportedOnDevice() {
+        ExtendedMockito.when(SystemProperties.get(eq(KEY_SHOW_ESIM_RESET_CHECKBOX), anyString()))
+                .thenReturn(Boolean.FALSE.toString());
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetFragmentTestCase.java b/tests/unit/src/com/android/car/settings/system/FactoryResetFragmentTestCase.java
new file mode 100644
index 0000000..474ddd0
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetFragmentTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.app.Activity.RESULT_CANCELED;
+
+import static com.android.car.settings.system.FactoryResetFragment.CHECK_LOCK_REQUEST_CODE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.security.CheckLockActivity;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.TestEventListener;
+import com.android.car.ui.toolbar.MenuItem;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public abstract class FactoryResetFragmentTestCase<T extends BaseCarSettingsTestActivity> {
+
+    protected Context mContext = ApplicationProvider.getApplicationContext();
+    protected BaseCarSettingsTestActivity mActivity;
+    protected TestFactoryResetFragment mFragment;
+    protected FragmentManager mFragmentManager;
+
+    abstract ActivityTestRule<T> getActivityTestRule();
+
+    @Before
+    public void setUp() throws Throwable {
+        mActivity = getActivityTestRule().getActivity();
+        mFragmentManager = getActivityTestRule().getActivity().getSupportFragmentManager();
+        setUpFragment();
+    }
+
+    @Test
+    public void factoryResetButtonClicked_launchesCheckLockActivity() throws Throwable {
+        getActivityTestRule().runOnUiThread(() -> {
+            MenuItem factoryResetButton = mFragment.getToolbarMenuItems().get(0);
+            factoryResetButton.setEnabled(true);
+            factoryResetButton.performClick();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        mFragment.mStartActivityForResult.assertCalled();
+        assertThat(mFragment.mStartActivityForResult.getLastValue().getComponent().getClassName())
+                .isEqualTo(CheckLockActivity.class.getName());
+    }
+
+    @Test
+    public void processActivityResult_otherResultCode_doesNothing() {
+        mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_CANCELED, /* data= */ null);
+
+        Fragment launchedFragment = mFragmentManager.findFragmentById(
+                R.id.fragment_container);
+
+        assertThat(launchedFragment).isInstanceOf(FactoryResetFragment.class);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String factoryResetFragmentTag = "factory_reset_fragment";
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new TestFactoryResetFragment(),
+                            factoryResetFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (TestFactoryResetFragment) mFragmentManager
+                .findFragmentByTag(factoryResetFragmentTag);
+    }
+
+    public static class TestFactoryResetFragment extends FactoryResetFragment {
+
+        TestEventListener<Intent> mStartActivityForResult = new TestEventListener<>();
+
+        @Override
+        public void startActivityForResult(Intent intent, int requestCode,
+                ActivityResultCallback callback) {
+            mStartActivityForResult.accept(intent);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceControllerTest.java
new file mode 100644
index 0000000..d34f52f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FactoryResetOtherProfilesPresentPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.profiles.ProfileHelper;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.Collections;
+
+/** Unit test for {@link FactoryResetOtherProfilesPresentPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class FactoryResetOtherProfilesPresentPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private FactoryResetOtherProfilesPresentPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private ProfileHelper mProfileHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                ProfileHelper.class, withSettings().lenient()).startMocking();
+        when(ProfileHelper.getInstance(any())).thenReturn(mProfileHelper);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new FactoryResetOtherProfilesPresentPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_noSwitchableUsers_hidesPreference() {
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(Collections.emptyList());
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onCreate_switchableUsers_showsPreference() {
+        when(mProfileHelper.getAllSwitchableProfiles()).thenReturn(
+                Collections.singletonList(new UserInfo()));
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/FirmwareVersionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/FirmwareVersionPreferenceControllerTest.java
new file mode 100644
index 0000000..0035483
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/FirmwareVersionPreferenceControllerTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class FirmwareVersionPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private FirmwareVersionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new FirmwareVersionPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.about_summary, Build.VERSION.RELEASE_OR_CODENAME));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/HardwareInfoPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/HardwareInfoPreferenceControllerTest.java
new file mode 100644
index 0000000..c48262c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/HardwareInfoPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
+
+@RunWith(AndroidJUnit4.class)
+public class HardwareInfoPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private HardwareInfoPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private FutureTask<String> mMsvSuffixTask;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new TestHardwareInfoPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsMsvSuffixSummary() throws ExecutionException, InterruptedException {
+        String msvSuffix = "msv_summary";
+        doNothing().when(mMsvSuffixTask).run();
+        doReturn(msvSuffix).when(mMsvSuffixTask).get();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.hardware_info_summary, Build.MODEL + msvSuffix));
+    }
+
+    @Test
+    public void onCreate_executionException_usesBuildModelSummary()
+            throws ExecutionException, InterruptedException {
+        doNothing().when(mMsvSuffixTask).run();
+        doThrow(ExecutionException.class).when(mMsvSuffixTask).get();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.hardware_info_summary, Build.MODEL));
+    }
+
+    private class TestHardwareInfoPreferenceController extends HardwareInfoPreferenceController {
+        TestHardwareInfoPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        FutureTask<String> createMsvSuffixTask() {
+            return mMsvSuffixTask;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/KernelVersionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/KernelVersionPreferenceControllerTest.java
new file mode 100644
index 0000000..28c0b2f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/KernelVersionPreferenceControllerTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.DeviceInfoUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class KernelVersionPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private KernelVersionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new KernelVersionPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                DeviceInfoUtils.getFormattedKernelVersion(mContext));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java b/tests/unit/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
new file mode 100644
index 0000000..303ef8e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.withSettings;
+
+import android.os.SystemProperties;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+/** Unit test for {@link RegulatoryInfoDisplayActivity}. */
+@RunWith(AndroidJUnit4.class)
+public class RegulatoryInfoDisplayActivityTest {
+
+    private RegulatoryInfoDisplayActivity mActivity;
+    private MockitoSession mSession;
+
+    @Rule
+    public ActivityTestRule<RegulatoryInfoDisplayActivity> mActivityTestRule =
+            new ActivityTestRule<>(RegulatoryInfoDisplayActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                SystemProperties.class, withSettings().lenient()).startMocking();
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void getRegulatoryInfoImageFileName_skuIsNotEmpty() {
+        ExtendedMockito.when(SystemProperties.get(eq("ro.boot.hardware.sku"), anyString()))
+                .thenReturn("test");
+
+        assertThat(mActivity.getRegulatoryInfoImageFileName())
+                .isEqualTo("/data/misc/elabel/regulatory_info_test.png");
+    }
+
+    @Test
+    public void getRegulatoryInfoImageFileName_skuIsEmpty() {
+        ExtendedMockito.when(SystemProperties.get(eq("ro.boot.hardware.sku"), anyString()))
+                .thenReturn("");
+
+        assertThat(mActivity.getRegulatoryInfoImageFileName())
+                .isEqualTo("/data/misc/elabel/regulatory_info.png");
+    }
+
+    @Test
+    public void getSku_shouldReturnSystemProperty() {
+        String testSku = "test";
+        ExtendedMockito.when(SystemProperties.get(eq("ro.boot.hardware.sku"), anyString()))
+                .thenReturn(testSku);
+
+        assertThat(mActivity.getSku()).isEqualTo(testSku);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetAppPrefFragmentTest.java b/tests/unit/src/com/android/car/settings/system/ResetAppPrefFragmentTest.java
new file mode 100644
index 0000000..e4d2c0b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetAppPrefFragmentTest.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+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;
+import static org.mockito.Mockito.withSettings;
+
+import android.app.AppOpsManager;
+import android.app.INotificationManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.os.AsyncTask;
+import android.os.IBinder;
+import android.os.ServiceManager;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.PollingCheck;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class ResetAppPrefFragmentTest {
+    private static final String ENABLED_PKG_NAME = "package.name.1";
+    private static final String DISABLED_PKG_NAME = "package.name.2";
+    private static final int UID = 1001010;
+
+    private final Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private ResetAppPrefFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MenuItem mResetButton;
+    private MockitoSession mSession;
+    private List<ApplicationInfo> mAppInfoList;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Mock
+    private PackageManager mMockPm;
+    @Mock
+    private INotificationManager mINotificationManager;
+    @Mock
+    private IPackageManager mIPackageManager;
+    @Mock
+    private AppOpsManager mAppOpsManager;
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(ServiceManager.class, withSettings().lenient())
+                .startMocking();
+        IBinder notificationBinder = mock(IBinder.class);
+        IBinder packageManagerBinder = mock(IBinder.class);
+        when(notificationBinder.queryLocalInterface("android.app.INotificationManager")).thenReturn(
+                mINotificationManager);
+        when(packageManagerBinder.queryLocalInterface(
+                "android.content.pm.IPackageManager")).thenReturn(mIPackageManager);
+        when(ServiceManager.getService(Context.NOTIFICATION_SERVICE)).thenReturn(
+                notificationBinder);
+        when(ServiceManager.getService("package")).thenReturn(packageManagerBinder);
+
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivity.getSupportFragmentManager();
+        setUpFragment();
+        when(mFragment.requireContext()).thenReturn(mContext);
+        when(mContext.getApplicationContext()).thenReturn(mContext);
+        when(mContext.getSystemService(AppOpsManager.class)).thenReturn(mAppOpsManager);
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+        mAppInfoList = new ArrayList<>();
+        mAppInfoList.add(createApplicationInfo(ENABLED_PKG_NAME, true));
+        mAppInfoList.add(createApplicationInfo(DISABLED_PKG_NAME, false));
+        when(mMockPm.getInstalledApplications(anyInt())).thenReturn(mAppInfoList);
+
+        mResetButton = mActivity.getToolbar().getMenuItems().get(0);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void resetClicked_resetsNotificationsForApps() throws Throwable {
+        triggerResetButtonAndWaitForTask();
+
+        verify(mINotificationManager)
+                .setNotificationsEnabledForPackage(ENABLED_PKG_NAME, UID, true);
+        verify(mINotificationManager)
+                .setNotificationsEnabledForPackage(DISABLED_PKG_NAME, UID, true);
+    }
+
+    @Test
+    public void resetClicked_appEnabled_doesNotEnable() throws Throwable {
+        when(mMockPm.getApplicationEnabledSetting(ENABLED_PKG_NAME))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER);
+
+        triggerResetButtonAndWaitForTask();
+
+        verify(mMockPm, never()).setApplicationEnabledSetting(ENABLED_PKG_NAME,
+                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    @Test
+    public void resetClicked_appDisabled_doesEnable() throws Throwable {
+        when(mMockPm.getApplicationEnabledSetting(DISABLED_PKG_NAME))
+                .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER);
+
+        triggerResetButtonAndWaitForTask();
+
+        verify(mMockPm).setApplicationEnabledSetting(DISABLED_PKG_NAME,
+                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    @Test
+    public void resetClicked_resetsApplicationPreferences() throws Throwable {
+        triggerResetButtonAndWaitForTask();
+
+        verify(mIPackageManager).resetApplicationPreferences(anyInt());
+    }
+
+    @Test
+    public void resetClicked_resetsAllModes() throws Throwable {
+        triggerResetButtonAndWaitForTask();
+
+        verify(mAppOpsManager).resetAllModes();
+    }
+
+    private void triggerResetButtonAndWaitForTask() throws Throwable {
+        mActivityTestRule.runOnUiThread(() -> mResetButton.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        // wait for async task
+        PollingCheck.waitFor(
+                () -> mFragment.mResetTask.getStatus() == AsyncTask.Status.FINISHED);
+    }
+
+    private void setUpFragment() throws Throwable {
+        String resetPrefFragmentTag = "reset_app_pref_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(
+                            R.id.fragment_container, new ResetAppPrefFragment(),
+                            resetPrefFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ResetAppPrefFragment)
+                mFragmentManager.findFragmentByTag(resetPrefFragmentTag);
+        ExtendedMockito.spyOn(mFragment);
+    }
+
+    private ApplicationInfo createApplicationInfo(String pkgName, boolean enabled) {
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = pkgName;
+        applicationInfo.uid = UID;
+        applicationInfo.sourceDir = "";
+        applicationInfo.enabled = enabled;
+        return applicationInfo;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
new file mode 100644
index 0000000..9879748
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/** Unit test for {@link ResetEsimPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class ResetEsimPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private SwitchPreference mPreference;
+    private ResetEsimPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    // Store values for reset after test run
+    private int mDevelopmentSettingsEnabled;
+    private int mEuiccProvisioned;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private EuiccManager mMockEuiccManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // store before values
+        mDevelopmentSettingsEnabled = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        mEuiccProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.EUICC_PROVISIONED, 0);
+
+        when(mContext.getSystemService(Context.EUICC_SERVICE)).thenReturn(mMockEuiccManager);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceController = new ResetEsimPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, mDevelopmentSettingsEnabled);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED,
+                mEuiccProvisioned);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disabledEuiccManager_unsupportedOnDevice() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccNotProvisioned_unsupportedOnDevice() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccNotProvisioned_developer_available() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccProvisioned_available() {
+        when(mMockEuiccManager.isEnabled()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java b/tests/unit/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
new file mode 100644
index 0000000..bbf3763
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
@@ -0,0 +1,302 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+import static org.testng.Assert.assertThrows;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkPolicyManager;
+import android.net.Uri;
+import android.net.wifi.WifiManager;
+import android.os.AsyncTask;
+import android.os.RecoverySystem;
+import android.provider.Telephony;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.preference.PreferenceManager;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.settings.testutils.PollingCheck;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class ResetNetworkConfirmFragmentTest {
+    private static final String SUBSCRIBER_ID = "test_id";
+
+    private final Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private ResetNetworkConfirmFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+    private MenuItem mResetButton;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Mock
+    private ConnectivityManager mMockConnectivityManager;
+    @Mock
+    private WifiManager mMockWifiManager;
+    @Mock
+    private BluetoothManager mMockBluetoothManager;
+    @Mock
+    private BluetoothAdapter mMockBluetoothAdapter;
+    @Mock
+    private TelephonyManager mMockTelephonyManager;
+    @Mock
+    private NetworkPolicyManager mMockNetworkPolicyManager;
+    @Mock
+    private ContentResolver mMockContentResolver;
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+        when(mFragment.getApplicationContext()).thenReturn(mContext);
+        setNetworkSubscriptionId("123");
+        mResetButton = mActivity.getToolbar().getMenuItems().get(0);
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                RecoverySystem.class, withSettings().lenient()).startMocking();
+        when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
+                mMockConnectivityManager);
+        when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
+        when(mContext.getSystemService(Context.BLUETOOTH_SERVICE)).thenReturn(
+                mMockBluetoothManager);
+        when(mMockBluetoothManager.getAdapter()).thenReturn(mMockBluetoothAdapter);
+        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(
+                mMockTelephonyManager);
+        when(mMockTelephonyManager.getSubscriberId(anyInt())).then(invocation -> {
+            Object[] args = invocation.getArguments();
+            int subId = (Integer) args[0];
+            return subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID ? null : SUBSCRIBER_ID;
+        });
+        when(mContext.getSystemService(Context.NETWORK_POLICY_SERVICE)).thenReturn(
+                mMockNetworkPolicyManager);
+        when(mContext.getContentResolver()).thenReturn(mMockContentResolver);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_connectivityManagerReset() {
+        mResetButton.performClick();
+        verify(mMockConnectivityManager).factoryReset();
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_wifiManagerReset() {
+        mResetButton.performClick();
+        verify(mMockWifiManager).factoryReset();
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_bluetoothAdapterReset() {
+        mResetButton.performClick();
+        verify(mMockBluetoothAdapter).factoryReset();
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_cleanSmsRawTable() {
+        mResetButton.performClick();
+
+        ArgumentCaptor<Uri> argumentCaptor = ArgumentCaptor.forClass(Uri.class);
+        verify(mMockContentResolver, times(2)).delete(argumentCaptor.capture(), any(), any());
+        List<Uri> capturedUris = argumentCaptor.getAllValues();
+        Uri uri = getUriWithGivenPrefix(capturedUris, Telephony.Sms.CONTENT_URI);
+
+        assertThat(uri).isNotNull();
+    }
+
+    @Test
+    public void testResetButtonClick_euiccResetEnabled_euiccReset() throws Throwable {
+        setEuiccResetCheckbox(true);
+        mActivityTestRule.runOnUiThread(() -> mResetButton.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        // wait for async task
+        PollingCheck.waitFor(
+                () -> mFragment.mEraseEsimAsyncTask.getStatus() == AsyncTask.Status.FINISHED);
+
+        ExtendedMockito.verify(
+                () -> RecoverySystem.wipeEuiccData(any(), any()));
+    }
+
+    @Test
+    public void testResetButtonClick_euiccResetDisabled_euiccNotReset() throws Throwable {
+        setEuiccResetCheckbox(false);
+        mActivityTestRule.runOnUiThread(() -> mResetButton.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        ExtendedMockito.verify(
+                () -> RecoverySystem.wipeEuiccData(any(), any()), never());
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_nonIntegerNetworkSubscriptionId_numberExceptionError() {
+        setNetworkSubscriptionId("abc");
+        assertThrows(NumberFormatException.class, () -> mResetButton.performClick());
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_emptyNetworkSubscriptionId_telephonyNotReset() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+        verify(mMockTelephonyManager).factoryReset(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_validNetworkSubscriptionId_telephonyReset() {
+        mResetButton.performClick();
+        verify(mMockTelephonyManager).factoryReset(123);
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_emptyNetworkSubscriptionId_networkManagerNotReset() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+        verify(mMockNetworkPolicyManager).factoryReset(null);
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_validNetworkSubscriptionId_networkManagerReset() {
+        setNetworkSubscriptionId("123");
+        mResetButton.performClick();
+        verify(mMockNetworkPolicyManager).factoryReset(SUBSCRIBER_ID);
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_emptyNetworkSubscriptionId_noRestoreDefaultApn() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+
+        ArgumentCaptor<Uri> argumentCaptor = ArgumentCaptor.forClass(Uri.class);
+        verify(mMockContentResolver, times(2)).delete(argumentCaptor.capture(), any(), any());
+        List<Uri> capturedUris = argumentCaptor.getAllValues();
+        Uri uri = getUriWithGivenPrefix(capturedUris,
+                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
+
+        assertThat(uri).isNotNull();
+        assertThat(uri.toString().contains("subId/")).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void testResetButtonClick_validNetworkSubscriptionId_restoreDefaultApn() {
+        setNetworkSubscriptionId("123");
+        mResetButton.performClick();
+
+        ArgumentCaptor<Uri> argumentCaptor = ArgumentCaptor.forClass(Uri.class);
+        verify(mMockContentResolver, times(2)).delete(argumentCaptor.capture(), any(), any());
+        List<Uri> capturedUris = argumentCaptor.getAllValues();
+        Uri uri = getUriWithGivenPrefix(capturedUris,
+                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
+
+        assertThat(uri).isNotNull();
+        assertThat(uri.toString().contains("subId/123")).isTrue();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String resetNetworkConfirmFragmentTag = "reset_network_confirm_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new ResetNetworkConfirmFragment(),
+                            resetNetworkConfirmFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ResetNetworkConfirmFragment)
+                mFragmentManager.findFragmentByTag(resetNetworkConfirmFragmentTag);
+        ExtendedMockito.spyOn(mFragment);
+    }
+
+    private Uri getUriWithGivenPrefix(List<Uri> uris, String prefix) {
+        for (Uri uri : uris) {
+            if (uri.toString().startsWith(prefix)) return uri;
+        }
+        return null;
+    }
+
+    private Uri getUriWithGivenPrefix(List<Uri> uris, Uri prefix) {
+        for (Uri uri : uris) {
+            if (uri.isPathPrefixMatch(prefix)) return uri;
+        }
+        return null;
+    }
+
+    private void setEuiccResetCheckbox(boolean isChecked) {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
+                mContext.getString(R.string.pk_reset_esim), isChecked).commit();
+    }
+
+    private void setNetworkSubscriptionId(String id) {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(
+                mContext.getString(R.string.pk_reset_network_subscription), id).commit();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..fe3a5ec
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_NETWORK_RESET;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+/** Unit test for {@link ResetNetworkEntryPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class ResetNetworkEntryPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private Preference mPreference;
+    private ResetNetworkEntryPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .startMocking();
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new ResetNetworkEntryPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_available() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_restricted_disabledForUser() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+        when(mMockUserManager.hasUserRestriction(DISALLOW_NETWORK_RESET)).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetNetworkFragmentTest.java b/tests/unit/src/com/android/car/settings/system/ResetNetworkFragmentTest.java
new file mode 100644
index 0000000..11a1922
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetNetworkFragmentTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.car.settings.system.ResetNetworkFragment.REQUEST_CODE;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.content.Intent;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.security.CheckLockActivity;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.car.ui.toolbar.MenuItem;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ResetNetworkFragmentTest {
+    private ResetNetworkFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MenuItem mResetButton;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+        mResetButton = mActivity.getToolbar().getMenuItems().get(0);
+
+        doNothing().when(mFragment).startActivityForResult(any(), anyInt());
+    }
+
+    @Test
+    @UiThreadTest
+    public void onResetButtonPressed_launchesCheckLockActivity() {
+        mResetButton.performClick();
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mFragment).startActivityForResult(captor.capture(), eq(REQUEST_CODE));
+        Intent intent = captor.getValue();
+        assertThat(intent.getComponent().getClassName())
+                .isEqualTo(CheckLockActivity.class.getName());
+    }
+
+    @Test
+    @UiThreadTest
+    public void onActivityResult_launchesResetNetworkConfirmFragment() {
+        mFragment.onActivityResult(REQUEST_CODE, RESULT_OK, new Intent());
+        verify(mFragment).launchFragment(any(ResetNetworkConfirmFragment.class));
+    }
+
+    private void setUpFragment() throws Throwable {
+        String resetNetworkFragmentTag = "reset_network_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new ResetNetworkFragment(),
+                            resetNetworkFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (ResetNetworkFragment)
+                mFragmentManager.findFragmentByTag(resetNetworkFragmentTag);
+        ExtendedMockito.spyOn(mFragment);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetNetworkItemsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/ResetNetworkItemsPreferenceControllerTest.java
new file mode 100644
index 0000000..c76fff5
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetNetworkItemsPreferenceControllerTest.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class ResetNetworkItemsPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private ResetNetworkItemsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private PackageManager mMockPm;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new ResetNetworkItemsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_containsDefaultDescription() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ false,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_desc));
+    }
+
+    @Test
+    public void onCreate_noWifi_doesNotContainWifiText() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ false,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertDoesNotContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_wifi));
+    }
+
+    @Test
+    public void onCreate_noTelephony_doesNotContainTelephonyText() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ false,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertDoesNotContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_mobile));
+    }
+
+    @Test
+    public void onCreate_noBluetooth_doesNotContainBluetoothText() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ false,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertDoesNotContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_bluetooth));
+    }
+
+    @Test
+    public void onCreate_hasWifi_containsWifiText() {
+        setSystemFeatures(/* hasWifi= */ true, /* hasTelephony= */ false,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_wifi));
+    }
+
+    @Test
+    public void onCreate_hasTelephony_containsTelephonyText() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ true,
+                /* hasBluetooth= */ false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_mobile));
+    }
+
+    @Test
+    public void onCreate_hasBluetooth_containsBluetoothText() {
+        setSystemFeatures(/* hasWifi= */ false, /* hasTelephony= */ false,
+                /* hasBluetooth= */ true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertContainsString(mPreference.getTitle(),
+                mContext.getString(R.string.reset_network_item_bluetooth));
+    }
+
+    private void setSystemFeatures(boolean hasWifi, boolean hasTelephony, boolean hasBluetooth) {
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_WIFI)).thenReturn(hasWifi);
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)).thenReturn(hasTelephony);
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(hasBluetooth);
+    }
+
+    private void assertContainsString(CharSequence source, String pattern) {
+        assertThat(source).isNotNull();
+        String sourceString = source.toString();
+        assertThat(sourceString.contains(pattern)).isTrue();
+    }
+
+    private void assertDoesNotContainsString(CharSequence source, String pattern) {
+        assertThat(source).isNotNull();
+        String sourceString = source.toString();
+        assertThat(sourceString.contains(pattern)).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
new file mode 100644
index 0000000..3904068
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
@@ -0,0 +1,429 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static android.telephony.SubscriptionManager.MIN_SUBSCRIPTION_ID_VALUE;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit test for {@link ResetNetworkSubscriptionPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class ResetNetworkSubscriptionPreferenceControllerTest {
+    private static final int SUBID_1 = MIN_SUBSCRIPTION_ID_VALUE;
+    private static final int SUBID_2 = SUBID_1 + 1;
+    private static final int SUBID_3 = SUBID_2 + 1;
+    private static final int SUBID_4 = SUBID_3 + 1;
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private ResetNetworkSubscriptionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private PackageManager mMockPm;
+    @Mock
+    private SubscriptionManager mMockSubscriptionManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+        // Default to AVAILABLE status. Tests for this behavior will do their own setup.
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)).thenReturn(true);
+        when(mContext.getSystemService(SubscriptionManager.class))
+                .thenReturn(mMockSubscriptionManager);
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(null);
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                SubscriptionManager.class, withSettings().lenient()).startMocking();
+        // Default to having no defaults. Tests for this behavior will do their own setup.
+        when(SubscriptionManager.isUsableSubIdValue(anyInt())).thenCallRealMethod();
+        when(SubscriptionManager.getDefaultSubscriptionId()).thenReturn(INVALID_SUBSCRIPTION_ID);
+        when(SubscriptionManager.getDefaultSmsSubscriptionId()).thenReturn(INVALID_SUBSCRIPTION_ID);
+        when(SubscriptionManager.getDefaultVoiceSubscriptionId()).thenReturn(
+                INVALID_SUBSCRIPTION_ID);
+        when(SubscriptionManager.getDefaultDataSubscriptionId()).thenReturn(
+                INVALID_SUBSCRIPTION_ID);
+
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new ResetNetworkSubscriptionPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void getAvailabilityStatus_telephonyAvailable_available() {
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_telephonyNotAvailable_unsupportedOnDevice() {
+        when(mMockPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void refreshUi_nullSubscriptions_hidesPreference() {
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_nullSubscriptions_setsValue() {
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(
+                String.valueOf(INVALID_SUBSCRIPTION_ID));
+    }
+
+    @Test
+    public void refreshUi_noSubscriptions_hidesPreference() {
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(Collections.emptyList());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_noSubscriptions_setsValue() {
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(Collections.emptyList());
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(
+                String.valueOf(INVALID_SUBSCRIPTION_ID));
+    }
+
+    @Test
+    public void refreshUi_oneSubscription_hidesPreference() {
+        List<SubscriptionInfo> subscriptionInfoList = Collections.singletonList(
+                createSubInfo(SUBID_1, "sub1"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_oneSubscription_setsValue() {
+        List<SubscriptionInfo> subscriptionInfoList = Collections.singletonList(
+                createSubInfo(SUBID_1, "sub1"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
+    }
+
+    @Test
+    public void refreshUi_multipleSubscriptions_showsPreference() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_multipleSubscriptions_populatesEntries() {
+        String displayName1 = "sub1";
+        String displayName2 = "sub2";
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(
+                createSubInfo(SUBID_1, displayName1), createSubInfo(SUBID_2, displayName2));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(Arrays.asList(mPreference.getEntries())).containsExactly(displayName1,
+                displayName2);
+        assertThat(Arrays.asList(mPreference.getEntryValues())).containsExactly(
+                String.valueOf(SUBID_1),
+                String.valueOf(SUBID_2));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_fourthPriority_system() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(
+                createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
+                createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        setDefaultSubscriptionId(SUBID_4);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(String.valueOf(SUBID_4));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_thirdPriority_sms() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"), createSubInfo(SUBID_3, "sub3"),
+                createSubInfo(SUBID_4, "sub4"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        setDefaultSubscriptionId(SUBID_4);
+        setDefaultSmsSubscriptionId(SUBID_3);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(String.valueOf(SUBID_3));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_secondPriority_voice() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"), createSubInfo(SUBID_3, "sub3"),
+                createSubInfo(SUBID_4, "sub4"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        setDefaultSubscriptionId(SUBID_4);
+        setDefaultSmsSubscriptionId(SUBID_3);
+        setDefaultVoiceSubscriptionId(SUBID_2);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(String.valueOf(SUBID_2));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_firstPriority_data() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"), createSubInfo(SUBID_3, "sub3"),
+                createSubInfo(SUBID_4, "sub4"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+
+        setDefaultSubscriptionId(SUBID_4);
+        setDefaultSmsSubscriptionId(SUBID_3);
+        setDefaultVoiceSubscriptionId(SUBID_2);
+        setDefaultDataSubscriptionId(SUBID_1);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
+    }
+
+    @Test
+    public void refreshUi_title_fourthPriority_subscriptionNetworkIds() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                /* carrierName= */ "",
+                /* number= */ "");
+        // Multiple subscriptions so that preference is shown / title is set.
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(subInfo,
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+
+        mPreferenceController.refreshUi();
+
+        String title = mPreference.getTitle().toString();
+        assertThat(title).contains(String.valueOf(subInfo.getMcc()));
+        assertThat(title).contains(String.valueOf(subInfo.getMnc()));
+        assertThat(title).contains(String.valueOf(subInfo.getSimSlotIndex()));
+        assertThat(title).contains(String.valueOf(subInfo.getSubscriptionId()));
+    }
+
+    @Test
+    public void refreshUi_title_thirdPriority_subscriptionCarrierName() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                "carrierName",
+                /* number= */ "");
+        // Multiple subscriptions so that preference is shown / title is set.
+        // Multiple subscriptions so that preference is shown / title is set.
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(subInfo,
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(subInfo.getCarrierName());
+    }
+
+    @Test
+    public void refreshUi_title_secondPriority_subscriptionNumber() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                "carrierName",
+                "number");
+        // Multiple subscriptions so that preference is shown / title is set.
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(subInfo,
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(subInfo.getNumber());
+    }
+
+    @Test
+    public void refreshUi_title_firstPriority_subscriptionDisplayName() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                "displayName",
+                "carrierName",
+                "number");
+        // Multiple subscriptions so that preference is shown / title is set.
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(subInfo,
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(subInfo.getDisplayName());
+    }
+
+    @Test
+    public void handlePreferenceChanged_updatesTitle() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+        mPreferenceController.refreshUi();
+
+        mPreference.callChangeListener(String.valueOf(SUBID_2));
+
+        assertThat(mPreference.getTitle()).isEqualTo("sub2");
+    }
+
+    @Test
+    public void handlePreferenceChanged_returnsTrue() {
+        List<SubscriptionInfo> subscriptionInfoList = Arrays.asList(createSubInfo(SUBID_1, "sub1"),
+                createSubInfo(SUBID_2, "sub2"));
+        when(mMockSubscriptionManager.getActiveSubscriptionInfoList())
+                .thenReturn(subscriptionInfoList);
+        setDefaultDataSubscriptionId(SUBID_1);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceController.handlePreferenceChanged(mPreference,
+                String.valueOf(SUBID_2))).isTrue();
+    }
+
+    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
+    private SubscriptionInfo createSubInfo(int subId, String displayName) {
+        return createSubInfo(subId, displayName, "carrierName", "number");
+    }
+
+    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
+    private SubscriptionInfo createSubInfo(int subId, String displayName, String carrierName,
+            String number) {
+        // Hidden constructor so resort to mocking.
+        SubscriptionInfo subscriptionInfo = mock(SubscriptionInfo.class);
+        when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
+        when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
+        when(subscriptionInfo.getCarrierName()).thenReturn(carrierName);
+        when(subscriptionInfo.getNumber()).thenReturn(number);
+        when(subscriptionInfo.getSimSlotIndex()).thenReturn(111);
+        when(subscriptionInfo.getMcc()).thenReturn(222);
+        when(subscriptionInfo.getMnc()).thenReturn(333);
+        return subscriptionInfo;
+    }
+
+    private void setDefaultSubscriptionId(int id) {
+        when(SubscriptionManager.getDefaultSubscriptionId()).thenReturn(id);
+    }
+
+    private void setDefaultSmsSubscriptionId(int id) {
+        when(SubscriptionManager.getDefaultSmsSubscriptionId()).thenReturn(id);
+    }
+
+    private void setDefaultVoiceSubscriptionId(int id) {
+        when(SubscriptionManager.getDefaultVoiceSubscriptionId()).thenReturn(id);
+    }
+
+    private void setDefaultDataSubscriptionId(int id) {
+        when(SubscriptionManager.getDefaultDataSubscriptionId()).thenReturn(id);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/SinglePaneFactoryResetFragmentTest.java b/tests/unit/src/com/android/car/settings/system/SinglePaneFactoryResetFragmentTest.java
new file mode 100644
index 0000000..6edda45
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/SinglePaneFactoryResetFragmentTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.car.settings.system.FactoryResetFragment.CHECK_LOCK_REQUEST_CODE;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+public class SinglePaneFactoryResetFragmentTest
+        extends FactoryResetFragmentTestCase<SinglePaneTestActivity> {
+
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Override
+    ActivityTestRule<SinglePaneTestActivity> getActivityTestRule() {
+        return mActivityTestRule;
+    }
+
+    @Test
+    public void processActivityResult_resultOk_launchesActivity()
+            throws Throwable {
+        getActivityTestRule().runOnUiThread(() -> {
+            mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_OK, /* data= */ null);
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        mActivity.getStartActivityListener().assertCalled();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
new file mode 100644
index 0000000..96a788a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_PROFILE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.PersistableBundle;
+import android.os.UserManager;
+import android.telephony.CarrierConfigManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.Collections;
+
+/** Unit test for {@link SystemUpdatePreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class SystemUpdatePreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private SystemUpdatePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private PackageManager mMockPm;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(UserManager.class, withSettings().lenient())
+                .startMocking();
+        when(UserManager.get(mContext)).thenReturn(mMockUserManager);
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new SystemUpdatePreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_available() {
+        when(mMockUserManager.isAdminUser()).thenReturn(true);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        when(mMockUserManager.isAdminUser()).thenReturn(false);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_PROFILE);
+    }
+
+    @Test
+    public void onCreate_setsActivityLabelAsTitle() {
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.applicationInfo = applicationInfo;
+        activityInfo.packageName = "some.test.package";
+        activityInfo.name = "SomeActivity";
+
+        String label = "Activity Label";
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.nonLocalizedLabel = label;
+        resolveInfo.activityInfo = activityInfo;
+
+        Intent intent = new Intent();
+        when(mMockPm.queryIntentActivities(eq(intent), anyInt())).thenReturn(
+                Collections.singletonList(resolveInfo));
+        mPreference.setIntent(intent);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getTitle()).isEqualTo(label);
+    }
+
+    @Test
+    public void refreshUi_activityNotFound_hidesPreference() {
+        mPreference.setIntent(new Intent());
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void preferenceClicked_triggersClientInitiatedAction() {
+        // Arrange
+        String action = "action";
+        String key = "key";
+        String value = "value";
+
+        PersistableBundle config = new PersistableBundle();
+        config.putBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL, true);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING, action);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING, key);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING, value);
+
+        CarrierConfigManager mockConfigManager = mock(CarrierConfigManager.class);
+        when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(mockConfigManager);
+        when(mockConfigManager.getConfig()).thenReturn(config);
+        Context mockApplicationContext = mock(Context.class);
+        when(mContext.getApplicationContext()).thenReturn(mockApplicationContext);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+
+        // Act
+        mPreference.performClick();
+
+        // Assert
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+        verify(mockApplicationContext).sendBroadcast(captor.capture());
+        Intent broadcast = captor.getValue();
+        assertThat(broadcast.getAction()).isEqualTo(action);
+        assertThat(broadcast.getStringExtra(key)).isEqualTo(value);
+    }
+
+    @Test
+    public void preferenceClicked_handledReturnsFalse() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        assertThat(mPreference.getOnPreferenceClickListener().onPreferenceClick(
+                mPreference)).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/hardwareinfo/DeviceModelPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/hardwareinfo/DeviceModelPreferenceControllerTest.java
new file mode 100644
index 0000000..8e9cc1b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/hardwareinfo/DeviceModelPreferenceControllerTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.hardwareinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.settingslib.DeviceInfoUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class DeviceModelPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private DeviceModelPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new DeviceModelPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        String deviceModel = Build.MODEL + DeviceInfoUtils.getMsvSuffix();
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(deviceModel);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
new file mode 100644
index 0000000..705635c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.hardwareinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class HardwareRevisionPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private HardwareRevisionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new HardwareRevisionPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                SystemProperties.get("ro.boot.hardware.revision"));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/hardwareinfo/SerialNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..d7f34a0
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/hardwareinfo/SerialNumberPreferenceControllerTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.hardwareinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class SerialNumberPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private SerialNumberPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = new SerialNumberPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_setsSummary() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.getSummary()).isEqualTo(Build.getSerial());
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
new file mode 100644
index 0000000..ddc3e3f
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.legal;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+
+import org.junit.runner.RunWith;
+
+/** Unit test for {@link LegalPreferenceController}. */
+@RunWith(AndroidJUnit4.class)
+public class LegalPreferenceControllerTest extends LegalPreferenceControllerTestCase {
+    @Override
+    protected LegalPreferenceController getPreferenceController() {
+        return new TestLegalPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Override
+    protected String getIntentAction() {
+        return "test_intent";
+    }
+
+    private static class TestLegalPreferenceController extends LegalPreferenceController {
+        private static final Intent INTENT = new Intent("test_intent");
+
+        TestLegalPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Intent getIntent() {
+            return INTENT;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTestCase.java b/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTestCase.java
new file mode 100644
index 0000000..853b793
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/legal/LegalPreferenceControllerTestCase.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.legal;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public abstract class LegalPreferenceControllerTestCase {
+    private static final String TEST_LABEL = "test_label";
+    private static final String TEST_PACKAGE_NAME = "com.android.car.settings.testutils";
+    private static final String TEST_ACTIVITY_NAME = "BaseTestActivity";
+
+    private LifecycleOwner mLifecycleOwner;
+    private Preference mPreference;
+    private LegalPreferenceController mPreferenceController;
+
+    protected Context mContext = spy(ApplicationProvider.getApplicationContext());
+    protected CarUxRestrictions mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */
+            true, CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+    @Mock
+    protected FragmentController mFragmentController;
+    @Mock
+    private PackageManager mMockPm;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mContext.getPackageManager()).thenReturn(mMockPm);
+
+        mPreference = new Preference(mContext);
+        mPreferenceController = getPreferenceController();
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    protected abstract LegalPreferenceController getPreferenceController();
+
+    protected abstract String getIntentAction();
+
+    @Test
+    public void getIntent_shouldUseRightIntent() {
+        Intent intent = mPreferenceController.getIntent();
+        assertThat(intent.getAction()).isEqualTo(getIntentAction());
+    }
+
+    @Test
+    public void getAvailabilityStatus_systemApp_shouldReturnAvailable() {
+        List<ResolveInfo> list = new ArrayList<>();
+        list.add(getTestResolveInfo(/* isSystemApp= */ true));
+        when(mMockPm.queryIntentActivities(any(Intent.class), anyInt()))
+                .thenReturn(list);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notSystemApp_shouldReturnUnsupported() {
+        List<ResolveInfo> list = new ArrayList<>();
+        list.add(getTestResolveInfo(/* isSystemApp= */ false));
+        when(mMockPm.queryIntentActivities(any(Intent.class), anyInt()))
+                .thenReturn(list);
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(UNSUPPORTED_ON_DEVICE);
+
+        when(mMockPm.queryIntentActivities(any(Intent.class), anyInt())).thenReturn(null);
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_intentResolvesToNull_shouldReturnUnsupported() {
+        when(mMockPm.queryIntentActivities(eq(mPreferenceController.getIntent()), anyInt()))
+                .thenReturn(Collections.emptyList());
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void onCreate_intentResolvesToActivity_isVisible() {
+        Intent intent = mPreferenceController.getIntent();
+
+        List<ResolveInfo> list = new ArrayList<>();
+        list.add(getTestResolveInfo(/* isSystemApp= */ true));
+
+        when(mMockPm.queryIntentActivities(eq(intent), anyInt())).thenReturn(list);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onCreate_intentResolvesToActivity_updatesTitle() {
+        Intent intent = mPreferenceController.getIntent();
+
+        List<ResolveInfo> list = new ArrayList<>();
+        list.add(getTestResolveInfo(/* isSystemApp= */ true));
+
+        when(mMockPm.queryIntentActivities(eq(intent), anyInt())).thenReturn(list);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getTitle()).isEqualTo(TEST_LABEL);
+    }
+
+    @Test
+    public void onCreate_intentResolvesToActivity_updatesIntentToSpecificActivity() {
+        Intent intent = mPreferenceController.getIntent();
+
+        List<ResolveInfo> list = new ArrayList<>();
+        list.add(getTestResolveInfo(/* isSystemApp= */ true));
+
+        when(mMockPm.queryIntentActivities(eq(intent), anyInt())).thenReturn(list);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.getIntent().getComponent().flattenToString()).isEqualTo(
+                TEST_PACKAGE_NAME + "/" + TEST_ACTIVITY_NAME);
+    }
+
+    /**
+     * Returns a ResolveInfo object for testing
+     *
+     * @param isSystemApp If true, the application is a system app.
+     */
+    private ResolveInfo getTestResolveInfo(boolean isSystemApp) {
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = TEST_PACKAGE_NAME;
+        activityInfo.name = TEST_ACTIVITY_NAME;
+        activityInfo.applicationInfo = new ApplicationInfo();
+        if (isSystemApp) {
+            activityInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        }
+
+        ResolveInfo resolveInfo = new ResolveInfo() {
+            @Override
+            public CharSequence loadLabel(PackageManager pm) {
+                return TEST_LABEL;
+            }
+        };
+        resolveInfo.activityInfo = activityInfo;
+        return resolveInfo;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/legal/TermsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/legal/TermsPreferenceControllerTest.java
new file mode 100644
index 0000000..9cc0776
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/legal/TermsPreferenceControllerTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.legal;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TermsPreferenceControllerTest extends LegalPreferenceControllerTestCase {
+    @Override
+    protected LegalPreferenceController getPreferenceController() {
+        return new TermsPreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Override
+    protected String getIntentAction() {
+        return "android.settings.TERMS";
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceControllerTest.java
new file mode 100644
index 0000000..adf2eb1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceControllerTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.legal;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class ThirdPartyLicensePreferenceControllerTest extends LegalPreferenceControllerTestCase {
+    @Override
+    protected LegalPreferenceController getPreferenceController() {
+        return new ThirdPartyLicensePreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Override
+    protected String getIntentAction() {
+        return "android.settings.THIRD_PARTY_LICENSE";
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/system/legal/WebViewLicensePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/system/legal/WebViewLicensePreferenceControllerTest.java
new file mode 100644
index 0000000..e646ce3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/system/legal/WebViewLicensePreferenceControllerTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2021 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.car.settings.system.legal;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class WebViewLicensePreferenceControllerTest extends LegalPreferenceControllerTestCase {
+    @Override
+    protected LegalPreferenceController getPreferenceController() {
+        return new WebViewLicensePreferenceController(mContext,
+                "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Override
+    protected String getIntentAction() {
+        return "android.settings.WEBVIEW_LICENSE";
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/BaseCarSettingsTestActivity.java b/tests/unit/src/com/android/car/settings/testutils/BaseCarSettingsTestActivity.java
new file mode 100644
index 0000000..2111ec8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/BaseCarSettingsTestActivity.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import android.content.Intent;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+public class BaseCarSettingsTestActivity extends BaseCarSettingsActivity {
+
+    private final TestEventListener<Intent> mStartActivityListener = new TestEventListener<>();
+    private boolean mOnBackPressedFlag;
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return null;
+    }
+
+    @Override
+    public void onBackPressed() {
+        mOnBackPressedFlag = true;
+        super.onBackPressed();
+    }
+
+    @Override
+    public void startActivity(Intent intent) {
+        mStartActivityListener.accept(intent);
+        super.startActivity(intent);
+    }
+
+    /**
+     * Gets a boolean flag indicating whether onBackPressed has been called.
+     *
+     * @return {@code true} if onBackPressed called, {@code false} otherwise.
+     */
+    public boolean getOnBackPressedFlag() {
+        return mOnBackPressedFlag;
+    }
+
+    /**
+     * Clear the boolean flag for onBackPressed by setting it to false.
+     */
+    public void clearOnBackPressedFlag() {
+        mOnBackPressedFlag = false;
+    }
+
+    /**
+     * Gets an event listener for {@link #startActivity(Intent)}
+     */
+    public TestEventListener<Intent> getStartActivityListener() {
+        return mStartActivityListener;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/BaseTestSettingsFragment.java b/tests/unit/src/com/android/car/settings/testutils/BaseTestSettingsFragment.java
new file mode 100644
index 0000000..307c4ef
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/BaseTestSettingsFragment.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import android.car.drivingstate.CarUxRestrictions;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+public class BaseTestSettingsFragment extends SettingsFragment {
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.test_preference_screen;
+    }
+
+    @Override
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+        mCarUxRestrictions = restrictionInfo;
+    }
+
+    public CarUxRestrictions getUxRestrictions() {
+        return mCarUxRestrictions;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/BluetoothTestUtils.java b/tests/unit/src/com/android/car/settings/testutils/BluetoothTestUtils.java
new file mode 100644
index 0000000..04fb5e1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/BluetoothTestUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2020 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.car.settings.testutils;
+
+import static junit.framework.Assert.fail;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Collection of helper methods for testing Bluetooth.
+ */
+public class BluetoothTestUtils {
+
+    private static final int BLUETOOTH_TOGGLE_TIMEOUT = 30; // in seconds
+    private static final IntentFilter STATE_INTENT_FILTER = new IntentFilter(
+            BluetoothAdapter.ACTION_STATE_CHANGED);
+
+    /**
+     * Set the default bluetooth adapter state.
+     *
+     * Because the adapter isn't enabled/disabled immediately after calling enable or disable,
+     * this helper function will listen and wait for the state to change before returning (or will
+     * fail upon timeout).
+     */
+    public static void setBluetoothState(Context context, boolean enable) {
+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+        if (adapter.isEnabled() == enable) {
+            // state is already correct
+            return;
+        }
+        CountDownLatch latch = new CountDownLatch(1);
+        LatchBroadcastReceiver receiver = new LatchBroadcastReceiver(latch, enable);
+        context.registerReceiver(receiver, STATE_INTENT_FILTER);
+        if (enable) {
+            adapter.enable();
+        } else {
+            adapter.disable();
+        }
+        try {
+            latch.await(BLUETOOTH_TOGGLE_TIMEOUT, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            fail("Unable to toggle bluetooth");
+        } finally {
+            context.unregisterReceiver(receiver);
+        }
+        if (adapter.isEnabled() != enable) {
+            // failed to toggle
+            fail("Unable to toggle bluetooth");
+        }
+    }
+
+    private static class LatchBroadcastReceiver extends BroadcastReceiver {
+        private final CountDownLatch mLatch;
+        private final boolean mEnable;
+
+        private LatchBroadcastReceiver(CountDownLatch latch, boolean enable) {
+            mLatch = latch;
+            mEnable = enable;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
+            if (mEnable && state == BluetoothAdapter.STATE_ON) {
+                mLatch.countDown();
+            } else if (!mEnable && state == BluetoothAdapter.STATE_OFF) {
+                mLatch.countDown();
+            }
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/DialogTestUtils.java b/tests/unit/src/com/android/car/settings/testutils/DialogTestUtils.java
new file mode 100644
index 0000000..71f489c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/DialogTestUtils.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.fragment.app.DialogFragment;
+
+/**
+ * Helper methods for DialogFragment testing.
+ */
+public class DialogTestUtils {
+    private DialogTestUtils() {
+    }
+
+    /**
+     * Invokes onClick on the dialog's positive button.
+     */
+    public static void clickPositiveButton(DialogFragment dialogFragment) {
+        Button positiveButton = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.button1);
+        positiveButton.callOnClick();
+    }
+
+    /**
+     * Invokes onClick on the dialog's negative button.
+     */
+    public static void clickNegativeButton(DialogFragment dialogFragment) {
+        Button negativeButton = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.button2);
+        negativeButton.callOnClick();
+    }
+
+    /**
+     * Gets dialog's title.
+     */
+    public static String getTitle(DialogFragment dialogFragment) {
+        TextView titleView = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.alertTitle);
+        return titleView.getText().toString();
+    }
+
+    public static String getMessage(DialogFragment dialogFragment) {
+        TextView messageView = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.message);
+        return messageView.getText().toString();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/DualPaneTestActivity.java b/tests/unit/src/com/android/car/settings/testutils/DualPaneTestActivity.java
new file mode 100644
index 0000000..89cf6b3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/DualPaneTestActivity.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+/**
+ * Same as {@link BaseCarSettingsTestActivity} but always dual-pane (via manifest meta-data).
+ */
+public class DualPaneTestActivity extends BaseCarSettingsTestActivity {
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/EmptySettingsFragment.java b/tests/unit/src/com/android/car/settings/testutils/EmptySettingsFragment.java
new file mode 100644
index 0000000..6ccec65
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/EmptySettingsFragment.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import com.android.car.settings.R;
+
+public class EmptySettingsFragment extends BaseTestSettingsFragment {
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.empty_preference_screen;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/PollingCheck.java b/tests/unit/src/com/android/car/settings/testutils/PollingCheck.java
new file mode 100644
index 0000000..0b64557
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/PollingCheck.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import junit.framework.Assert;
+
+import java.util.concurrent.Callable;
+import java.util.function.BooleanSupplier;
+
+public abstract class PollingCheck {
+    private static final long TIME_SLICE = 50;
+    private static final long DEFAULT_TIMEOUT = 5_000;
+    private static final String DEFAULT_ERROR_MESSAGE = "unexpected timeout";
+
+    private final long mTimeout;
+    private final String mErrorMessage;
+
+    public interface PollingCheckCondition {
+        boolean canProceed();
+    }
+
+    public PollingCheck() {
+        this(DEFAULT_TIMEOUT, DEFAULT_ERROR_MESSAGE);
+    }
+
+    public PollingCheck(long timeout) {
+        this(timeout, DEFAULT_ERROR_MESSAGE);
+    }
+
+    public PollingCheck(long timeout, String errorMessage) {
+        mTimeout = timeout;
+        mErrorMessage = errorMessage;
+    }
+
+    protected abstract boolean check();
+
+    public void run() {
+        if (check()) {
+            return;
+        }
+
+        long timeout = mTimeout;
+        while (timeout > 0) {
+            try {
+                Thread.sleep(TIME_SLICE);
+            } catch (InterruptedException e) {
+                Assert.fail("unexpected InterruptedException");
+            }
+
+            if (check()) {
+                return;
+            }
+
+            timeout -= TIME_SLICE;
+        }
+
+        Assert.assertTrue(mErrorMessage, check());
+    }
+
+    public static void check(CharSequence message, long timeout, Callable<Boolean> condition)
+            throws Exception {
+        while (timeout > 0) {
+            if (condition.call()) {
+                return;
+            }
+
+            Thread.sleep(TIME_SLICE);
+            timeout -= TIME_SLICE;
+        }
+
+        Assert.fail(message.toString());
+    }
+
+    public static void waitFor(final PollingCheckCondition condition) {
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return condition.canProceed();
+            }
+        }.run();
+    }
+
+    public static void waitFor(long timeout, final PollingCheckCondition condition) {
+        new PollingCheck(timeout) {
+            @Override
+            protected boolean check() {
+                return condition.canProceed();
+            }
+        }.run();
+    }
+
+    public static void waitFor(long timeout, BooleanSupplier condition, String errorMessage) {
+        new PollingCheck(timeout, errorMessage) {
+            @Override
+            protected boolean check() {
+                return condition.getAsBoolean();
+            }
+        }.run();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/ResourceTestUtils.java b/tests/unit/src/com/android/car/settings/testutils/ResourceTestUtils.java
index 864d683..0fccee5 100644
--- a/tests/unit/src/com/android/car/settings/testutils/ResourceTestUtils.java
+++ b/tests/unit/src/com/android/car/settings/testutils/ResourceTestUtils.java
@@ -26,4 +26,14 @@
         return context.getResources().getString(context.getResources().getIdentifier(
                 name, /* type= */ "string", context.getPackageName()));
     }
+
+    /**
+     * Retrieve a formatted resource string from the current package based on a name identifier,
+     * substituting the format arguments as defined in {@link java.util.Formatter} and
+     * {@link java.lang.String#format}.
+     */
+    public static String getString(Context context, String name, Object... formatArgs) {
+        return context.getResources().getString(context.getResources().getIdentifier(
+                name, /* type= */ "string", context.getPackageName()), formatArgs);
+    }
 }
diff --git a/tests/unit/src/com/android/car/settings/testutils/RootTestSettingsFragment.java b/tests/unit/src/com/android/car/settings/testutils/RootTestSettingsFragment.java
new file mode 100644
index 0000000..7b7f95e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/RootTestSettingsFragment.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.testutils;
+
+import android.os.Bundle;
+
+import com.android.car.settings.R;
+import com.android.car.ui.toolbar.NavButtonMode;
+import com.android.car.ui.toolbar.ToolbarController;
+
+/**
+ * Empty root fragment.
+ */
+public class RootTestSettingsFragment extends BaseTestSettingsFragment {
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.test_base_settings_fragment;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        ToolbarController toolbar = getToolbar();
+        if (toolbar != null) {
+            // If the fragment is root, change the back button to settings icon.
+            if (getContext().getResources().getBoolean(R.bool.config_is_root_fragment_root)) {
+                toolbar.setNavButtonMode(NavButtonMode.DISABLED);
+                toolbar.setLogo(getContext().getResources()
+                        .getBoolean(R.bool.config_show_settings_root_exit_icon)
+                        ? R.drawable.ic_launcher_settings
+                        : 0);
+            } else {
+                toolbar.setNavButtonMode(NavButtonMode.BACK);
+            }
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/SinglePaneTestActivity.java b/tests/unit/src/com/android/car/settings/testutils/SinglePaneTestActivity.java
new file mode 100644
index 0000000..ed7fe5e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/SinglePaneTestActivity.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+/**
+ * {@link BaseCarSettingsTestActivity} instance that always single-pane (via manifest meta-data).
+ */
+public class SinglePaneTestActivity extends BaseCarSettingsTestActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        // Specifying an initial fragment for single pane testing since it can't be launched later
+        // (because that will launch a new activity)
+        return new BaseTestSettingsFragment();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestEventListener.java b/tests/unit/src/com/android/car/settings/testutils/TestEventListener.java
new file mode 100644
index 0000000..4387c49
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestEventListener.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import static junit.framework.Assert.assertFalse;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import androidx.annotation.Nullable;
+
+/**
+ * Test listener that can be used to spy on, control responses from,
+ * and make assertions against values tested.
+ */
+public class TestEventListener<T> {
+
+    private @Nullable T mLastValue;
+    private boolean mWasCalled;
+
+    public void accept(T event) {
+        mWasCalled = true;
+        mLastValue = event;
+    }
+
+    public void assertLastArgument(@Nullable T expected) {
+        assertEquals(expected, mLastValue);
+    }
+
+    public void assertCalled() {
+        assertTrue(mWasCalled);
+    }
+
+    public void assertNotCalled() {
+        assertFalse(mWasCalled);
+    }
+
+    @Nullable
+    public T getLastValue() {
+        return mLastValue;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestFinishActivity.java b/tests/unit/src/com/android/car/settings/testutils/TestFinishActivity.java
new file mode 100644
index 0000000..68965ea
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestFinishActivity.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
+/**
+ * Test activity that will finish after being created.
+ */
+public class TestFinishActivity extends FragmentActivity {
+
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        finish();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestLifecycleOwner.java b/tests/unit/src/com/android/car/settings/testutils/TestLifecycleOwner.java
index 9baced2..45aa4fd 100644
--- a/tests/unit/src/com/android/car/settings/testutils/TestLifecycleOwner.java
+++ b/tests/unit/src/com/android/car/settings/testutils/TestLifecycleOwner.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment1.java b/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment1.java
new file mode 100644
index 0000000..32ca80d
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment1.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+public class TestSettingsFragment1 extends BaseTestSettingsFragment {
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment2.java b/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment2.java
new file mode 100644
index 0000000..6632af1
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestSettingsFragment2.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+public class TestSettingsFragment2 extends BaseTestSettingsFragment {
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestSettingsScreenLockActivity.java b/tests/unit/src/com/android/car/settings/testutils/TestSettingsScreenLockActivity.java
new file mode 100644
index 0000000..ebb56d3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestSettingsScreenLockActivity.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import com.android.car.settings.security.CheckLockListener;
+import com.android.internal.widget.LockscreenCredential;
+
+public class TestSettingsScreenLockActivity extends BaseCarSettingsTestActivity implements
+        CheckLockListener {
+
+    @Override
+    public void onLockVerified(LockscreenCredential lock) {
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/testutils/TestTopLevelMenuFragment.java b/tests/unit/src/com/android/car/settings/testutils/TestTopLevelMenuFragment.java
new file mode 100644
index 0000000..76b184c
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/testutils/TestTopLevelMenuFragment.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2021 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.car.settings.testutils;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.TopLevelMenuFragment;
+
+public class TestTopLevelMenuFragment extends TopLevelMenuFragment {
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.test_top_level_menu_fragment;
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
new file mode 100644
index 0000000..aec8bc3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2021 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.car.settings.tts;
+
+import static android.provider.Settings.Secure.TTS_DEFAULT_SYNTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+public class PreferredEngineOptionsPreferenceControllerTest {
+    private static final TextToSpeech.EngineInfo OTHER_ENGINE_INFO = new TextToSpeech.EngineInfo();
+    private static final TextToSpeech.EngineInfo CURRENT_ENGINE_INFO =
+            new TextToSpeech.EngineInfo();
+
+    static {
+        OTHER_ENGINE_INFO.label = "Test Engine 1";
+        OTHER_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine1";
+        CURRENT_ENGINE_INFO.label = "Test Engine 2";
+        CURRENT_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine2";
+    }
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferredEngineOptionsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private String mDefaultTtsEngine;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private TtsEngines mEnginesHelper;
+    @Mock
+    private TextToSpeech mTextToSpeech;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mDefaultTtsEngine = Settings.Secure.getString(mContext.getContentResolver(),
+                TTS_DEFAULT_SYNTH);
+
+        when(mEnginesHelper.getEngines()).thenReturn(
+                Arrays.asList(OTHER_ENGINE_INFO, CURRENT_ENGINE_INFO));
+        when(mEnginesHelper.getEngineInfo(OTHER_ENGINE_INFO.name)).thenReturn(OTHER_ENGINE_INFO);
+        when(mEnginesHelper.getEngineInfo(CURRENT_ENGINE_INFO.name)).thenReturn(
+                CURRENT_ENGINE_INFO);
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        mPreferenceController = new TestPreferredEngineOptionsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+    }
+
+    @After
+    @UiThreadTest
+    public void tearDown() {
+        Settings.Secure.putString(mContext.getContentResolver(), TTS_DEFAULT_SYNTH,
+                mDefaultTtsEngine);
+    }
+
+    @Test
+    public void onCreate_populatesGroup() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void refreshUi_currentEngineInfoSummarySet() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+
+        assertThat(
+                mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name).getSummary()).isEqualTo(
+                mContext.getString(R.string.text_to_speech_current_engine));
+    }
+
+    @Test
+    public void refreshUi_otherEngineInfoSummaryEmpty() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.refreshUi();
+
+        assertThat(mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name).getSummary()).isEqualTo(
+                "");
+    }
+
+    @Test
+    public void performClick_currentEngine_returnFalse() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        Preference currentEngine = mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name);
+        assertThat(currentEngine.getOnPreferenceClickListener().onPreferenceClick(
+                currentEngine)).isFalse();
+    }
+
+    @Test
+    public void performClick_otherEngine_returnTrue() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        assertThat(otherEngine.getOnPreferenceClickListener().onPreferenceClick(
+                otherEngine)).isTrue();
+    }
+
+    @Test
+    public void performClick_otherEngine_initSuccess_changeCurrentEngine() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        Settings.Secure.putString(mContext.getContentResolver(), TTS_DEFAULT_SYNTH,
+                CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        otherEngine.performClick();
+
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(OTHER_ENGINE_INFO.name);
+        mPreferenceController.onUpdateEngine(TextToSpeech.SUCCESS);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(), TTS_DEFAULT_SYNTH))
+                .isEqualTo(OTHER_ENGINE_INFO.name);
+    }
+
+    @Test
+    public void performClick_otherEngine_initFail_keepCurrentEngine() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        Settings.Secure.putString(mContext.getContentResolver(), TTS_DEFAULT_SYNTH,
+                CURRENT_ENGINE_INFO.name);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        otherEngine.performClick();
+
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(OTHER_ENGINE_INFO.name);
+        mPreferenceController.onUpdateEngine(TextToSpeech.ERROR);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(), TTS_DEFAULT_SYNTH))
+                .isEqualTo(CURRENT_ENGINE_INFO.name);
+    }
+
+    private class TestPreferredEngineOptionsPreferenceController
+            extends PreferredEngineOptionsPreferenceController {
+
+        TestPreferredEngineOptionsPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        TtsEngines createEnginesHelper() {
+            return mEnginesHelper;
+        }
+
+        @Override
+        TextToSpeech createTts(TextToSpeech.OnInitListener listener, String engine) {
+            return mTextToSpeech;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
new file mode 100644
index 0000000..669cce7
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsBasePreferenceControllerTest {
+
+    private static final int TEST_PROPERTY_ID = -1;
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.YEAR, UnitsMap.SECS, UnitsMap.NANO_SECS};
+    private static final Unit DEFAULT_UNIT = UnitsMap.YEAR;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsBasePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        doNothing().when(mCarUnitsManager).registerCarServiceListener(any());
+        when(mCarUnitsManager.getUnitsSupportedByProperty(TEST_PROPERTY_ID))
+                .thenReturn(AVAILABLE_UNITS);
+        updateDefaultUnit(DEFAULT_UNIT);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsBasePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCreate_registersCarServiceListener() {
+        verify(mCarUnitsManager)
+                .registerCarServiceListener(mPreferenceController.mOnCarServiceListener);
+    }
+
+    @Test
+    public void onCreate_preferenceIsConditionallyUnavailable() {
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_availableUnitsExist_preferenceIsAvailable() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+
+        assertThat(mPreferenceController.getAvailabilityStatus()).isEqualTo(
+                PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_noAvailableUnits_preferenceIsConditionallyUnavailable() {
+        when(mCarUnitsManager.getUnitsSupportedByProperty(TEST_PROPERTY_ID))
+                .thenReturn(null);
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+
+        assertThat(mPreferenceController.getAvailabilityStatus())
+                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsEntriesOfSupportedUnits() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsSupportedUnitsIdsAsEntryValues() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntryValues = mPreferenceController.getIdsOfSupportedUnits();
+
+        assertThat(mPreference.getEntryValues()).isEqualTo(expectedEntryValues);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsUnitBeingUsedAsPreferenceValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        String expectedValue = Integer.toString(DEFAULT_UNIT.getId());
+
+        assertThat(mPreference.getValue()).isEqualTo(expectedValue);
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(UnitsMap.SECS.getId()));
+
+        assertThat(mCarUnitsManager.getUnitUsedByProperty(TEST_PROPERTY_ID))
+                .isEqualTo(UnitsMap.SECS);
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = UnitsMap.SECS;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitAbbreviationAsSummary() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = UnitsMap.SECS;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    @Test
+    public void onDestroy_disconnectsCarUnitsManager() {
+        mPreferenceController.onDestroy(mLifecycleOwner);
+
+        verify(mCarUnitsManager).disconnect();
+    }
+
+    @Test
+    public void onDestroy_unregistersCarServiceListener() {
+        mPreferenceController.onDestroy(mLifecycleOwner);
+
+        verify(mCarUnitsManager).unregisterCarServiceListener();
+    }
+
+    private void updateDefaultUnit(Unit unit) {
+        when(mCarUnitsManager.getUnitUsedByProperty(TEST_PROPERTY_ID))
+                .thenReturn(unit);
+    }
+
+    private class TestUnitsBasePreferenceController extends UnitsBasePreferenceController {
+
+        private TestUnitsBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected int getPropertyId() {
+            return TEST_PROPERTY_ID;
+        }
+
+
+        @Override
+        protected Class<ListPreference> getPreferenceType() {
+            return ListPreference.class;
+        }
+
+        @Override
+        public boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+            int unitId = Integer.parseInt((String) newValue);
+            Unit newUnit = UnitsMap.MAP.get(unitId);
+            if (newUnit != null) {
+                updateDefaultUnit(newUnit);
+            }
+            return super.handlePreferenceChanged(preference, newValue);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsDistancePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsDistancePreferenceControllerTest.java
new file mode 100644
index 0000000..6df5699
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsDistancePreferenceControllerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsDistancePreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS = {UnitsMap.MILE, UnitsMap.KILOMETER};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsDistancePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsDistancePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.DISTANCE_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(VehiclePropertyIds.DISTANCE_DISPLAY_UNITS,
+                newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    private class TestUnitsDistancePreferenceController extends
+            UnitsDistancePreferenceController {
+
+        public TestUnitsDistancePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceControllerTest.java
new file mode 100644
index 0000000..152b2f8
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceControllerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsEnergyConsumptionPreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.KILOWATT_HOUR, UnitsMap.WATT_HOUR};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsEnergyConsumptionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsEnergyConsumptionPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.EV_BATTERY_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()[0].toString()).isEqualTo(
+                mPreferenceController.generateEntryStringFromUnit(AVAILABLE_UNITS[0]));
+        assertThat(mPreference.getEntries()[1].toString()).isEqualTo(
+                mPreferenceController.generateEntryStringFromUnit(AVAILABLE_UNITS[1]));
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(
+                VehiclePropertyIds.EV_BATTERY_DISPLAY_UNITS,
+                newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString()).isEqualTo(
+                mPreferenceController.generateSummaryFromUnit(newUnit));
+    }
+
+    private class TestUnitsEnergyConsumptionPreferenceController extends
+            UnitsEnergyConsumptionPreferenceController {
+
+        public TestUnitsEnergyConsumptionPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceControllerTest.java
new file mode 100644
index 0000000..9256c30
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceControllerTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsFuelConsumptionPreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.US_GALLON, UnitsMap.IMPERIAL_GALLON};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsFuelConsumptionPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsFuelConsumptionPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()[0].toString()).isEqualTo(
+                mPreferenceController.generateEntryStringFromUnit(AVAILABLE_UNITS[0]));
+        assertThat(mPreference.getEntries()[1].toString()).isEqualTo(
+                mPreferenceController.generateEntryStringFromUnit(AVAILABLE_UNITS[1]));
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(
+                VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS,
+                newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString()).isEqualTo(
+                mPreferenceController.generateSummaryFromUnit(newUnit)
+        );
+    }
+
+    private class TestUnitsFuelConsumptionPreferenceController extends
+            UnitsFuelConsumptionPreferenceController {
+
+        public TestUnitsFuelConsumptionPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsPressurePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsPressurePreferenceControllerTest.java
new file mode 100644
index 0000000..b44af36
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsPressurePreferenceControllerTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsPressurePreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.PSI, UnitsMap.BAR};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsPressurePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsPressurePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.TIRE_PRESSURE_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(
+                VehiclePropertyIds.TIRE_PRESSURE_DISPLAY_UNITS,
+                newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    private class TestUnitsPressurePreferenceController extends
+            UnitsPressurePreferenceController {
+
+        public TestUnitsPressurePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsSpeedPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsSpeedPreferenceControllerTest.java
new file mode 100644
index 0000000..9c6de35
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsSpeedPreferenceControllerTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsSpeedPreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.MILES_PER_HOUR, UnitsMap.KILOMETERS_PER_HOUR};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsSpeedPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsSpeedPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.VEHICLE_SPEED_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(
+            VehiclePropertyIds.VEHICLE_SPEED_DISPLAY_UNITS,
+            newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    private class TestUnitsSpeedPreferenceController extends
+            UnitsSpeedPreferenceController {
+
+        public TestUnitsSpeedPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsTemperaturePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsTemperaturePreferenceControllerTest.java
new file mode 100644
index 0000000..a0f99ef
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsTemperaturePreferenceControllerTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsTemperaturePreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS = {UnitsMap.CELSIUS, UnitsMap.FAHRENHEIT};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsTemperaturePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsTemperaturePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(
+            VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS,
+            newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    private class TestUnitsTemperaturePreferenceController extends
+            UnitsTemperaturePreferenceController {
+
+        public TestUnitsTemperaturePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/units/UnitsVolumePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/units/UnitsVolumePreferenceControllerTest.java
new file mode 100644
index 0000000..a888d37
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/units/UnitsVolumePreferenceControllerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2021 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UnitsVolumePreferenceControllerTest {
+    private static final Unit[] AVAILABLE_UNITS = {UnitsMap.LITER, UnitsMap.US_GALLON};
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mPreference;
+    private UnitsVolumePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private ArgumentCaptor<Integer> mCaptor = ArgumentCaptor.forClass(Integer.class);
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private CarUnitsManager mCarUnitsManager;
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mCarUnitsManager.getUnitsSupportedByProperty(mCaptor.capture()))
+                .thenReturn(AVAILABLE_UNITS);
+        when(mCarUnitsManager.getUnitUsedByProperty(anyInt())).thenReturn(null);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+        mPreference = new ListPreference(mContext);
+        mPreferenceController = new TestUnitsVolumePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsPreferenceEntriesAndValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mPreferenceController.getEntriesOfSupportedUnits();
+
+        assertThat(mCaptor.getValue()).isEqualTo(VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS);
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(AVAILABLE_UNITS[0].getId()));
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        Unit newUnit = AVAILABLE_UNITS[1];
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mPreferenceController.handlePreferenceChanged(mPreference,
+                Integer.toString(newUnit.getId()));
+
+        verify(mCarUnitsManager).setUnitUsedByProperty(VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS,
+                newUnit.getId());
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mPreferenceController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = AVAILABLE_UNITS[1];;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mPreferenceController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    private class TestUnitsVolumePreferenceController extends
+            UnitsVolumePreferenceController {
+
+        public TestUnitsVolumePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        CarUnitsManager createCarUnitsManager() {
+            return mCarUnitsManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/AddWifiFragmentTest.java b/tests/unit/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
new file mode 100644
index 0000000..64eb2e3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.withSettings;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class AddWifiFragmentTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private AddWifiFragment mFragment;
+    private BaseCarSettingsTestActivity mActivity;
+    private FragmentManager mFragmentManager;
+    private MockitoSession mSession;
+
+    @Mock
+    private LocalBroadcastManager mMockLocalBroadcastManager;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setUp() throws Throwable {
+        MockitoAnnotations.initMocks(this);
+        mActivity = mActivityTestRule.getActivity();
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        setUpFragment();
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                LocalBroadcastManager.class, withSettings().lenient()).startMocking();
+        ExtendedMockito.when(LocalBroadcastManager.getInstance(any())).thenReturn(
+                mMockLocalBroadcastManager);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    @UiThreadTest
+    public void onCreate_registersReceivers() {
+        mFragment.onCreate(null);
+        ArgumentCaptor<IntentFilter> argumentCaptor = ArgumentCaptor.forClass(
+                IntentFilter.class);
+        verify(mMockLocalBroadcastManager, times(2))
+                .registerReceiver(any(), argumentCaptor.capture());
+
+        List<IntentFilter> capturedIntentFilters = argumentCaptor.getAllValues();
+        assertThat(capturedIntentFilters.get(0).hasAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
+        assertThat(capturedIntentFilters.get(1).hasAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onDestroy_unregistersReceivers() {
+        mFragment.onCreate(null);
+        Mockito.reset(mMockLocalBroadcastManager);
+        mFragment.onDestroy();
+
+        verify(mMockLocalBroadcastManager, times(2))
+                .unregisterReceiver(any());
+    }
+
+    @Test
+    @UiThreadTest
+    public void initialState_buttonDisabled() {
+        mFragment.onCreate(null);
+        mFragment.onStart();
+        assertThat(mFragment.getToolbarMenuItems().get(0).isEnabled()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void receiveNameChangeIntent_emptyName_buttonDisabled() {
+        mFragment.onCreate(null);
+        mFragment.onStart();
+
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "");
+        mFragment.mNameChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mFragment.getToolbarMenuItems().get(0).isEnabled()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void receiveNameChangeIntent_name_buttonEnabled() {
+        mFragment.onCreate(null);
+        mFragment.onStart();
+
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "test_network_name");
+        mFragment.mNameChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mFragment.getToolbarMenuItems().get(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    @UiThreadTest
+    public void receiveSecurityChangeIntent_nameSet_buttonDisabled() {
+        mFragment.onCreate(null);
+        mFragment.onStart();
+        Intent nameIntent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        nameIntent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "test_network_name");
+        mFragment.mNameChangeReceiver.onReceive(mContext, nameIntent);
+
+        Intent securityIntent = new Intent(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        securityIntent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiEntry.SECURITY_PSK);
+        mFragment.mSecurityChangeReceiver.onReceive(mContext, securityIntent);
+
+        assertThat(mFragment.getToolbarMenuItems().get(0).isEnabled()).isFalse();
+    }
+
+    private void setUpFragment() throws Throwable {
+        String addWifiFragmentTag = "add_wifi_fragment";
+        mActivityTestRule.runOnUiThread(() -> {
+            mFragmentManager.beginTransaction()
+                    .replace(R.id.fragment_container, new AddWifiFragment(), addWifiFragmentTag)
+                    .commitNow();
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (AddWifiFragment) mFragmentManager.findFragmentByTag(addWifiFragmentTag);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceControllerTest.java
new file mode 100644
index 0000000..e113c47
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/LimitedWifiEntryListPreferenceControllerTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class LimitedWifiEntryListPreferenceControllerTest {
+    private static final int SIGNAL_LEVEL = 1;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private LimitedWifiEntryListPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Lifecycle mMockLifecycle;
+    @Mock
+    private CarWifiManager mMockCarWifiManager;
+    @Mock
+    private WifiEntry mMockWifiEntry1;
+    @Mock
+    private WifiEntry mMockWifiEntry2;
+    @Mock
+    private WifiEntry mMockWifiEntry3;
+    @Mock
+    private WifiEntry mMockWifiEntry4;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+        mPreferenceController = new TestLimitedWifiEntryListPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry1.getLevel()).thenReturn(SIGNAL_LEVEL);
+        when(mMockWifiEntry2.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry2.getLevel()).thenReturn(SIGNAL_LEVEL);
+        when(mMockWifiEntry3.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry3.getLevel()).thenReturn(SIGNAL_LEVEL);
+        when(mMockWifiEntry4.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry4.getLevel()).thenReturn(SIGNAL_LEVEL);
+    }
+
+    @Test
+    public void connected_oneSavedNetworks_twoWifiEntries() {
+        List<WifiEntry> wifiEntryList = new ArrayList<>(Arrays.asList(mMockWifiEntry1));
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        when(mMockCarWifiManager.getConnectedWifiEntry()).thenReturn(mMockWifiEntry1);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void notConnected_oneSavedNetworks_oneWifiEntry() {
+        List<WifiEntry> wifiEntryList = Collections.singletonList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        when(mMockCarWifiManager.getConnectedWifiEntry()).thenReturn(null);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void connected_moreThanTwoSavedNetworks_maxWifiEntries() {
+        int maxWifiEntryCount = mContext.getResources().getInteger(
+                R.integer.limited_wifi_entry_list_count);
+        List<WifiEntry> wifiEntryList = new ArrayList<>(
+                Arrays.asList(mMockWifiEntry1, mMockWifiEntry2, mMockWifiEntry3));
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        when(mMockCarWifiManager.getConnectedWifiEntry()).thenReturn(mMockWifiEntry1);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(maxWifiEntryCount);
+    }
+
+    @Test
+    public void notConnected_moreThanThreeSavedNetworks_maxWifiEntries() {
+        int maxWifiEntryCount = mContext.getResources().getInteger(
+                R.integer.limited_wifi_entry_list_count);
+        List<WifiEntry> wifiEntryList = new ArrayList<>(
+                Arrays.asList(mMockWifiEntry1, mMockWifiEntry2, mMockWifiEntry3, mMockWifiEntry4));
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        when(mMockCarWifiManager.getConnectedWifiEntry()).thenReturn(null);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(maxWifiEntryCount);
+    }
+
+    private class TestLimitedWifiEntryListPreferenceController
+            extends LimitedWifiEntryListPreferenceController {
+
+        TestLimitedWifiEntryListPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected CarWifiManager getCarWifiManager() {
+            return mMockCarWifiManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java b/tests/unit/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
new file mode 100644
index 0000000..253bf80
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.content.Context;
+import android.widget.Toast;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.testutils.SinglePaneTestActivity;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+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;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class NetworkNameRestrictedPasswordEditTextPreferenceTest {
+    private static final String KEY = "test_key";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private FragmentManager mFragmentManager;
+    private NetworkNameRestrictedPasswordEditTextPreference mPreference;
+    private MockitoSession mSession;
+
+    // Using single pane to inherit initial fragment.
+    @Rule
+    public ActivityTestRule<SinglePaneTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(SinglePaneTestActivity.class);
+
+    @Mock
+    private Toast mMockToast;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+
+        mSession = ExtendedMockito.mockitoSession()
+                .mockStatic(Toast.class, withSettings().lenient())
+                .startMocking();
+        when(Toast.makeText(any(), anyInt(), anyInt())).thenReturn(mMockToast);
+
+        SettingsFragment fragment = (SettingsFragment) mFragmentManager.findFragmentById(
+                R.id.fragment_container);
+
+        mPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
+        mPreference.setKey(KEY);
+        fragment.getPreferenceScreen().addPreference(mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void performClick_noName_toastShown() {
+        mPreference.performClick();
+
+        ExtendedMockito.verify(
+                () -> Toast.makeText(any(),
+                        eq(R.string.wifi_no_network_name),
+                        anyInt()));
+        verify(mMockToast).show();
+    }
+
+    @Test
+    public void performClick_hasName_showsDialog() {
+        ExtendedMockito.spyOn(mPreference);
+        PreferenceManager preferenceManager = mock(PreferenceManager.class);
+        when(mPreference.getPreferenceManager()).thenReturn(preferenceManager);
+        mPreference.setNetworkName("test_name");
+        mPreference.performClick();
+
+        verify(preferenceManager).showDialog(mPreference);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
new file mode 100644
index 0000000..c6dda8b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class NetworkPasswordPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private NetworkNameRestrictedPasswordEditTextPreference mPreference;
+    private NetworkPasswordPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private LocalBroadcastManager mMockLocalBroadcastManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
+        mPreferenceController = new NetworkPasswordPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                LocalBroadcastManager.class, withSettings().lenient()).startMocking();
+        when(LocalBroadcastManager.getInstance(any())).thenReturn(
+                mMockLocalBroadcastManager);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void onCreate_registersReceivers() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        ArgumentCaptor<IntentFilter> argumentCaptor = ArgumentCaptor.forClass(
+                IntentFilter.class);
+        verify(mMockLocalBroadcastManager, times(2))
+                .registerReceiver(any(), argumentCaptor.capture());
+
+        List<IntentFilter> capturedIntentFilters = argumentCaptor.getAllValues();
+        assertThat(capturedIntentFilters.get(0).hasAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
+        assertThat(capturedIntentFilters.get(1).hasAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
+    }
+
+    @Test
+    public void onDestroy_unregistersReceivers() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        Mockito.reset(mMockLocalBroadcastManager);
+        mPreferenceController.onDestroy(mLifecycleOwner);
+
+        verify(mMockLocalBroadcastManager, times(2))
+                .unregisterReceiver(any());
+    }
+
+    @Test
+    public void receiveNameChangeIntent_emptyName_dialogNameRemoved() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "");
+
+        mPreferenceController.mNameChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mPreference.getDialogTitle().toString()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "wifi_password"));
+    }
+
+    @Test
+    public void receiveNameChangeIntent_name_dialogNameSet() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        String networkName = "test_network_name";
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+
+        mPreferenceController.mNameChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mPreference.getDialogTitle().toString()).isEqualTo(networkName);
+    }
+
+    @Test
+    public void receiveSecurityChangeIntent_setUnsecureType_preferenceHidden() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiEntry.SECURITY_NONE);
+
+        mPreferenceController.mSecurityChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void receiveSecurityChangeIntent_setSecureType_preferenceVisible() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiEntry.SECURITY_PSK);
+
+        mPreferenceController.mSecurityChangeReceiver.onReceive(mContext, intent);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiConnected() {
+        WifiManager mockWifiManager = mock(WifiManager.class);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(mockWifiManager);
+        mPreferenceController.onCreate(mLifecycleOwner);
+        mPreferenceController.onStart(mLifecycleOwner);
+        String networkName = "network_name";
+        String password = "password";
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiEntry.SECURITY_PSK);
+        mPreferenceController.mSecurityChangeReceiver.onReceive(mContext, intent);
+
+        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mPreferenceController.mNameChangeReceiver.onReceive(mContext, intent);
+        mPreference.callChangeListener(password);
+
+        ArgumentCaptor<WifiConfiguration> argumentCaptor = ArgumentCaptor.forClass(
+                WifiConfiguration.class);
+        verify(mockWifiManager).connect(argumentCaptor.capture(), any());
+
+        WifiConfiguration config = argumentCaptor.getValue();
+        assertThat(config.SSID).contains(networkName);
+        assertThat(config.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA_PSK);
+        assertThat(config.preSharedKey).contains(password);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
new file mode 100644
index 0000000..caeba9e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.ListPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class NetworkSecurityPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private ListPreference mListPreference;
+    private NetworkSecurityPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private LocalBroadcastManager mMockLocalBroadcastManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mListPreference = new ListPreference(mContext);
+        mPreferenceController = new NetworkSecurityPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mListPreference);
+        mSession = ExtendedMockito.mockitoSession().mockStatic(
+                LocalBroadcastManager.class, withSettings().lenient()).startMocking();
+        when(LocalBroadcastManager.getInstance(any())).thenReturn(
+                mMockLocalBroadcastManager);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void handlePreferenceChanged_unsecureNetwork_summaryUpdated() {
+        String value = Integer.toString(WifiEntry.SECURITY_NONE);
+        mListPreference.callChangeListener(value);
+
+        assertThat(mListPreference.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.wifi_security_none));
+    }
+
+    @Test
+    public void handlePreferenceChanged_pskNetwork_summaryUpdated() {
+        String value = Integer.toString(WifiEntry.SECURITY_PSK);
+        mListPreference.callChangeListener(value);
+
+        assertThat(mListPreference.getSummary().toString()).isEqualTo(
+                mContext.getString(R.string.wifi_security_psk_generic));
+    }
+
+    @Test
+    public void handlePreferenceChanged_broadcastIsSent() {
+        String value = Integer.toString(WifiEntry.SECURITY_PSK);
+        mListPreference.callChangeListener(value);
+
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(
+                Intent.class);
+        verify(mMockLocalBroadcastManager).sendBroadcastSync(argumentCaptor.capture());
+        List<Intent> intents = argumentCaptor.getAllValues();
+        assertThat(intents).hasSize(1);
+        assertThat(intents.get(0).getAction()).isEqualTo(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        assertThat(intents.get(0).getIntExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiEntry.SECURITY_NONE)).isEqualTo(Integer.parseInt(value));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceControllerTest.java
new file mode 100644
index 0000000..b15d60e
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiEntryGroupPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiEntryGroupPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private LogicalPreferenceGroup mPreference;
+    private CarUxRestrictions mCarUxRestrictions;
+    private WifiEntryGroupPreferenceController mController;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private PackageManager mPackageManager;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new LogicalPreferenceGroup(mContext);
+        mController = new WifiEntryGroupPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+    }
+
+    @Test
+    public void getAvailabilityStatus_wifiAvailable_available() {
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)).thenReturn(true);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_wifiNotAvailable_unsupportedOnDevice() {
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)).thenReturn(false);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+        mController.onCreate(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiEntryListPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiEntryListPreferenceControllerTest.java
new file mode 100644
index 0000000..7401655
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiEntryListPreferenceControllerTest.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.settings.wifi.details.WifiDetailsFragment;
+import com.android.car.ui.preference.CarUiTwoActionIconPreference;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiEntryListPreferenceControllerTest {
+    private static final int SIGNAL_LEVEL = 1;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private PreferenceGroup mPreferenceGroup;
+    private WifiEntryListPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Lifecycle mMockLifecycle;
+    @Mock
+    private CarWifiManager mMockCarWifiManager;
+    @Mock
+    private WifiManager mMockWifiManager;
+    @Mock
+    private WifiEntry mMockWifiEntry1;
+    @Mock
+    private WifiEntry mMockWifiEntry2;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+        mPreferenceController = new TestWifiEntryListPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreferenceGroup);
+
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry1.getLevel()).thenReturn(SIGNAL_LEVEL);
+        when(mMockWifiEntry2.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry2.getLevel()).thenReturn(SIGNAL_LEVEL);
+    }
+
+    @Test
+    public void refreshUi_emptyList_notVisible() {
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(new ArrayList<>());
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(false);
+    }
+
+    @Test
+    public void refreshUi_notEmpty_visible() {
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(true);
+    }
+
+    @Test
+    public void refreshUi_notEmpty_listCount() {
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(wifiEntryList.size());
+    }
+
+    @Test
+    public void refreshUi_notSavedWifiEntry_noForgetButton() {
+        when(mMockWifiEntry1.isSaved()).thenReturn(false);
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        CarUiTwoActionIconPreference preference =
+                (CarUiTwoActionIconPreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.isSecondaryActionVisible()).isFalse();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_switchToSavedWifiEntriesOnly() {
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1, mMockWifiEntry2);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        List<WifiEntry> savedWifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getSavedWifiEntries()).thenReturn(savedWifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(wifiEntryList.size());
+
+        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(
+                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
+        mPreferenceController.onUxRestrictionsChanged(noSetupRestrictions);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(savedWifiEntryList.size());
+    }
+
+    @Test
+    public void performClick_noSecurityNotConnectedWifiEntry_connect() {
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
+        when(mMockWifiEntry1.isSaved()).thenReturn(false);
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mMockWifiEntry1).connect(any());
+    }
+
+    @Test
+    public void performClick_shouldEditBeforeConnect_launchDialog() {
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_PSK);
+        when(mMockWifiEntry1.isSaved()).thenReturn(false);
+        when(mMockWifiEntry1.shouldEditBeforeConnect()).thenReturn(true);
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mFragmentController).showDialog(any(WifiPasswordDialog.class), any());
+    }
+
+    @Test
+    @UiThreadTest
+    public void performClick_activeWifiEntry_showDetailsFragment() {
+        when(mMockWifiEntry1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        when(mMockCarWifiManager.getConnectedWifiEntry()).thenReturn(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(new ArrayList<>());
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mFragmentController).launchFragment(any(WifiDetailsFragment.class));
+    }
+
+    @Test
+    public void performClick_savedWifiEntry_connect() {
+        when(mMockWifiEntry1.isSaved()).thenReturn(true);
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mMockWifiEntry1).connect(any());
+    }
+
+    @Test
+    public void performButtonClick_savedWifiEntry_forgetsNetwork() {
+        int netId = 1;
+
+        WifiConfiguration config = mock(WifiConfiguration.class);
+        WifiConfiguration.NetworkSelectionStatus status = mock(
+                WifiConfiguration.NetworkSelectionStatus.class);
+        config.networkId = netId;
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_PSK);
+        when(mMockWifiEntry1.isSaved()).thenReturn(true);
+        when(mMockWifiEntry1.getWifiConfiguration()).thenReturn(config);
+        when(config.getNetworkSelectionStatus()).thenReturn(status);
+        when(status.getNetworkSelectionStatus()).thenReturn(NETWORK_SELECTION_ENABLED);
+
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        CarUiTwoActionIconPreference preference =
+                (CarUiTwoActionIconPreference) mPreferenceGroup.getPreference(0);
+        preference.performSecondaryActionClick();
+        verify(mMockWifiEntry1).forget(any());
+    }
+
+    @Test
+    public void callChangeListener_newSecureWifiEntry_wifiConnected() {
+        String ssid = "test_ssid";
+        String password = "test_password";
+        when(mMockWifiEntry1.getSsid()).thenReturn(ssid);
+        when(mMockWifiEntry1.getSecurity()).thenReturn(WifiEntry.SECURITY_PSK);
+        when(mMockWifiEntry1.isSaved()).thenReturn(false);
+        List<WifiEntry> wifiEntryList = Arrays.asList(mMockWifiEntry1);
+        when(mMockCarWifiManager.getAllWifiEntries()).thenReturn(wifiEntryList);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        WifiPasswordDialog dialog = mock(WifiPasswordDialog.class);
+        WifiConfiguration config = WifiUtil.getWifiConfig(mMockWifiEntry1, password);
+        when(dialog.getConfig()).thenReturn(config);
+        when(dialog.getWifiEntry()).thenReturn(mMockWifiEntry1);
+        mPreferenceController.mDialogListener.onSubmit(dialog);
+
+        verify(mMockWifiManager).connect(eq(config), any());
+    }
+
+    private class TestWifiEntryListPreferenceController extends WifiEntryListPreferenceController {
+
+        TestWifiEntryListPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected CarWifiManager getCarWifiManager() {
+            return mMockCarWifiManager;
+        }
+
+        @Override
+        WifiManager getWifiManager() {
+            return mMockWifiManager;
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiPasswordDialogTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiPasswordDialogTest.java
new file mode 100644
index 0000000..aee9f6b
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiPasswordDialogTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+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.app.AlertDialog;
+import android.content.DialogInterface;
+import android.text.InputType;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseCarSettingsTestActivity;
+import com.android.wifitrackerlib.WifiEntry;
+
+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;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiPasswordDialogTest {
+
+    private static final String TEST_SSID = "test_ssid";
+
+    private WifiPasswordDialog mFragment;
+    private FragmentManager mFragmentManager;
+
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiPasswordDialog.WifiDialogListener mMockListener;
+
+    @Rule
+    public ActivityTestRule<BaseCarSettingsTestActivity> mActivityTestRule =
+            new ActivityTestRule<>(BaseCarSettingsTestActivity.class);
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        mFragmentManager = mActivityTestRule.getActivity().getSupportFragmentManager();
+        when(mMockWifiEntry.getSsid()).thenReturn(TEST_SSID);
+    }
+
+    @Test
+    public void onDialogCreated_titleSet() throws Throwable {
+        setUpDialog();
+        View titleView = mFragment.getDialog().findViewById(com.android.internal.R.id.alertTitle);
+        assertThat(titleView).isNotNull();
+        assertThat(((TextView) titleView).getText().toString()).isEqualTo(TEST_SSID);
+    }
+
+    @Test
+    public void onDialogCreated_editTextInputTypeSet() throws Throwable {
+        setUpDialog();
+        EditText editText = mFragment.getDialog().findViewById(android.R.id.edit);
+        assertThat(editText.getInputType()).isEqualTo(
+                InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+    }
+
+    @Test
+    public void onCheckboxChanged_editTextInputTypeSet() throws Throwable {
+        setUpDialog();
+        EditText editText = mFragment.getDialog().findViewById(android.R.id.edit);
+        CheckBox cb = mFragment.getDialog().findViewById(R.id.checkbox);
+        mActivityTestRule.runOnUiThread(() -> cb.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        assertThat(editText.getInputType()).isEqualTo(
+                InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+        mActivityTestRule.runOnUiThread(() -> cb.performClick());
+        assertThat(editText.getInputType()).isEqualTo(
+                InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+    }
+
+    @Test
+    public void onConfirm_listenerTriggered() throws Throwable {
+        setUpDialog();
+        Button confirmButton = ((AlertDialog) mFragment.getDialog()).getButton(
+                DialogInterface.BUTTON_POSITIVE);
+        mActivityTestRule.runOnUiThread(() -> confirmButton.performClick());
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        verify(mMockListener).onSubmit(any());
+    }
+
+    private void setUpDialog() throws Throwable {
+        mActivityTestRule.runOnUiThread(
+                () -> new WifiPasswordDialog(mMockWifiEntry, mMockListener).show(mFragmentManager,
+                        WifiPasswordDialog.TAG));
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        mFragment = (WifiPasswordDialog) mFragmentManager.findFragmentByTag(
+                WifiPasswordDialog.TAG);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceControllerTest.java
new file mode 100644
index 0000000..ad95403
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiStateSwitchPreferenceControllerTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ClickableWhileDisabledSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiStateSwitchPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private SwitchPreference mSwitchPreference;
+    private WifiStateSwitchPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private CarWifiManager mCarWifiManager;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Lifecycle mMockLifecycle;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSwitchPreference = new ClickableWhileDisabledSwitchPreference(mContext);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+        mPreferenceController = new WifiStateSwitchPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mCarWifiManager = new CarWifiManager(mContext, mMockLifecycle);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void onWifiStateChanged_disabled_setsSwitchUnchecked() {
+        initializePreference(/* checked= */ true, /* enabled= */ true);
+        mPreferenceController.onWifiStateChanged(WifiManager.WIFI_STATE_DISABLED);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onWifiStateChanged_enabled_setsSwitchChecked() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+        mPreferenceController.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLED);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onWifiStateChanged_enabling_setsSwitchChecked() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+        mPreferenceController.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLING);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onPolicyChanged_enabled_setsSwitchEnabled() {
+        initializePreference(/* checked= */ false, /* enabled= */ false);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ true);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onPolicyChanged_disabled_setsSwitchDisabled() {
+        initializePreference(/* checked= */ false, /* enabled= */ true);
+
+        mPreferenceController.mPowerPolicyListener.getPolicyChangeHandler()
+                .handlePolicyChange(/* isOn= */ false);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    private void initializePreference(boolean checked, boolean enabled) {
+        mCarWifiManager.setWifiEnabled(checked);
+        mSwitchPreference.setChecked(checked);
+        mSwitchPreference.setEnabled(enabled);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java
new file mode 100644
index 0000000..5d271c4
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiTetherPreferenceControllerTest.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.TetheringManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.car.ui.preference.CarUiTwoActionSwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.Executor;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiTetherPreferenceControllerTest {
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private CarUiTwoActionSwitchPreference mPreference;
+    private WifiTetherPreferenceController mController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private Lifecycle mMockLifecycle;
+    @Mock
+    private TetheringManager mTetheringManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        when(mContext.getSystemService(TetheringManager.class)).thenReturn(mTetheringManager);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+
+        mPreference = new CarUiTwoActionSwitchPreference(mContext);
+        mController = new WifiTetherPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mController, mPreference);
+    }
+
+    @Test
+    public void onStart_isAvailableForViewing() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                AVAILABLE_FOR_VIEWING);
+    }
+
+    @Test
+    public void onStart_registersTetheringEventCallback() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+
+        verify(mTetheringManager).registerTetheringEventCallback(
+                any(Executor.class), any(TetheringManager.TetheringEventCallback.class));
+    }
+
+    @Test
+    public void onStop_unregistersTetheringEventCallback() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+        mController.onStop(mLifecycleOwner);
+
+        verify(mTetheringManager).unregisterTetheringEventCallback(
+                any(TetheringManager.TetheringEventCallback.class));
+    }
+
+    @Test
+    public void onTetheringSupported_false_isUnsupportedOnDevice() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+
+        ArgumentCaptor<TetheringManager.TetheringEventCallback> captor =
+                ArgumentCaptor.forClass(TetheringManager.TetheringEventCallback.class);
+        verify(mTetheringManager).registerTetheringEventCallback(
+                any(Executor.class), captor.capture());
+
+        captor.getValue().onTetheringSupported(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void onTetheringSupported_true_isAvailable() {
+        mController.onCreate(mLifecycleOwner);
+        mController.onStart(mLifecycleOwner);
+
+        ArgumentCaptor<TetheringManager.TetheringEventCallback> captor =
+                ArgumentCaptor.forClass(TetheringManager.TetheringEventCallback.class);
+        verify(mTetheringManager).registerTetheringEventCallback(
+                any(Executor.class), captor.capture());
+        captor.getValue().onTetheringSupported(false);
+
+        captor.getValue().onTetheringSupported(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/WifiTetheringHandlerTest.java b/tests/unit/src/com/android/car/settings/wifi/WifiTetheringHandlerTest.java
new file mode 100644
index 0000000..2616aab
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/WifiTetheringHandlerTest.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.TetheringManager;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ColoredSwitchPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.Executor;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiTetheringHandlerTest {
+    private LifecycleOwner mLifecycleOwner;
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private SwitchPreference mSwitchPreference;
+    private TestWifiTetheringPreferenceController mPreferenceController;
+    private WifiTetheringHandler mWifiTetheringHandler;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private CarWifiManager mCarWifiManager;
+    @Mock
+    private TetheringManager mTetheringManager;
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private androidx.lifecycle.Lifecycle mMockLifecycle;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSwitchPreference = new ColoredSwitchPreference(mContext);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+        mPreferenceController = new TestWifiTetheringPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mWifiTetheringHandler = new WifiTetheringHandler(mContext, mMockLifecycle,
+                mPreferenceController);
+        mWifiTetheringHandler.setCarWifiManager(mCarWifiManager);
+        mWifiTetheringHandler.setTetheringManager(mTetheringManager);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+    }
+
+    @Test
+    public void onCreate_tetherStateOn_shouldReturnSwitchStateOn() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mWifiTetheringHandler.isWifiTetheringEnabled()).isTrue();
+    }
+
+    @Test
+    public void onCreate_tetherStateOff_shouldReturnSwitchStateOff() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mWifiTetheringHandler.isWifiTetheringEnabled()).isFalse();
+    }
+
+    @Test
+    public void onSwitchOn_shouldAttemptTetherOn() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.updateWifiTetheringState(true);
+
+        verify(mTetheringManager).startTethering(
+                eq(ConnectivityManager.TETHERING_WIFI),
+                any(Executor.class), any(TetheringManager.StartTetheringCallback.class)
+        );
+    }
+
+    @Test
+    public void onSwitchOff_shouldAttemptTetherOff() {
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.updateWifiTetheringState(false);
+
+        verify(mTetheringManager).stopTethering(ConnectivityManager.TETHERING_WIFI);
+    }
+
+    @Test
+    public void onTetherEnabling_shouldReturnSwitchStateDisabled() {
+        mSwitchPreference.setEnabled(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_ENABLING);
+
+        assertThat(mSwitchPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onTetherEnabled_shouldReturnSwitchStateEnabledAndOn() {
+        mSwitchPreference.setEnabled(false);
+        mSwitchPreference.setChecked(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_ENABLED);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onTetherDisabled_shouldReturnSwitchStateEnabledAndOff() {
+        mSwitchPreference.setEnabled(false);
+        mSwitchPreference.setChecked(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_DISABLED);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onEnableTetherFailed_shouldReturnSwitchStateEnabledAndOff() {
+        mSwitchPreference.setEnabled(false);
+        mSwitchPreference.setChecked(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mWifiTetheringHandler.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_ENABLING);
+        mWifiTetheringHandler.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_FAILED);
+
+        assertThat(mSwitchPreference.isEnabled()).isTrue();
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    private class TestWifiTetheringPreferenceController
+            extends PreferenceController<ColoredSwitchPreference>
+            implements WifiTetheringHandler.WifiTetheringAvailabilityListener{
+
+        TestWifiTetheringPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<ColoredSwitchPreference> getPreferenceType() {
+            return ColoredSwitchPreference.class;
+        }
+
+        @Override
+        public void onWifiTetheringAvailable() {
+            getPreference().setChecked(true);
+        }
+
+        @Override
+        public void onWifiTetheringUnavailable() {
+            getPreference().setChecked(false);
+        }
+
+        @Override
+        public void enablePreference() {
+            getPreference().setEnabled(true);
+        }
+
+        @Override
+        public void disablePreference() {
+            getPreference().setEnabled(false);
+        }
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceControllerTest.java
new file mode 100644
index 0000000..8faf889
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiDetailsActionButtonsPreferenceControllerTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2020 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.car.settings.wifi.details;
+
+import static com.android.car.settings.common.ActionButtonsPreference.ActionButtons;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.Network;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ActionButtonsPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiDetailsActionButtonsPreferenceControllerTest {
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private ActionButtonsPreference mActionButtonsPreference;
+    private WifiDetailsActionButtonsPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private androidx.lifecycle.Lifecycle mMockLifecycle;
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private Network mMockNetwork;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+
+    @Before
+    public void setUp() {
+        mLifecycleOwner = new TestLifecycleOwner();
+        MockitoAnnotations.initMocks(this);
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mActionButtonsPreference = new ActionButtonsPreference(mContext);
+        when(mFragmentController.getSettingsLifecycle()).thenReturn(mMockLifecycle);
+        mPreferenceController = new WifiDetailsActionButtonsPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.init(mMockWifiEntry, mMockWifiInfoProvider);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController,
+                mActionButtonsPreference);
+
+        when(mMockWifiInfoProvider.getNetwork()).thenReturn(mMockNetwork);
+        when(mMockWifiInfoProvider.getNetworkInfo()).thenReturn(mMockNetworkInfo);
+        when(mMockWifiInfoProvider.getWifiInfo()).thenReturn(mMockWifiInfo);
+    }
+
+    @Test
+    public void updateState_connectNotNeeded_disconnectButtonShown() {
+        when(mMockWifiEntry.isSaved()).thenReturn(true);
+        when(mMockWifiEntry.canDisconnect()).thenReturn(true);
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON2).isVisible()).isTrue();
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON2).getText().toString())
+                .isEqualTo(ResourceTestUtils.getString(mContext, "disconnect"));
+    }
+
+    @Test
+    public void updateState_needConnect_connectButtonShown() {
+        when(mMockWifiEntry.isSaved()).thenReturn(true);
+        when(mMockWifiEntry.canConnect()).thenReturn(true);
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON2).isVisible()).isTrue();
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON2).getText().toString())
+                .isEqualTo(ResourceTestUtils.getString(mContext, "wifi_setup_connect"));
+    }
+
+    @Test
+    public void updateState_canForget_forgetButtonShown() {
+        when(mMockWifiEntry.isSaved()).thenReturn(true);
+        when(mMockWifiEntry.canForget()).thenReturn(true);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON1).isVisible()).isTrue();
+    }
+
+    @Test
+    public void updateState_canNotForget_forgetButtonHidden() {
+        when(mMockWifiEntry.isSaved()).thenReturn(true);
+        when(mMockWifiEntry.canForget()).thenReturn(false);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mActionButtonsPreference.getButton(ActionButtons.BUTTON1).isVisible()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
new file mode 100644
index 0000000..c1841a3
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiFrequencyPreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private WifiDetailsPreference mPreference;
+    private WifiFrequencyPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new WifiDetailsPreference(mContext);
+        mPreferenceController = new WifiFrequencyPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.init(mMockWifiEntry, mMockWifiInfoProvider);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_shouldHaveDetailTextSet() {
+        WifiEntry.ConnectedInfo connectedInfo = new WifiEntry.ConnectedInfo();
+        connectedInfo.frequencyMhz = WifiEntry.FREQUENCY_2_4_GHZ;
+        when(mMockWifiEntry.getConnectedInfo()).thenReturn(connectedInfo);
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getDetailText()).isEqualTo(
+                ResourceTestUtils.getString(mContext, "wifi_band_24ghz"));
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_preferenceNotVisible() {
+        when(mMockWifiEntry.getConnectedInfo()).thenReturn(null);
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
new file mode 100644
index 0000000..08c631a
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.IpPrefix;
+import android.net.LinkProperties;
+import android.net.RouteInfo;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.net.InetAddress;
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiGatewayPreferenceControllerTest {
+    private static final String GATE_WAY = "gateway";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private WifiDetailsPreference mPreference;
+    private WifiGatewayPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private LinkProperties mMockLinkProperties;
+    @Mock
+    private RouteInfo mMockRouteInfo;
+    @Mock
+    private InetAddress mMockInetAddress;
+    @Mock
+    private IpPrefix mMockIpPrefix;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new WifiDetailsPreference(mContext);
+        mPreferenceController = new WifiGatewayPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.init(mMockWifiEntry, mMockWifiInfoProvider);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+        when(mMockWifiInfoProvider.getLinkProperties()).thenReturn(mMockLinkProperties);
+    }
+
+    @Test
+    public void onCreate_shouldHaveDetailTextSet() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        when(mMockLinkProperties.getRoutes()).thenReturn(Arrays.asList(mMockRouteInfo));
+        when(mMockRouteInfo.isDefaultRoute()).thenReturn(true);
+        try {
+            when(mMockRouteInfo.getDestination()).thenReturn(mMockIpPrefix);
+            when(mMockIpPrefix.getAddress()).thenReturn(
+                    InetAddress.getByAddress(new byte[]{4, 3, 2, 1}));
+        } catch (Exception e) { }
+        when(mMockRouteInfo.hasGateway()).thenReturn(true);
+        when(mMockRouteInfo.getGateway()).thenReturn(mMockInetAddress);
+        when(mMockInetAddress.getHostAddress()).thenReturn(GATE_WAY);
+
+        mPreferenceController.onCreate(mLifecycleOwner);
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getDetailText()).isEqualTo(GATE_WAY);
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_preferenceNotVisible() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java
new file mode 100644
index 0000000..66583fc
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiInfoProviderTest.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkRequest;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Handler;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiInfoProviderTest {
+    private static final int LEVEL = 1;
+    private static final int RSSI = -55;
+    private static final int LINK_SPEED = 123;
+    private static final String MAC_ADDRESS = WifiInfo.DEFAULT_MAC_ADDRESS;
+    private static final String SECURITY = "None";
+
+    private Context mContext = spy(ApplicationProvider.getApplicationContext());
+    private LifecycleOwner mLifecycleOwner;
+    private WifiInfoProvider mWifiInfoProvider;
+
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private ConnectivityManager mMockConnectivityManager;
+    @Mock
+    private Network mMockNetwork;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private WifiConfiguration mMockWifiConfig;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+    @Mock
+    private LinkProperties mMockLinkProperties;
+    @Mock
+    private LinkProperties mMockChangedLinkProperties;
+    @Mock
+    private NetworkCapabilities mMockNetworkCapabilities;
+    @Mock
+    private NetworkCapabilities mMockChangedNetworkCapabilities;
+    @Mock
+    private WifiManager mMockWifiManager;
+    @Mock
+    private WifiInfoProvider.Listener mMockListener;
+
+    @Captor
+    private ArgumentCaptor<ConnectivityManager.NetworkCallback> mCallbackCaptor;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        when(mContext.getSystemService(ConnectivityManager.class))
+                .thenReturn(mMockConnectivityManager);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(mMockWifiManager);
+        when(mMockWifiEntry.getWifiConfiguration()).thenReturn(mMockWifiConfig);
+        when(mMockWifiEntry.getLevel()).thenReturn(LEVEL);
+        when(mMockWifiEntry.getSecurityString(false)).thenReturn(SECURITY);
+        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
+                .thenReturn(mMockNetworkInfo);
+        when(mMockConnectivityManager.getLinkProperties(any(Network.class)))
+                .thenReturn(mMockLinkProperties);
+        when(mMockConnectivityManager.getNetworkCapabilities(any(Network.class)))
+                .thenReturn(mMockNetworkCapabilities);
+        doNothing().when(mMockConnectivityManager).registerNetworkCallback(
+                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
+        when(mMockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED);
+        when(mMockWifiInfo.getRssi()).thenReturn(RSSI);
+        when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
+        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
+
+        when(mMockWifiManager.getCurrentNetwork()).thenReturn(mMockNetwork);
+
+        mWifiInfoProvider = new WifiInfoProvider(mContext, mMockWifiEntry);
+        mWifiInfoProvider.addListener(mMockListener);
+    }
+
+    @Test
+    public void onStart_allFieldsInitialized() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+
+        assertThat(mWifiInfoProvider.getNetworkInfo()).isNotNull();
+        assertThat(mWifiInfoProvider.getWifiInfo()).isNotNull();
+        assertThat(mWifiInfoProvider.getNetwork()).isNotNull();
+        assertThat(mWifiInfoProvider.getNetworkCapabilities()).isNotNull();
+        assertThat(mWifiInfoProvider.getNetworkConfiguration()).isNotNull();
+        assertThat(mWifiInfoProvider.getLinkProperties()).isNotNull();
+    }
+
+    @Test
+    public void onStart_listenerCallback() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+        verify(mMockListener).onWifiEntryUpdated();
+    }
+
+    @Test
+    public void onStart_getsNetwork() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+        assertThat(mWifiInfoProvider.getNetwork()).isEqualTo(mMockNetwork);
+    }
+
+    @Test
+    public void networkCallback_shouldBeRegisteredOnStart() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+
+        verify(mMockConnectivityManager).registerNetworkCallback(
+                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
+    }
+
+    @Test
+    public void networkCallback_shouldBeUnregisteredOnStop() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+        mWifiInfoProvider.onStop(mLifecycleOwner);
+
+        verify(mMockConnectivityManager)
+                .unregisterNetworkCallback(mCallbackCaptor.getValue());
+    }
+
+    @Test
+    public void onWifiEntryUpdated_listenerCallback() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+        Mockito.reset(mMockListener);
+        mWifiInfoProvider.onUpdated();
+
+        verify(mMockListener).onWifiEntryUpdated();
+    }
+
+    @Test
+    public void onLost_listenerCallback() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+
+        mCallbackCaptor.getValue().onLost(mMockNetwork);
+
+        verify(mMockListener).onLost(any(Network.class));
+    }
+
+    @Test
+    public void onLinkPropertiesChanged_listenerCallback() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+
+        mCallbackCaptor.getValue().onLinkPropertiesChanged(
+                mMockNetwork, mMockChangedLinkProperties);
+
+        verify(mMockListener).onLinkPropertiesChanged(
+                any(Network.class), eq(mMockChangedLinkProperties));
+    }
+
+    @Test
+    public void onCapabilitiesChanged_listenerCallback() {
+        mWifiInfoProvider.onStart(mLifecycleOwner);
+
+        mCallbackCaptor.getValue().onCapabilitiesChanged(
+                mMockNetwork, mMockChangedNetworkCapabilities);
+
+        verify(mMockListener).onCapabilitiesChanged(
+                any(Network.class), eq(mMockChangedNetworkCapabilities));
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..8ecdcdb
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiMacAddressPreferenceControllerTest {
+    private static final String MAC_ADDRESS = "mac_address";
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private WifiDetailsPreference mPreference;
+    private WifiMacAddressPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new WifiDetailsPreference(mContext);
+        mPreferenceController = new WifiMacAddressPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.init(mMockWifiEntry, mMockWifiInfoProvider);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_shouldHaveDetailTextSet() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        when(mMockWifiEntry.getMacAddress()).thenReturn(MAC_ADDRESS);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getDetailText()).isEqualTo(MAC_ADDRESS);
+    }
+
+    @Test
+    public void onCreate_isNotActive_preferenceNotVisible() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        when(mMockWifiEntry.getMacAddress()).thenReturn(null);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
new file mode 100644
index 0000000..e0ab687
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiSignalStrengthPreferenceControllerTest {
+    private static final int LEVEL = 1;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private WifiDetailsPreference mPreference;
+    private WifiSignalStrengthPreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mPreference = new WifiDetailsPreference(mContext);
+        mPreferenceController = new WifiSignalStrengthPreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.init(mMockWifiEntry, mMockWifiInfoProvider);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mPreference);
+    }
+
+    @Test
+    public void onCreate_shouldHaveDetailTextSet() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
+        String expectedStrength =
+                mContext.getResources().getStringArray(R.array.wifi_signals)[LEVEL];
+        when(mMockWifiEntry.getLevel()).thenReturn(LEVEL);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isTrue();
+        assertThat(mPreference.getDetailText()).isEqualTo(expectedStrength);
+    }
+
+    @Test
+    public void onCreate_isNotActive_preferenceNotVisible() {
+        when(mMockWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_DISCONNECTED);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mPreference.isVisible()).isFalse();
+        assertThat(mPreference.getDetailText()).isNull();
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..dee7f10
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.preferences;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class CellularFallbackTogglePreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private SwitchPreference mSwitchPreference;
+    private CellularFallbackTogglePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+
+    @Mock
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mSwitchPreference = new SwitchPreference(mContext);
+        mPreferenceController = new CellularFallbackTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+        mPreferenceController.onCreate(mLifecycleOwner);
+    }
+
+    @Test
+    public void refreshUi_unchecked() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
+        mSwitchPreference.setChecked(true);
+
+        mPreferenceController.refreshUi();
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_checked() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
+        mSwitchPreference.setChecked(false);
+
+        mPreferenceController.refreshUi();
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_toggleFalse_setsNull() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
+
+        mSwitchPreference.callChangeListener(false);
+        assertThat(Settings.Global.getString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isNull();
+    }
+
+    @Test
+    public void handlePreferenceChanged_toggleTrue_setsEnabled() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
+
+        mSwitchPreference.callChangeListener(true);
+        assertThat(Settings.Global.getString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isEqualTo("1");
+    }
+}
diff --git a/tests/unit/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java b/tests/unit/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..9673a00
--- /dev/null
+++ b/tests/unit/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2021 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.car.settings.wifi.preferences;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.location.LocationManager;
+import android.net.wifi.WifiManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.SwitchPreference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.settings.common.ColoredSwitchPreference;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestUtil;
+import com.android.car.settings.location.LocationSettingsFragment;
+import com.android.car.settings.testutils.ResourceTestUtils;
+import com.android.car.settings.testutils.TestLifecycleOwner;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+@RunWith(AndroidJUnit4.class)
+public class WifiWakeupTogglePreferenceControllerTest {
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private LifecycleOwner mLifecycleOwner;
+    private SwitchPreference mSwitchPreference;
+    private WifiWakeupTogglePreferenceController mPreferenceController;
+    private CarUxRestrictions mCarUxRestrictions;
+    private LocationManager mLocationManager;
+    private UserHandle mUserHandle;
+    private MockitoSession mSession;
+
+    @Mock
+    private FragmentController mFragmentController;
+    @Mock
+    private WifiManager mWifiManager;
+    @Mock
+    private Toast mMockToast;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mLifecycleOwner = new TestLifecycleOwner();
+
+        mCarUxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+        mLocationManager = mContext.getSystemService(LocationManager.class);
+        mUserHandle = UserHandle.of(UserHandle.myUserId());
+
+        mSwitchPreference = new ColoredSwitchPreference(mContext);
+        mPreferenceController = new WifiWakeupTogglePreferenceController(mContext,
+                /* preferenceKey= */ "key", mFragmentController, mCarUxRestrictions);
+        mPreferenceController.mWifiManager = mWifiManager;
+        PreferenceControllerTestUtil.assignPreference(mPreferenceController, mSwitchPreference);
+
+        mSession = ExtendedMockito.mockitoSession().mockStatic(Toast.class,
+                withSettings().lenient()).startMocking();
+    }
+
+    @After
+    public void tearDown() {
+        if (mSession != null) {
+            mSession.finishMocking();
+        }
+    }
+
+    @Test
+    @UiThreadTest
+    public void handlePreferenceClicked_locationDisabled_launchFragment() {
+        setLocationEnabled(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mSwitchPreference.performClick();
+
+        verify(mFragmentController).launchFragment(any(LocationSettingsFragment.class));
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiWakeupEnabled_disablesWifiWakeup() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mSwitchPreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 1))
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiScanningDisabled_showsDialog() {
+        setLocationEnabled(true);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mSwitchPreference.performClick();
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiScanningEnabled_wifiWakeupDisabled_enablesWifiWakeup() {
+        setLocationEnabled(true);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mSwitchPreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 0))
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void onCreate_wifiWakeupEnabled_wifiScanningEnabled_locationEnabled_isChecked() {
+        setLocationEnabled(true);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mSwitchPreference.setChecked(false);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onCreate_wifiWakeupDisabled_wifiScanningEnabled_locationEnabled_isNotChecked() {
+        setLocationEnabled(true);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mSwitchPreference.setChecked(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onCreate_wifiWakeupEnabled_wifiScanningDisabled_locationEnabled_isNotChecked() {
+        setLocationEnabled(true);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mSwitchPreference.setChecked(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onCreate_wifiWakeupEnabled_wifiScanningEnabled_locationDisabled_isNotChecked() {
+        setLocationEnabled(false);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mSwitchPreference.setChecked(true);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onConfirmWifiScanning_setsWifiScanningOn() {
+        setLocationEnabled(true);
+        ExtendedMockito.when(Toast.makeText(any(), anyString(), anyInt())).thenReturn(mMockToast);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.mConfirmListener.onConfirm(/* arguments= */ null);
+
+        verify(mWifiManager).setScanAlwaysAvailable(true);
+    }
+
+    @Test
+    @UiThreadTest
+    public void onConfirmWifiScanning_showsToast() {
+        setLocationEnabled(true);
+        ExtendedMockito.when(Toast.makeText(any(), eq(ResourceTestUtils.getString(mContext,
+                "wifi_settings_scanning_required_enabled")), anyInt())).thenReturn(mMockToast);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.mConfirmListener.onConfirm(/* arguments= */ null);
+
+        verify(mMockToast).show();
+    }
+
+    @Test
+    @UiThreadTest
+    public void onConfirmWifiScanning_enablesWifiWakeup() {
+        setLocationEnabled(true);
+        ExtendedMockito.when(Toast.makeText(any(), anyString(), anyInt())).thenReturn(mMockToast);
+        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mPreferenceController.onCreate(mLifecycleOwner);
+
+        mPreferenceController.mConfirmListener.onConfirm(/* arguments= */ null);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 0)).isEqualTo(1);
+    }
+
+    private void setLocationEnabled(boolean enabled) {
+        mLocationManager.setLocationEnabledForUser(enabled, mUserHandle);
+    }
+}
diff --git a/tools/generate-overlayable.sh b/tools/generate-overlayable.sh
new file mode 100755
index 0000000..4621689
--- /dev/null
+++ b/tools/generate-overlayable.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#  Copyright (C) 2021 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.
+# Run this script to regenerate the overlayable.xml file.
+if [[ -z "$ANDROID_BUILD_TOP" ]]; then
+  echo 'ANDROID_BUILD_TOP environment variable is empty; did you forget to run `lunch`?'
+  exit 1
+fi
+PROJECT_TOP=$ANDROID_BUILD_TOP/packages/apps/Car/Settings
+python3 $ANDROID_BUILD_TOP/packages/apps/Car/tests/tools/rro/generate-overlayable.py \
+    -n CarSettings \
+    -r $PROJECT_TOP/res \
+    -e $PROJECT_TOP/res/values/overlayable.xml $PROJECT_TOP/res/values/preference_keys.xml $PROJECT_TOP/res/values/preference_screen_keys.xml \
+    -o $PROJECT_TOP/res/values/overlayable.xml